| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: dynamische blöcke ssget (1081 mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 06. Jul. 2010 10:11 <-- editieren / zitieren --> Unities abgeben:
Servus Verwende den ua Code zur Auswahl von Blöcken mit gleichen Namen, mit den dynamischen Blöcken funktioniert das ja nicht mehr. Hat wer einen Tip? ps.: unter http://forums.augi.com/showpost.php?p=946610&postcount=4 hab ich was gefunden, aber das ist wieder zu umfangreich.
Code:
;;-Auswahl Blocknahme-------------------------------------------------------- (defun c:sel_blk (/ OBJ AWS) (if(setq OBJ(car(entsel))) (progn (setq AWS(ssget "_x" (vl-remove-if-not '(lambda(x)(member (car X) '( 2 ))) (entget OBJ)))) (sssetfirst AWS AWS) ) ) )
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 06. Jul. 2010 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Zitat: Original erstellt von Bernd P: ... hab ich was gefunden, aber das ist wieder zu umfangreich. ...
Hallo Bernd, du musst ja auch nicht alles übernehmen. Schau dir den Code doch mal genau an! Da wird ein Auswahlsatz über die INSERTs gebildet, die *U* heißen (hier fehlt noch die zusätzliche Eingrenzung auf den Original-Namen, denn auch der kann vorkommen, wenn nach dem Einfügen keine Änderung einer dyn. Eigenschaft erfolgt ist). Danach wird jedes Element dieser Auswahl geprüft, ob der (vla-get-EffectiveName b)dem des dynamischen Blocks entspricht. Wenn ja -> ok ansonsten raus aus der Auswahl. Einen anderen Weg gibt es nicht. Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. 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. Jul. 2010 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Anbei mal ne Code zum Anpassen (defun BLOCKSELECT(/ AWS AWSL INDEX OBJ NANE BLOCKLIST AWS2) (if(and(setq OBJ(car(entsel "\nBlockreferenz wählen: "))) (setq OBJ(setq OBJ(vlax-ename->vla-object OBJ))) (member (strcase(vla-get-objectname OBJ)) '("ACDBBLOCKREFERENCE" "ACDBMINSERTBLOCK") ) (or(and(vlax-property-available-p OBJ "IsDynamicBlock") (=(vla-get-IsDynamicBlock OBJ):vlax-true) (setq NAME (vla-get-effectivename OBJ)) ) (setq NAME (vla-get-Name OBJ)) ) (setq AWS(ssget "_x" '((0 . "INSERT")))) (> (setq AWSL(sslength AWS))0) ) (progn (setq INDEX -1) (repeat AWSL (if(and(setq OBJ(ssname AWS(setq INDEX(1+ INDEX)))) (setq OBJ(vlax-ename->vla-object OBJ)) (or(and(vlax-property-available-p OBJ "IsDynamicBlock") (=(vla-get-IsDynamicBlock OBJ):vlax-true) (setq N (vla-get-effectivename OBJ)) ) (setq N (vla-get-Name OBJ)) ) (=(strcase NAME)(strcase N)) ) (setq BLOCKLIST(cons OBJ BLOCKLIST)) ) ) (if BLOCKLIST (progn (setq AWS2(ssadd)) (mapcar '(lambda(X) (ssadd (vlax-vla-object->ename X) AWS2) ) BLOCKLIST ) ) ) ) ) AWS2 ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|