Hi en allemaal nog de beste wensen voor dit nieuwe jaar..!!!
Ik zou graag alles wat op bijvoorbeeld laag 'test1' is getekend overzetten naar bijvoorbeeld laag 'test5'
Om daarna ook automatisch laag 'test1' automatisch te verwijderen!
Zou iemand mij hiermee opweg kunnen helpen?
groeten Marcel..
(defun C:clayer-dellayer ()
(setvar "CMDECHO" 0)
(setq q1 nil)
(while (= q1 nil)(progn
(princ "\nSelecteer een objekt op de te wijzigen laag ...")
(setq q1(entsel"\n "))
))
(setq oudelaag (cdr(assoc 8(entget(car q1)))))
(setq q2 nil)
(while (= q2 nil)(progn
(princ "\nSelecteer een objekt op de gewenste laag ......")
(setq q2(entsel"\n "))
))
(setq nieuwelaag (cdr(assoc 8(entget(car q2)))))
(setq sset (ssget "X"))
(setq L 0
N (sslength sset))
(while (< L N)
(progn
(setq e (entget(ssname sset L)))
(setq e-laag (cdr(assoc 8 e)))
(if (= e-laag oudelaag)(progn
(setq e (subst (cons 8 nieuwelaag)(assoc 8 e) e))
(entmod e)
))
(SETQ L (+ 1 L))
);progn
);while
(princ "\nElementen worden veranderd naar layer ")
(princ nieuwelaag)
(command ".layer" "del" oudelaag "")
(setvar "CMDECHO" 1)
(prin1)
)
Het commando: "LAYMRG" is misschien wat je zoekt.
De aanzet van cetacad is op zichzelf goed (al is het lisp i.p.v. VBA). Er wordt echter geen rekening gehouden met blocks. Hierin "zitten" immers ook lagen (zowel in de BLOCK-entities zelf, als in de geneste enitities).
Inderdaad zoals Roy_43 al zei is het Lisp ipv Vba.
En het verhaal van die blocken die zo niet geselecteerd worden is natuurlijk ook wel belangrijk.
Is er iemand die het met Vba zou kunnen en dan wel rekening houdend met de lagen binnen blocken?
groeten Marcel..
Laymrg doet precies wat je wilt.
Het voegt een laag samen en verwijdert de lege laag als je dat wilt.