Bestaat er een manier om een gehele tekening te verschalen waarbij je een verschillende schaalfactor opgeeft voor de X én de Y richting?
Daarboven dient - vanwege de preciesie- de schaalfactor bepaald te worden mits een 'referentielengte' en een 'nieuwe' lengte.
groeten,
Manu
Is dit niet te doen via een 'insert'?
verschillend verschalen kan door er een block van te maken
en deze te inserten met een verschillende x,y (en eventueel z)
daarna kan je het block opblazen en je hebt het in twee richtingen aangepast.
Invoer is wel nummeriek dus je zal de verschaling eerst moeten meten
Bart en Julien, die methode had ik reeds geprobeerd, doch nét die nummerieke schaalbepaling speelt me parten... die kan je wel uitrekenen maar die zal
- vanwege de afrondingsfactor- nooit écht precies zijn. Ik zoek naar een meer geavanceerde 'scale'-bewerking.
Misschien via een lisp.. voelt zich iemand geroepen?
groeten,
Manu
Manu schrijft:
CiteerDaarboven dient - vanwege de preciesie- de schaalfactor bepaald te worden mits een 'referentielengte' en een 'nieuwe' lengte.
Als je verschillend in de X- en Y-richting wilt verschalen zul je
twee referentielengtes nodig hebben niet
een.
Op zich is dat niet moeilijk te realiseren.
>> Bepaal de twee referenties en sla deze op in variabelen.
>>insert zonder GUI als blok en geef het commando de varabelen als scale factor.
Simpel. :mrgreen:
Beste Joop,
Bedankt voor je reactie .. maar helaas is mijn kennis van LISP veel te beperkt om je advies om te zetten in iets bruikbaars..
Ik dien me in die LISP-materie écht wel eens te verdiepen... :wink:
groeten,
Manu
Citaat van: Manu op wo 10 05 2006, 12:11:38
Bart en Julien, die methode had ik reeds geprobeerd, doch nét die nummerieke schaalbepaling speelt me parten... die kan je wel uitrekenen maar die zal
- vanwege de afrondingsfactor- nooit écht precies zijn. Ik zoek naar een meer geavanceerde 'scale'-bewerking.
Misschien via een lisp.. voelt zich iemand geroepen?
groeten,
Manu
je kan even nauwkeurig meten als autocad een referentie kan nemen
zet de reverentie lijnen (2 Â per richting) en bepaal de lengte hiervan met list (maximaal 8 cijfers achter de komma) is maximale invoer
als 8 cijfers je niet voldoende is schaal alles daan eerst op met bijvoorbeeld 1000 (maximaal 10^8 hoger heeft geen zin want dan krijg je er alleen nullen bij achteraf is deze factor er weer uit te halen, het opschalen zorgt voor het verplaatsen van de comma)
ps  ben je met een scan bezig of zo ?
je bereikt dan een veel beter resultaat door een combinatie van scale en stretch toe te passen op de door jezelf getekende lijnen op je onderlegger
Als je scan orgineel niet schaalvast is dan is deze vervorming toch niet af te vangen met alleen een x en y waarde
deze zijn namelijk niet constant over het vel papier de randen vervormen anders dan het midden
Nee Bart, geen geknoei met scans e.d., maar ik ontving een (oud) grondplan die wellicht niet in Autocad is getekend.
Sommige 3Dtekenpaketten genereren wel dwg's, maar die kunnen tekeningen aanmaken die niet lineair verschaald zijn
om die dan zo makkelijker op papier te krijgen... (een voorbeeld van zo'n pakket zou X-steel kunnen zijn)
Conclusie : een dwg die zowel in X als in Y-richting, én beide met een andere schaalfactor, verschaald is..
By the way, ik kan de originele tekening onmogelijk opvragen want de firma bestaat wellicht niet meer.
Manu
Wat dacht je hiervan:
(defun c:SS ()
  (setq BlockName (getfiled "select block to insert: " "" "dwg" 8))
  (setq XScaleFactor (getdist "Get X distance"))
  (setq YScaleFactor (getdist "Get Y distance"))
  (setq ZScaleFactor 0)
  (command "-insert" BlockName "0,0,0" XScaleFactor YScaleFactor ZScaleFactor "0")
)
Correctie: Typefoutje. Geen gevolgen voor werking.
Heel mooi Joop, alleen wordt de schaalfactor opnieuw bepaald door iets wat ik zelf ingeef en niet door een vergelijking van een
referentielengte met een nieuwe lengte... of zie ik dat verkeerd?
Ik denk eerder aan een normaal scale commando maar dan met een refentie- en nieuwe lengte voor X en Y.
Maar ik ben wel onder de indruk van de souplesse waarmee je zo'n lisp-je in mekaar steekt... :ole:
Manu
Hiermee kom je weer een stukje verder:
(defun c:SS ()
  (setq BlockName (getfiled "Select block to insert: " "" "dwg" 8))
  (setq BasePoint (getpoint "\nSelect base point: "))
  (setq CurrentXLength (getdist BasePoint "\nGet old X distance"))
  (setq NewXLength (getdist BasePoint "\nGet new X distance"))
  (setq XScaleFactor (/ NewXLength CurrentXLength))
  (setq CurrentYLength (getdist BasePoint "\nGet old Y distance"))
  (setq NewYLength (getdist BasePoint "\nGet new Y distance"))
  (setq YScaleFactor (/ NewYLength CurrentYLength))
  (setq ZScaleFactor 0)
  (command "-insert" BlockName BasePoint XScaleFactor YScaleFactor ZScaleFactor "0")
)
Dit werkt nu alleen met referentielengtes.
Driewerf hoera voor Joop !! :pintje: :pintje: :pintje:
Je lisp heeft me van een pák kopzorgen verlost.. fijn dat je zo snel reageerde !
groeten,
Manu
veel plezier ermee
En waarom gebruik je de calculator niet? Eenvoudig toch en rekent ook tot op 16 cijfers na de komma.
vb: cal; exp: L=DEE (l = variable, dee is de afstand tussen 2 endpoints)
dan cal; H=DEE (hoogte idem als hiervoor)
de beide variabelen l en h kunnen nu gebruikt worden in het commande -insert
om de variabele daarin te gebruiken tik 'cal .
Eenvoudig toch,
Robrecht
Robrecht,
het gaat hier niet om de afstand tussen 2 endpoints, maar over de verhouding tussen twee afstanden, en dat voor zowel x- als y-richting (en eventueel z-richting).
Deze verhouding = scale factor.
Citaat van: rlouage op ma 15 05 2006, 21:16:33
En waarom gebruik je de calculator niet? Eenvoudig toch en rekent ook tot op 16 cijfers na de komma.
Eenvoudig toch,
Robrecht
Ik heb m'n buurman jà à à à à ren weten "moven" en "stretchen" met z'n rekenmachine en het gevolg was miserie alom. Finaal heb je een massa zaken die niet echt op coördinaten staan, rechte hoeken die net niet recht zijn, geometrie die niet aansluit, ...
Als het snijpunt van 2 lijnen op 0,0 moet staan dan is de enige juiste manier om te verplaatsen van snijpunt naar 0,0
...mijn 2 eurocent ...
Alex