;;-------------------------------------------------------------------+ ;; Linie unter (Poly)Linien entfernen + ;;-------------------------------------------------------------------+ (defun c:EDBS_LinePurge ( / ) (EDBS_LinePurge_Do "ALK_GRZ_S35" "ALK_021_NUTZUNG_0241_S18") );End-defun (defun EDBS_LinePurge_Do (EDBS_LinePurge#Referenz EDBS_LinePurge#2Purge / ename aws#ssget eliste idx pline:getStuetz#ename stuetzpunkte aws#purge ) (princ "\n\n**********************************") (princ "\nLinie unter (Poly)Linien entfernen ") (princ "\n**********************************\n") (princ (strcat "\nReferenz-Layer: " EDBS_LinePurge#Referenz) ) (princ (strcat "\nzu breinigender Layer: " EDBS_LinePurge#2Purge) ) ;;Auswahl der Elemente die auf dem Referenzlayer sich befinden (setq aws#ssget (ssget "X" (list (cons -4 "") ) ;end-list ) ;end-ssget ) ;end-setq (if aws#ssget ;;liegen Referenzlinien vor ? (progn (princ (strcat "\nAnzahl gefundener (Poly)Linien-Elemente: " (itoa (sslength aws#ssget)) ) ) (setq idx -1 ) ;end-setq (while (setq ename (ssname aws#ssget (setq idx (1+ idx)))) (setq stuetzpunkte (pline:getStuetz ename)) (if (IS-CLOSED? ename) ;;anhängen des ersten stützpunktes falls geschlossen (setq stuetzpunkte (reverse (cons (car stuetzpunkte) (reverse stuetzpunkte)))) );endif - IS-CLOSED? (princ "\n\n") (setq aws#purge (ssget "_F" stuetzpunkte ;end-list (list (cons -4 "") ) ;end-list ) ;end-setq ) ;end-setq ;; (princ "\nAnzahl der gefundenen Elemente: ")(princ (sslength aws#purge)) (if aws#purge ;;löschen aus der Zeichnung (command "_.erase" aws#purge "") ) ;endif - aws#hatch ) ;end-while ) ;end-progn - ap#ssget (princ "\nkeine entsprechenden (Poly)Linien gefunden !") ) ;endif - sslength (princ) ) ;end-defun - EDBS_LinePurge (defun pline:getStuetz ;gibt die Stützpunkte einer (LW)Polylinie/Spline zurück (pline:getStuetz#ename ;Elementname / en entl flag vlist pt Elev n alist ) (setq vlist '() entl (entget pline:getStuetz#ename) en (LI_item 0 entl) ) ;_ end of setq (cond ;;erweitert 18-11-2004 JT ((= en "LINE") (setq vlist (list (LI_item 10 entl) ;Anfangspunkt (LI_item 11 entl) ;Endpunkt ) ;end-list ) ;end-setq ) ((= en "LWPOLYLINE") (setq vlist '() Elev (LI_item 38 entl) ) ;_ end of setq (foreach pt entl (if (= (car pt) 10) (setq vlist (cons (list (cadr pt) (caddr pt) Elev) vlist)) ) ;_ end of if ) ;_ end of foreach ) ((= en "SPLINE") (setq vlist (LI_mitem 11 entl)) ) ((= en "POLYLINE") (setq pline:getStuetz#ename (entnext pline:getStuetz#ename) entl (entget pline:getStuetz#ename) en (LI_item 0 entl) vlist '() ) ;_ end of setq (while (= en "VERTEX") (setq flag (LI_item 70 entl)) (if (and (zerop (logand flag 1)) (zerop (logand flag 2)) (zerop (logand flag 8)) ) ;_ end of and (setq pt (LI_item 10 entl) vlist (cons pt vlist) ) ;_ end of setq ) ;_ end of if (setq pline:getStuetz#ename (entnext pline:getStuetz#ename) entl (entget pline:getStuetz#ename) en (LI_item 0 entl) ) ;_ end of setq ) ;_ end of while ) ((= en "LINE") (setq vlist (list (LI_item 10 entl) (LI_item 11 entl))) ) ) ;_ end of cond (if vlist (reverse vlist) nil ) ;_ end of if ) ;_ end of defun - pline:getStuetz (defun LI_item (n alist) (cdr (assoc n alist))) ;;; Identifizierung: Ist lineares Element geschlossen? ;;; -> Elementname ;;; <- T = geschlossen, nil = offen (defun IS-CLOSED? (ENAME /) (vlax-curve-isclosed (vlax-ename->vla-object ENAME)) ) ;_ end of defun