| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Zugriff auf Gruppen-Elemente (865 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 05. Dez. 2011 15:02 <-- editieren / zitieren --> Unities abgeben:
Hi ! unter Einbeziehung der Gruppen-Zugriffsfunktionen aus http://ww3.cad.de/foren/ubb/Forum145/HTML/000019.shtml#000017 habe ich eine Funktion erstellt mit welcher ich auf die Elemente von Gruppen zugreifen möchte. Code:
(if group_name (progn (princ "\ngroup_name: ") (princ group_name) (princ "\n\n") (command "_.select" "_group" group_name "") (setq aws_group (ssget "_p")) ;; Auslesen der Gruppenelemente (while (setq aws_group_ele (ssname aws_group (setq idx (1+ idx)))) (princ "\naws_group_ele: ") (princ aws_group_ele) (princ "\n\n") ) ;end-while ) ;end-progn ) ;endif
Nun habe ich das Problem das als Elemente der Gruppe immer dieselben Objekte gelistet werden: Zitat: group_name: (*A24) aws_group_ele: <Objektname: 7ffffb0a460> aws_group_ele: <Objektname: 7ffffb0a450>group_name: (*A25) aws_group_ele: <Objektname: 7ffffb0a460> aws_group_ele: <Objektname: 7ffffb0a450>
Das merkwürdige ist nur das in einer kleinen Testfunktion - bei der ich den Namen der Gruppe übergebe - ist das kein Problem: (defun test100 (group_name / ) (princ "\nTestfunktion") (princ "\nGruppenname: ")(princ group_name) (command "_.select" "_group" group_name "") (setq aws_group (ssget "_p") idx -1) ;; Auslesen der Gruppenelemente (while (setq aws_group_ele (ssname aws_group (setq idx (1+ idx)))) (princ (entget aws_group_ele)) (princ "\n\n") );end-while );end-defun (princ ) Irgendwie habe ich den Eindruck als wenn ich irgendwie im Wald stehe. Kann mir einer von Euch weiterhelfen ? Gruß Jan :-)
------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 05. Dez. 2011 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 05. Dez. 2011 16:42 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 05. Dez. 2011 21:49 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
neurosis Mitglied dipl.ing.
Beiträge: 222 Registriert: 22.08.2006
|
erstellt am: 05. Dez. 2011 23:05 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
wenn du das ganze ohne vl machen willst: Code:
(defun DictListAll (Root / DictRoot GrpList Temp) (setq DictRoot (entget Root)) (while DictRoot (setq Temp (if (= (caar DictRoot) 3) (list (cons (cdr (car DictRoot))(cdr (cadr DictRoot)))) ) DictRoot (cdr DictRoot) ) (setq GrpList (append GrpList Temp)) ) )
mit
Code:
(setq lst (DictListAll (cdr (assoc "ACAD_GROUP" (dictlistall (namedobjdict))))))
bekommst du eine assoziierte liste in der form (("GroupName1" . <Objektname: xxx>) ("GroupName2" . <Objektname: yyy>) ...) und mit
Code:
(apply 'append (mapcar '(lambda(x) (if (= (car x) 340) (list (cdr x)))) (entget (cdr (assoc "gewuenschter Gruppenname" lst)))))
bekommst dann deine einzelnen elemente als liste anhand des gewuenschten gruppennamens.gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 06. Dez. 2011 08:07 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
neurosis Mitglied dipl.ing.
Beiträge: 222 Registriert: 22.08.2006
|
erstellt am: 06. Dez. 2011 08:38 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Dez. 2011 13:14 <-- editieren / zitieren --> Unities abgeben:
|