CADsite forum

AutoCAD => VBA => Topic gestart door: marcelmaas op ma 04 01 2010, 09:51:29

Titel: informatie van de ene laag overzetten naar een andere laag
Bericht door: marcelmaas op ma 04 01 2010, 09:51:29
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..
Titel: Re:informatie van de ene laag overzetten naar een andere laag
Bericht door: cetacad op ma 04 01 2010, 14:18:09
(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)
)
Titel: Re:informatie van de ene laag overzetten naar een andere laag
Bericht door: EddyBeerke op ma 04 01 2010, 15:14:39
Het commando: "LAYMRG" is misschien wat je zoekt.
Titel: Re:informatie van de ene laag overzetten naar een andere laag
Bericht door: roy_043 op ma 04 01 2010, 16:38:18
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).
Titel: Re:informatie van de ene laag overzetten naar een andere laag
Bericht door: marcelmaas op di 05 01 2010, 07:55:15
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..
Titel: Re:informatie van de ene laag overzetten naar een andere laag
Bericht door: EddyBeerke op vr 30 04 2010, 16:04:21
Laymrg doet precies wat je wilt.
Het voegt een laag samen en verwijdert de lege laag als je dat wilt.