;Regionen zu Polylinien konvertieren ;begonnen: 08.05.02 ;(c) H. Jesse (defun c:reg2poly ( / altcmd bksvis ak_layer ant aws pzaehler szaehler n zaehler aws1 elenam eleart ele poly_aws reg_layer laystat laycol) ;Originaldaten sichern (setq altcmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_undo" "_be") (setq bksvis (getvar "ucsicon")) (setvar "ucsicon" 0) (setq ak_layer (getvar "clayer")) ;Alle Regionen oder einzelne picken (initget 128 "Alle Picken") (setq ant (getkword "(A)lle Regionen, oder Regionen (P)icken: :")) (if (= ant "") (setq ant "Alle") ) (if (= ant "Picken") (setq aws (ssget (list (cons 0 "REGION")))) ;Regionen wählen (setq aws (ssget "X" (list (cons 0 "REGION")))) ;Alle Regionen ) (if (not aws) (setq aws (ssadd))) (if (= ant "Picken") (progn ;einzelne Regionen gewählt (setq n 0 pzaehler 0 szaehler 0 zaehler 0) (while (tblsearch "layer" (strcat "temp_regionen_layer" (itoa n))) (setq n (1+ n)) ) (setq temp_layer (strcat "temp_regionen_layer" (itoa n))) (command "_layer" "_make" temp_layer "_set" temp_layer "") (setq n 0) (while (< n (sslength aws)) (setq reg_layer (cdr (assoc 8 (entget (ssname aws n))))) (command "_change" (ssname aws n) "" "_p" "_layer" temp_layer "") (command "_explode" (ssname aws n)) (setq aws1 (ssget "X" (list (cons 8 temp_layer))));alle Linien der Region erfassen (aws1) (setq elenam (ssname aws1 0)) ;erstes element (setq poly_aws (ssadd)) (while elenam (setq eleart (cdr (assoc 0 (cdr (entget elenam))))) ;Art des elements (if (or (= eleart "LINE") (= eleart "ARC")) (progn (command "_UCS" "_ob" elenam);bei nicht ebenen Plänen wichtig (command "_pedit" elenam "_y" "_j" aws1 "" "_x") (setq poly_aws (ssadd (entlast) poly_aws)) ;letzte Polylinie zum poly_aws hinzu (command "_ucs" "_p") (setq zaehler 0); die zur Plinie verbundenen Objekte werden aus aws1 entfernt! (setq elenam (ssname aws1 zaehler) pzaehler (1+ pzaehler)) ) (if eleart (progn (alert (strcat "Elemente des Typs\n" eleart "\nkönnen nicht in Polylinien\nkonvertiert werden!\n")) (setq poly_aws (ssadd elenam poly_aws)) ;letzte Polylinie zum poly_aws hinzu (setq zaehler (1+ zaehler)) (setq elenam (ssname aws1 zaehler) szaehler (1+ szaehler)) ) (setq zaehler (1+ zaehler) elenam (ssname aws1 zaehler)) ) ) ) (if (> (sslength poly_aws) 0) (command "_change" poly_aws "" "_p" "_layer" reg_layer "") ) (setq n (1+ n)) ) (prompt (strcat (itoa pzaehler) " Polylinien erzeugt.\n")) ) (progn ;erst testen, ob Layer des Objektes aus oder gesperrt ist! (setq n 0 pzaehler 0 szaehler 0 zaehler 0) (while (tblsearch "layer" (strcat "temp_regionen_layer" (itoa n))) (setq n (1+ n)) ) (setq temp_layer (strcat "temp_regionen_layer" (itoa n))) (command "_layer" "_make" temp_layer "_set" temp_layer "") (setq n 0) (while (< n (sslength aws)) (setq ele (ssname aws n)) (setq lay (cdr (assoc 8 (entget ele)))) (setq laystat (tblsearch "LAYER" lay)) (setq laycol (cdr (assoc 62 laystat))) (if (> laycol 0) (setq laystat (cdr (assoc 70 laystat))) (setq laystat 1) ) (if (= 0 laystat) ;layer an und nicht gesperrt (progn (setq reg_layer (cdr (assoc 8 (entget (ssname aws n))))) (command "_change" ele "" "_p" "_layer" temp_layer "") (command "_explode" ele) (setq aws1 (ssget "X" (list (cons 8 temp_layer))));alle Linien der Region erfassen (aws1) (setq elenam (ssname aws1 0)) ;erstes element (setq poly_aws (ssadd)) (while elenam (setq eleart (cdr (assoc 0 (cdr (entget elenam))))) ;Art des elements (if (or (= eleart "LINE") (= eleart "ARC")) (progn (command "_UCS" "_ob" elenam);bei nicht ebenen Plänen wichtig (command "_pedit" elenam "_y" "_j" aws1 "" "_x") (setq poly_aws (ssadd (entlast) poly_aws)) ;letzte Polylinie zum poly_aws hinzu (command "_ucs" "_p") (setq zaehler 0); die zur Plinie verbundenen Objekte werden aus aws1 entfernt! (setq elenam (ssname aws1 zaehler) pzaehler (1+ pzaehler)) ) (if eleart (progn (alert (strcat "Elemente des Typs\n" eleart "\nkönnen nicht in Polylinien\nkonvertiert werden!\n")) (setq poly_aws (ssadd elenam poly_aws)) ;letztes Objekt zum poly_aws hinzu (setq zaehler (1+ zaehler)) (setq elenam (ssname aws1 zaehler) szaehler (1+ szaehler)) ) (setq zaehler (1+ zaehler) elenam (ssname aws1 zaehler)) ) ) ) (if (> (sslength poly_aws) 0) (command "_change" poly_aws "" "_p" "_layer" reg_layer "") ) ) ) (setq n (1+ n)) ) ) ) (setvar "ucsicon" bksvis) (command "_layer" "_set" ak_layer "") (if (tblsearch "layer" temp_layer) (command "_purge" "_layer" temp_layer "_n") ) (prompt (strcat (itoa pzaehler) " Polylinien, "(itoa szaehler) " sonstige Objekte erzeugt.\n")) (command "_undo" "_e") (setvar "cmdecho" altcmd) (prin1) ) (prompt "Regionen zu Polylinien Konverter reg2poly V. 1.3 (c) H. Jesse 2003\n" ) (prin1)