Auswahl mit SSPOLY
Um mehr Auswahlmöglichkeiten zu erhalten verwenden Sie unten stehende LISP-Routine. Diese erlaubt Ihnen die Auswahl von Objekten entlang einer Polylinie, innerhalb einer Polylinie oder ausserhalb dieser.
Aufruf
Der Aufruf des Tools erfolgt mit "(sspoly)", "(sspolyf)", "(sspolyw)" oder aber "(sspolyc)".
sspoly startet das Tool ganz normal.
sspolyf betrachtet dabei die Polylinie als "Zaun". Alle von der Polylinie geschnittenen Elemente werden in die Auswahl aufgenommen.
sspolyw betrachtet dabei die Polylinie als "Fenster". Alle Elemente, die zur Gänze innerhalb der Polylinie liegen werden in die Auswahl aufgenommen.
sspolyc betrachtet dabei die Polylinie als "Kreuzen". Alle Elemente, die auf oder innerhalb der definierten Polylinie liegen werden in die Auswahl aufgenommen.
Um die Auswahl ausserhalb zu aktivieren, wählen Sie einfach alle Objekte aus und gehen Sie dann in den Deselktieren-Modus der Auswahl - derAufruf erfolgt über die Eingabe von "E" ("_R") - bei der Objektwahl und wählen Sie mittels sspoly die zu entfernenden Objekte aus.
01 ;;; sspoly.lsp * 02 ;;; (sspolyw) returns a selection set inside a polyline * 03 ;;; (sspolyf) returns a selection set fenced by a polyline * 04 ;;; (sspolyc) returns a selection set crossed by a polyline * 05 (defun 2Dpt (pt) 06 (list (car pt) (cadr pt)) 07 ) 08 09 (defun sspoly (/ apoly ptlist) 10 (while (not apoly) 11 (setq apoly (car (entsel "\nSelect polyline: "))) 12 (if apoly 13 (if (not (member (setq typ (cdr (assoc 0 (setq plist (entget apoly))))) 14 '("LWPOLYLINE" "POLYLINE") 15 ) 16 ) 17 (progn (setq apoly nil) 18 (princ "\nNo polyline selected ") 19 ) 20 ) 21 ) 22 ) 23 (cond 24 ((= typ "LWPOLYLINE") 25 (foreach n plist 26 (if (= (car n) 10) 27 (setq ptlist (cons (cdr n) ptlist)) 28 ) 29 ) 30 ) 31 ((= typ "POLYLINE") 32 (while (/= typ "SEQEND") 33 (setq typ 34 (cdr (assoc 0 (setq plist (entget (setq apoly (entnext apoly)))))) 35 ) 36 (if (= typ "VERTEX") 37 (setq ptlist (cons (2Dpt (cdr (assoc 10 plist))) ptlist)) 38 ) 39 ) 40 ) 41 ) 42 ptlist 43 ) 44 45 (defun sspolyw () 46 (ssget "_WP" (sspoly)) 47 ) 48 49 (defun sspolyf () 50 (ssget "_F" (sspoly)) 51 ) 52 53 (defun sspolyc () 54 (ssget "_CP" (sspoly)) 55 )
Download
sspoly.lsp
Links
Quelle: http://web.archive.org/web/20020722085849/http://intervision.hjem.wanadoo.dk/lisps/sspoly.lsp (Web-Archiv)cad.de: http://ww3.cad.de/foren/ubb/Forum285/HTML/000377.shtml