CADsite forum

AutoCAD => Autolisp => Topic gestart door: delangstevandestraat op di 18 02 2020, 14:27:57

Titel: extra block toevoegen aan bestaande group OPGELOST
Bericht door: delangstevandestraat op di 18 02 2020, 14:27:57
Ik wil d.m.v. een klik op een element uit een group een block laten toevoegen aan deze group.
Deze block zit reeds minstens 1 keer in deze group op verschillende positie's.
De positie waar het nieuwe block moet komen wil ik halen uit een positie van een andere block.

Concreet zoek ik naar de manier om een lijst (ofzo) met de block entity's te verkrijgen van een group.

alvast bedankt voor alle hulp.
Titel: Re: extra block toevoegen aan bestaande group OPGELOST
Bericht door: delangstevandestraat op wo 19 02 2020, 08:06:24
met deze stukjes code heb ik verkregen wat ik zocht:
met entsel laat je de gebruiker een element selecteren (uit de group)
met getgroupname verkrijg je de naam
met selgrp verkrijg je een selectieset met daarin alle elementen uit de group

hopelijk is iemand hier iets mee ;-)


(setq ent1 (entsel "selecteer group")
        group (getgroupname (car ent1))
        groupss (selgrp group))

(defun getgroupname (GroupObject / EntName AcadReactors VlxObject); group_name
  (setq EntName (entget GroupObject))
  (if (setq AcadReactors (member '(102 . "{ACAD_REACTORS") EntName))
    (while (and (setq AcadReactors (cdr AcadReactors))
                (eq (caar AcadReactors) 330)
                (eq (vla-get-ObjectName (setq VlxObject (vlax-ename->vla-object (cdar AcadReactors)))) "AcDbGroup")
           ) ; end and
      (if (equal (cadr AcadReactors) '(102 . "}"))
        (setq AcadReactors nil)
      ) ;end if
      (setq GroupName (vla-get-Name VlxObject))
    ) ;end while
  ) ;end if
) ;defun

(defun selgrp (grpname / grp a1 ss ent)
   ;; grpname is the group name, it accepts
   ;; unnamed groupnames, such as *A1
   (setq grp (dictsearch (namedobjdict) "ACAD_GROUP"))
   (setq a1 (dictsearch (cdr (assoc -1 grp)) grpname))
   (setq ss (ssadd))
   (while (/= (assoc 340 a1) nil)
      (setq ent (assoc 340 a1))
      (setq ss (ssadd (cdr ent) ss))
      (setq a1 (subst (cons 0 "") ent a1))
   )
   ss
)