CADsite forum

AutoCAD => Autolisp => Topic gestart door: EddyBeerke op wo 25 06 2008, 13:30:03

Titel: Selectie van: line, polyline en lwpolyline [Opgelost]
Bericht door: EddyBeerke op wo 25 06 2008, 13:30:03
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
Titel: Re: Selectie van: line, polyline en lwpolyline
Bericht door: WebRacer op wo 25 06 2008, 13:58:27
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))
Titel: Re: Selectie van: line, polyline en lwpolyline
Bericht door: EddyBeerke op wo 25 06 2008, 15:03:23
WebRacer,

Bedankt, dit was wat ik zocht.
Titel: Re: Selectie van: line, polyline en lwpolyline [Opgelost]
Bericht door: EddyBeerke op do 26 06 2008, 09:28:57
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