Voor een opdrachtje moet ik pictogrammen plaatsen op enkele plannetjes. Maar nadat ik deze geplaatst had bleken ze onder enkele andere lagen te staan die op dat plan stonden. Weet er iemand hoe ik deze kan veranderen.
Ik weet dat dit met een AutoLisp commando kan, maar het lukt mij niet om het te gebruiken. Zijn er ook andere mogelijkheden om de orde van de lagen te veranderen.
Voor de volledigheid zet ik er eventjes het AutoLisp programma bij. Het zou kunnen dat dit juist is, alleen ben ik een echte beginneling met Autocad en lukt het mij niet om het AutoLisp programma juist in te laden denk ik.
Kan mij hiet iemand mee helpen.
Dank u
(defun wijzigorde (file /)
; wijzigen prioriteit van de lagen
;
; de tekstfile die als argument wordt opgeroepen
; bevat als eerste lijn de nieuwe onderste laag
; de laatste lijn wordt de nieuwe bovenste laag
;
;
(setq lagenlijst ()) ; ledige lagenlijst
(setq lagenfile (open file "r")) ; open de file voor lezen
(setq geenfoutvlag ()) ; vlag staat ledig = er is filefout
;
(if lagenfile ; indien lagenfile
(progn
(setq geenfoutvlag 1) ; er is geen filefout meer
(setq laag (read-line lagenfile))
(while laag
(setq lagenlijst (append lagenlijst (list laag)))
(setq laag (read-line lagenfile))
);einde while
);einde progn
; indien geen lagenfile
(progn
(princ "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
(princ "\n!!! FOUT: de file werd niet geopend, !!!")
(princ "\n!!! staat de tekstfile met de lagenorde wel in de opgegeven path ? !!!")
(princ "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
(princ)
);einde progn
);einde if
;
(setvar "cmdecho" 0)
(setvar "highlight" 0)
(foreach la lagenlijst
Ah ja, mocht dat belangrijk zijn ik werk met Autocad 2004
Dit is een :roll: probleem hoor... eerst en vooral, de lisp staat er niet volledig op..., dan in het regeltje lagenfile staat een verwijzing naar file maar er word naar geen file gevraagt.?...?
eerst even het volledige lisp'ke , dan kunnen we verder...
Dit is de Lispcode die ik op de help heb gevonden. Zelf ken ik niet zoveel van AutoLisp. Weet ge soms niet waar ik zo van die lispprogramma's kan downloaden om die daarna gewoon te laden.
En btw als er natuurlijk een andere methode is om de lagen te veranderen is dat natuurlijk veel beter. Ik weet niet of dit de enige methode is.
waar heb je dat gevonden die lispcode?
niet de volledige code staat op deze site...
het stopt waar het programma pas echt begint... vanaf de foreach
Deze is door mij aangepast (zelf ooit een keer ergens opgehaalt
de rest van de lisp.
(foreach la lagenlijst
(progn
(princ (strcat "\nVerwerking laag " la " ..."))
(setq ss (ssget "x" (list (cons 8 la))))
(if ss
(progn
(command "copy" ss "" "0,0" "")
(command "erase" ss "")
);einde progn
(princ "!!! deze laag komt niet voor in de tekening !!!")
);einde if
);einde progn
);einde foreach
(if geenfoutvlag
(princ "\n!!! EINDE VERWERKING !!!") ;afgeprint indien geen filefout
); einde foutvlag
(setvar "cmdecho" 1)
(setvar "highlight" 1)
(princ)
);einde defun lagenorde
*********
het tekst bestand
*0_SITUATIE
*0_agrijs_05
*0_agrijs_10
*0_agrijs_15
*0_agrijs_20
*0_agrijs_25
*0_AGRIJS_25_STEMPEL
*0_agrijs_30
*MTX*
*MX-*
*0_SOLID
*0_ARCERING*
*0_m*
*0_r*
*0_h*
*0_w*
*0_ge*
*0_gr*
*0_b*
hierboven een voorbeeld voor een tekst bestandje
het programma werkt met de laagnaam als uitgangspunt.
En plaast de eerst genoemde laag boven op.
let op niet genoemde lagen komen dus helemaal onderop te liggen.
Heb dat dus even aangepast, maar niet getest... das voor u.
(defun c:wijzigorde (/ lagenlijst filenam lagenfile geenvlagfout laag ss )
(setq lagenlijst ())
(setq filenam (strcat (getvar "DWGPREFIX") (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))))
(setq filenam (getfiled "Geef naam en pad op voor txt-File" filenam "txt" 4))
(setq lagenfile (open filenam "r"))
(setq geenfoutvlag ())
(if lagenfile
(progn
(setq geenfoutvlag 1)
(setq laag (read-line lagenfile))
(while laag
(setq lagenlijst (append lagenlijst (list laag)))
(setq laag (read-line lagenfile))
)
)
(progn
(princ "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
(princ "\n!!! FOUT: de file werd niet geopend, !!!")
(princ "\n!!! staat de tekstfile met de lagenorde wel in de opgegeven path ? !!!")
(princ "\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
(princ)
)
)
(setvar "cmdecho" 0)
(setvar "highlight" 0)
(foreach la lagenlijst
(progn
(princ (strcat "\nVerwerking laag " la " ..."))
(setq ss (ssget "x" (list (cons 8 la))))
(if ss
(progn
(command "copy" ss "" "0,0" "")
(command "erase" ss "")
)
(princ "!!! deze laag komt niet voor in de tekening !!!")
)
)
)
(if geenfoutvlag
(princ "\n!!! EINDE VERWERKING !!!")
)
(setvar "cmdecho" 1)
(setvar "highlight" 1)
(princ)
)
(princ "\nStart commando met 'WIJZIGORDE'.")(princ)
Zeer bedankt webracer. Ik merk wanneer ik het programma laad dat het werkt. Maar bij het opvragen van een file herkent hij geen enkele van mijn autocad bestanden. Nochtans hebben alle files meerdere lagen. Ook als ik op voorhand mijn file open en daarna het lispke inlaad vraagt hij nog naar een file. En wederom herkent hij geen enkele van mijn autocad files.
Misschien ben ik door mijn gebrek aan ervaring heel dom bezig, dat zou ook kunnen.
de file die hij telkens vraagt is de txt-file waar uw lijst met lagen staan in de juiste volgorde.... heeft niets met tekeningen te maken!
zeer bedankt voor de hulp.
Het lijkt misschien te simpel maar kan je dat icoontje niet gewoon selecteren zodat er grips opzitten en vervolgens in je lagentabel de laag selecteren waarin je dat icoontje wil hebben.
Groetjes
Het zou zeer handig zijn mocht er ook een handigere methode zijn om de prioriteit van de lagen te veranderen, want via autolisp vind ik persoonlijk heel omslachtig.
Alleen begrijp ik niet goed hoe je door grid (???) te verkrijgen bij een icoontje de prioriteit van de lagen gaan veranderen?
Beste Ben,
mms kunnen we hiervoor eennuttige routine schrijven nietwaar...
als je nou eens volledig uitlegde wat je wil bereiken en wat het moet kunnen.... dan kunnen we een topic plaatsen 'Maken van een Layer-Sorter voor teken-lagen' ofzoiets. en dan word er wel een progje gemaakt die u de lagen vlgs. prio laat sorteren ofzo, en dan 'ok' en alles word netje geplaatst.
Het enige probleem dat ik heb is: waar maakt het verschil uit welke laag over de welke staat?Welk soort tekeningen zijn dat, welke doelgroep is dat?
OK, merci voor het geduld trouwens.
Dit is hetgeen waar ik momenteel mee bezig ben.
Ik doe vakantiewerk op een ministerie. Daar heb de opdracht gekregen om de preventieplannen te maken. Dit zijn plannetjes die op verschillende plaatsten in het gebouw op de muren wordt gehangen om de mensen uit te leggen waar ze naartoe moeten in geval van brand.
Op deze plannen moeten dus pictogrammen (brandblussers, ea ) geplaatst worden. Ook heb ik de gangen van de gebouwen een andere kleur gegeven.
Het probleem is hetvolgende:
Soms staat de pictogrammen onder de vluchtweg of onder de muren van het gebouw getekend, ondanks dat ik ze als laatste heb erbij getekend. Ook zijn de sommige lijntjes die de trappenin de gangen voorstellen (die staan in dezelfde layer van de muren van het gebouw) niet te zien onder de gekleurde gang.
Een andere probleem is dat wanneer ik na het wat prutsten het toch lijkt alsof als in de juiste volgorde staat van lagen, dat wanneer ik het naar pdf converteer dat ik dan weer op hetzelfde probleem schuif van verborgen pictogrammen en lijntjes.
Let wel, al mijn pictogrammen staan in dezelfde layer en toch bevinden de helft van de pictegrammen zich wel helemaal vanboven, terwijl andere onder de gekleurde gang verscholen zitten.
Om het kort te zeggen, ik speel niet met autocad, autocad speelt met mij. En laat ik zeggen dat dit zeer frustrerend kan werken.
Zo dit is mijn probleem.
Ik hoop dat er een simpele oplossing voor is, want toen ik dat lispke van u probeerde vond ik niet waar de txt files stonden.
Het zou mss duidelijker zijn als ik een beeld van mijn plannen zou laten zien, maar dit is helaas niet toegelaten van mijn chef, omdat alle inbraakmogelijkheden ook op de plannen staan.
En nog eens, ik waardeer u hulp zeer, ge hebt meer geduld met mij dan ik met autocad.
Je moet eens naar het commando draworder kijken
ik denk dat je daarmee veel beter bent geholpen.
overigens maak ik regelmatig tekeningen voor de brandweer om een vergunnig te verkrijgen voor een evenement.
Als je adviezen wilt over richtlijnen of plaatsing van symbolen stuur mij dan een prive bericht op deze site of mail naar Berend@partyloo.nl
Berend
Dag Ben,
Ik heb net uw probleem gelezen over die volgorde.
CiteerOp deze plannen moeten dus pictogrammen (brandblussers, ea ) geplaatst worden. Ook heb ik de gangen van de gebouwen een andere kleur gegeven.
Het probleem is hetvolgende:
Soms staat de pictogrammen onder de vluchtweg of onder de muren van het gebouw getekend, ondanks dat ik ze als laatste heb erbij getekend. Ook zijn de sommige lijntjes die de trappenin de gangen voorstellen (die staan in dezelfde layer van de muren van het gebouw) niet te zien onder de gekleurde gang.
Ik heb mss een heel simpele oplossing daarom.
Oplossing
Je werkt op verschillende Z niveaus.
Bijvoorbeeld uw grondplan op Z = 0
Uw arcingen van uw gang kan eventueel ook op 0.
Uw pictogrammen van blandblusapparaten en brandgaspels zet je op een Z = 100. Mag een andere waarde zijn is gewoon een richtmaat hé.
Als je dan gaat kijken in een 3d zicht merk je dat uw pictogramman boven uw grondplan staan. Dan zijn uw pictogrammen altijd zichtbaar tov uw grondplan.
Snap je wat ik bedoel :?:
Alles wat boven op de arcering van uw gang komt (moet komen) plaats je op een Z > dan die waar de arcering opstaat.
Ik weet niet of andere nog tips hebben om iets gelijk aardig te creëren?
MVG
Kenny
Jiiiihaaaa.
Het lukt!!!!!!! Zeer bedankt met uw hulp, Bart. Webracer sorry dat ik u zo lang bezig heb gehouden met het verkeerd uitleggen van mijn probleem, maar ik ben eigenlijk een echte kluns met autocad en ik wist niet dat mijn probleem gewoon met een stom comandootje kon opgelost worden.
Allemaal zeer bedankt dus, opeens is autocad opnieuw een schitterend programma geworden.
Als ik op dit forum met mijn weinige kennis kan helpen zal ik het zeker niet laten. Ieder op zijn beurt.
idd Ben, zoals Kenny vertelde kan je al je problemen oplossen,
denk beetje 3D....
nu zie je maar dat een duidelijke uitleg veel waardevoller is dan een onduidelijke...
BTW ik maak ook zulke evacuatieplannen voor gebouwen, en ik gebruik deze routine Ben:
;
;Verplaats Blocks naar boven
;
(defun c:Bmove (/ s)
(setq s (ssget "X" (list (cons 0 "INSERT")))); Get all hatch
(command "_.draworder" s "" "f")
(command "_.regen")
)
;
;Verplaats Blocks van bepaalde laag naar boven
;
(defun c:BLmove (/ s L)
(setq L (Getstring "\nGeef laagnaam "))
(setq s (ssget "X" (list (cons 0 "INSERT") (cons 8 L)))); Get all hatch
(command "_.draworder" s "" "f")
(command "_.regen")
)
Om deze routines te doen werken, knip en plak je ze van hier uit naar een TXT-file die zelf maakt, verander de txt naar lsp en plaats die file naar een suport map van autocad.
om de routine te laden, typ je 'AP' in autocad en haal je hem op...
Met 'Bmove' of 'BLmove' start je ze in autocad...
Citaat van: BenJiiiihaaaa.
Het lukt!!!!!!! Zeer bedankt met uw hulp, Bart.
Dag ben,
Ben je wel zeker dat het Bart was die je holp :?:
Ben je niet verkeerd; Bart ipv Kenny :?:
Ik zou toch echt draworder gebruiken om de teken volgorde te wijzigen, dat is daar voor bedoeld. En ik weet niet hoe het bij jullie is maar het verhogen van de z-waarde van symbolen wordt een ramp in een 3d tekening. zoals een werkblad met een brandblusser erboven aan de muur en daarboven een (keuken)kastje. Plaats je dan het symbool boven het keuken kastje? Leuk als dat bij de installatie letterlijk wordt uitgevoerd :D
voor Arceringen is in 2005 ook de tekenvolgorde/draworder opgenomen in de dialoogbox overigens.
Citaat van: Kenny HCitaat van: BenJiiiihaaaa.
Het lukt!!!!!!! Zeer bedankt met uw hulp, Bart.
Dag ben,
Ben je wel zeker dat het Bart was die je holp :?:
Ben je niet verkeerd; Bart ipv Kenny :?:
volgens mij heeft hij gewoon draworder gebruikt zoals Dnereb schreef.
en helemaal de lisp of andere oplossingen niet.
Ik heb overigens nooit beweerd dat een lisp de simpelste methode was.
Ik herkende alleen de lisp (ooit geschreven voor versie 12) die ik namelijk kort geleden ergens op een forum geplaast en hij was maar half opgenomen dus ik heb hem even aangevuld.
Wat niet wegneemt dat de lisp heel handig is als je een layer boom structuur gebruikt en vrijwel alleen 2d tekend in (zwart/wit)
Onze tekeningen zijn zo opgezet dat de laagnaam verwijst naar de kleur van de lijn (en dus de dikte)
de dikste lijnen dienen altijd boven op te liggen dus sorteren is vrij simpel
Verder wordt hier alles bij layer getekend zodat daar nooit problemen mee ontstaan.
ik heb idd gewoon draworder gebruikt, dat leek mij het simpelste. De andere methodes ga ik volgende week eens op mijn kot uitpluizen. Momenteel zal dat niet gaan want vrijdag staat de dodentocht op het programma.
De groeten aan iedereen (geen namen schrijven) is veiliger :wink:
Dag Ben,
Ik dacht dat gij gereageerd had op mijn antwoord. Aangezien de tijd tss beide post kort bij elkaar ligt. :oops:
Mijn excuus daarom. :wink:
Citaat van: DnerebEn ik weet niet hoe het bij jullie is maar het verhogen van de z-waarde van symbolen wordt een ramp in een 3d tekening. zoals een werkblad met een brandblusser erboven aan de muur en daarboven een (keuken)kastje. Plaats je dan het symbool boven het keuken kastje? Leuk als dat bij de installatie letterlijk wordt uitgevoerd :D
voor Arceringen is in 2005 ook de tekenvolgorde/draworder opgenomen in de dialoogbox overigens.
Tuurlijk wordt het dan een boeltje. Als je in 3d tekend en je zit dan nog te foefelen met uw z waarde :roll: :!: :twisted: :!: .
Ik bedoelde als het om een 2d tek gaat. Dan kan je met de z waardes spelen om een mooier, duidelijker resultaat te bekomen.
In 3d teken je alles op de juiste hoogte en neem je er verschillende aanzichten van. Ter verduidelijking van uw bovenaanzicht.
En met 3d bedoeld ik wel Solids enz geen lijntjes die in de hoogte gaan.
Zodat er ook een mooie renders kunnen genomen worden indien nodig bij een presentatie/voorstel.
hehe nie erg ze, maar ik had van blijdschap niet gemerkt dat er een nieuw bericht was toen ik dat van mij schreef.