CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: designer68 op di 22 03 2011, 07:51:48

Titel: layers veranderen
Bericht door: designer68 op di 22 03 2011, 07:51:48
kan iemand mij een voorbeeld geven van een script om layers te veranderen?


ik heb een export uit een beheerpakket en wil graag voor intern gebruik layers veranderen met een scr. die ik run.

dus..... rename (oude layer) naar (nieuwe layer).

wie heeft hier een voorbeeld van?

groet jan-pieter
Titel: Re:layers veranderen
Bericht door: julien op di 22 03 2011, 08:08:17
Heb je al eens gekeken naar de werking van 'standards'?
Titel: Re:layers veranderen
Bericht door: designer68 op di 22 03 2011, 09:05:13
nee dat ken ik niet.

wil je het uitleggen?

Titel: Re:layers veranderen
Bericht door: hulpje op di 22 03 2011, 09:19:49
http://docs.autodesk.com/ACD/2011/ENU/filesACR/WS1a9193826455f5ffa23ce210c4a30acaf-5324.htm
Titel: Re:layers veranderen
Bericht door: HofCAD op di 22 03 2011, 11:39:16
Beste Designer68,

In een zuivere script waar geen AutoLisp uitdrukkingen staan kan dat niet,
omdat er dan geen beslissingen genomen kunnen worden.
Stel dat je oude lagen resp. de volgende namen hebben:
Layer1, Layer2, Layer3, Layer4, Layer5 en Layer6.
Stel dat deze respectievelijk  veranderd moeten worden naar de volgende namen:
Ln-018, Ln-025, Ln-035, Ln-050, Ln-070 en Ln-100".
Dan zou je dat kunnen doen met:
(defun C:OldLay2NewLay (/ OldLayLst NewLayLst i OldLay NewLay)
 (setq
   OldLayLst '("Layer1" "Layer2" "Layer3" "Layer4" "Layer5" "Layer6")
 )
 (setq
   NewLayLst '("Ln-018" "Ln-025" "Ln-035" "Ln-050" "Ln-070" "Ln-100")
 )
 (setq i 0)
 (repeat (length OldLayLst)
   (setq OldLay (nth i OldLayLst)
 NewLay (nth i NewLayLst)
   )
   (if (and (tblsearch "LAYER" OldLay)
    (not (tblsearch "LAYER" NewLay))
)
     (command "_.RENAME" "_LA" OldLay NewLay)
   )
   (setq i (1+ i))
 )
 (princ)
);;End OldLay2NewLay

of

(defun C:OldLay2NewLay2 (/ OldNewLayLst i OldLay NewLay)
 (setq OldNewLayLst
'(
  ("Layer1" "Ln-018")
  ("Layer2" "Ln-025")
  ("Layer3" "Ln-035")
  ("Layer4" "Ln-050")
  ("Layer5" "Ln-070")
  ("Layer6" "Ln-100")
 )
 )
 (setq i 0)
 (repeat (length OldNewLayLst)
   (setq OldLay (car (nth i OldNewLayLst))
 NewLay (cadr (nth i OldNewLayLst))
   )
   (if (and (tblsearch "LAYER" OldLay)
    (not (tblsearch "LAYER" NewLay))
)
     (command "_.RENAME" "_LA" OldLay NewLay)
   )
   (setq i (1+ i))
 )
 (princ)
);;End OldLay2NewLay2


Met vriendelijke groet, HofCAD CSI.

PS1 Zie attachment voor Lisp en Scripts.
PS2 http://www.cadsite.be/smf/index.php?topic=1509.msg8061#msg8061 en
http://www.cadsite.be/smf/index.php/topic,1481.0.html
Titel: opgelost
Bericht door: designer68 op vr 15 04 2011, 07:56:37
mensen,


dank voor jullie oplossingen
ik ga de lisp routines verder aanpassen om te gebruiken.


groet,
jan-pieter