| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Block-im-Block auflösen (6708 mal gelesen)
|
glocker Mitglied CAD-Systemadministrator
Beiträge: 73 Registriert: 24.06.2004 AutoCAD-Mechanical2007 auf WindowsXP
|
erstellt am: 23. Mrz. 2011 17:55 <-- editieren / zitieren --> Unities abgeben:
Liebe AutoCAD-Gemeinde ich habe bereits das Archiv nach passenden Informationen abgegrast, aber leider nichts passendes für mein Problem gefunden (weil es zum Thema Block einfach auch zu viele Beiträge gibt)... Unsere Zeichnungen sind wie es sich gehört danz ordentlich mit Blöcken strukturiert. Auf diese Blöcke könnte ich nun ganz bequem einzeln zugreifen, wenn diese nicht wiederum Blöcke enthalten würden und diese wieder usw... Gibt es eine Möglichkeit, einen Block so zu bearbeiten, dass alle in dem Block enthaltenen Blöcke aufgelöst werden und anschliessend nur noch "normale" Elemente drin sind? Das bereinigen eines solchen platten Blocker wäre kein Problem - hierfür habe ich schon ein geeignetes Tool zur Verfügung. Momentan kenne ich nur die Möglichkeit, den Block zu editieren und solange Blöcke aufzulösen, bis keiner mehr übrig ist - das dauert oft aber sehr lange und oft bleibt dann doch wieder einer übrig oder ich habe versehentlich eine Schraffur aufgelöst oder noch schlimmeres... Hat hier jemand eine gute Idee Das wäre ganz prima! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 23. Mrz. 2011 18:20 <-- editieren / zitieren --> Unities abgeben: Nur für glocker
Hallo glocker, Programmiert habe ich derlei bereits - ginge also. Aber das Lisp-Forum ist ja für Fragen der (Lisp-)Programmierung gedacht. Daher meine Fragen: Wie weit bist mit eigenen Programmierversuchen? Wo hakt es bei der Umsetzung genau? Meine (schnellmalruntergetipptecommand)Lösung sieht wie folgt aus: --> Schleife durch die Blocktabelle in der folgendes gemacht wird 1. Einfügen des Blocks am Ursprung 2. Ursprung 3. --> While-Schleife Prüfen ob bei den aufgelösten Elementen ein INSERT dabei ist =:Ja - Insert aus vorherigen Auswahlsatz entfernen , Insert explodieren, die neuen Elemente diesem hinzufügen --> weiter in der Schleife =:Nein - Block erstellen unter gleichen Namen mit den im Auswahlsatz befindlichen Elementen, Basispunkt = Ursprung <-- <-- Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
glocker Mitglied CAD-Systemadministrator
Beiträge: 73 Registriert: 24.06.2004 AutoCAD-Mechanical2007 auf WindowsXP
|
erstellt am: 24. Mrz. 2011 08:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, Herr Brischke etwas habe ich natürlich schon z.B. ein Autolisp zum löschen aller Elemente mit bestimmten Kriterien (Layer, Name usw...) oder etwas zum exploren von Blöcken mit Ausnahmen (Schraffuren, Namensregeln, Bemassungen usw...). Wo's klemmt ist, wie ich innerhalb dem Scan des Plockinhalts etwas mit URSPRUNG auflösen und den Umgang mit der sich dann ändernden Blockinhalt. Erschwerend kommt hinzu, daß es sich um Layouts mit unzähligen so zu bearbeitenden Blöcken handelt. Heftig, was??? Gruß Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 24. Mrz. 2011 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für glocker
Zitat: Original erstellt von glocker: ... etwas habe ich natürlich schon z.B. ein Autolisp zum löschen aller Elemente mit bestimmten Kriterien (Layer, Name usw...) oder etwas zum exploren von Blöcken mit Ausnahmen (Schraffuren, Namensregeln, Bemassungen usw...). ...
Keine Ahnung, wie du diese Programme aufgebaut hast und nun verwenden kannst. Ich würde (als schnellen Weg) einfach ein (command "_.insert" ..) und ein anschließendes (command "_.explode" ..) verwenden. Zitat: Original erstellt von glocker: ... Wo's klemmt ist, wie ich innerhalb dem Scan des Plockinhalts etwas mit URSPRUNG auflösen und den Umgang mit der sich dann ändernden Blockinhalt. ...
Darum habe ich in meinem vorherigem Post die Command-Variante beschrieben. Da musst du nicht durch die Blockelemente durchhecheln, sondern sammelst die Elemente ein, die beim Explode der Blockreferenz entstanden sind. (ssget "_p") Zitat: Original erstellt von glocker: ... Erschwerend kommt hinzu, daß es sich um Layouts mit unzähligen so zu bearbeitenden Blöcken handelt. Heftig, was??? ...
Nein, nicht heftig, weil das ziemlich egal ist. Wenn du die Blockdefinitionen änderst, dann wirkt sich das auf alle Blockreferenzen aus, egal auf welchem Layout sich diese befinden, oder wie tief diese verschachtelt sind. Schau dir mal den Ablauf meines ersten Posts an .. das ist der Programmablaufplan, der mit einer einfachen Command-Programmierung und nur wenigen Lisp-Kenntnissen zum Erfolg führen kann. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
glocker Mitglied CAD-Systemadministrator
Beiträge: 73 Registriert: 24.06.2004 AutoCAD-Mechanical2007 auf WindowsXP
|
erstellt am: 24. Mrz. 2011 09:17 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Mrz. 2011 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für glocker
|
Frank-WZB Mitglied Konstrukteur-WZB
Beiträge: 7 Registriert: 22.09.2004 Acad2004, LT2004 deutsch Win2000, NT4
|
erstellt am: 30. Mai. 2011 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für glocker
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 30. Mai. 2011 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für glocker
Hoppla, den Beitrag hab ich ja ganz übersehen. Für eine einfache Verschachtelung sollte das hier gehen. (vl-load-com) (setq blk_name (cdr (assoc 2 (entget (car (entsel)))))) (setq blk_obj (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) blk_name ) ) (vlax-for obj blk_obj (if (= (vla-get-objectname obj) "AcDbBlockReference") (vla-explode obj) ) ) Kann man ja ausbauen. Vielleicht ne Rekursion oder so.
------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de [Diese Nachricht wurde von Andreas Kraus am 30. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |