FastFiber

extra block toevoegen aan bestaande group OPGELOST

Gestart door delangstevandestraat, di 18 02 2020, 14:27:57

Vorige topic - Volgende topic

delangstevandestraat

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.
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

delangstevandestraat

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
)
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)