CADsite

  • zo 05 07 2020, 11:51:33
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: extra block toevoegen aan bestaande group OPGELOST  (gelezen 811 keer)

delangstevandestraat

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 189
  • a penny for your thoughts
    • Bekijk profiel
extra block toevoegen aan bestaande group OPGELOST
« Gepost 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.
« Laatst bewerkt op: wo 19 02 2020, 08:00:26 door delangstevandestraat »
Gelogd
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

delangstevandestraat

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 189
  • a penny for your thoughts
    • Bekijk profiel
Re: extra block toevoegen aan bestaande group OPGELOST
« Reactie #1 Gepost 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
)
Gelogd
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)
Pagina's: [1]   Omhoog