Ik zoek een oplossing voor het volgende:
Ik wil in één selectie diverse line's, polyline's en lwpolyline's selecteren, maar geen bv 3dpolyline of hatch.
(defun c:test()
(setq ss1 (ssget '((0 . "LWPOLYLINE"))))
(setq ss2 (ssget '((0 . "POLYLINE"))))
(setq ss3 (ssget '((0 . "LINE"))))
);end defun
Probeer deze maar eens...
(prompt "\nSelekteer de lijnen")
(setq selektie (ssget)
teller 0
lijst nil
lijnen (ssadd))
(repeat (sslength selektie)
(setq entdata (entget (setq lijn (ssname selektie teller)))
entdata_more entdata
teller (1+ teller))
(while
(setq entdata_more (member (assoc 100 entdata_more) entdata_more))
(setq lijst (cons (cdar entdata_more) lijst))
(setq entdata_more (cdr entdata_more)))
(if (or (member "AcDbPolyline" lijst)
(member "AcDb2dPolyline" lijst)
(member "AcDbLine" lijst))
(setq lijnen (ssadd lijn lijnen)))
(setq lijst nil))
WebRacer,
Bedankt, dit was wat ik zocht.
Ik heb de code iets aangepast.
Dit is wat ik ervan gemaakt heb:
(defun lijnsel()
(prompt "\nSelecteer de lijnen:")
(princ)
(setq selektie (ssget)
teller 0
ents 0
foutsel 0
lijst nil
lijnen (ssadd))
(repeat (sslength selektie)
(setq entdata (entget (setq lijn (ssname selektie teller)))
entdata_more entdata
teller (1+ teller))
(while
(setq entdata_more (member (assoc 100 entdata_more) entdata_more))
(setq lijst (cons (cdar entdata_more) lijst))
(setq entdata_more (cdr entdata_more))
);end while
(if (or (member "AcDbPolyline" lijst)
(member "AcDb2dPolyline" lijst)
(member "AcDbLine" lijst)
(member "AcDbArc" lijst)
);end or
(progn
(setq lijnen (ssadd lijn lijnen))
(setq ents (+ ents 1))
);end progn...if true
(setq foutsel (+ foutsel 1)); if false
);end if
(setq lijst nil))
(setq ss1 lijnen)
(princ "\nAantal elementen gefilterd: ")(princ ents)
(princ "\nAantal elementen die niet in de selecite: ")(princ foutsel)(princ)
);end defun