| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Mehrere Blöcke bearbeiten (1144 mal gelesen)
|
silcono Mitglied Planer
Beiträge: 88 Registriert: 19.12.2014 AutoCAD 2010 LT AutoCAD 2014 AutoCAD 2018 AutoCAD MAP 3D 2017 Intel(R) Core(TM) i5-4570 CPU @ 3.20GhZ 3.20Ghz 16,00GB Ram Windows 7- Prof. 64-Bit ASUS EAH6450 Series
|
erstellt am: 07. Sep. 2015 10:00 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, folgende Ausgangslage: Ich habe eine DWG mit ca. 13500 Blöcken. Diese Blöcke sollen nun je eine Schraffur bekommen. Für einen einzelnen Block, wäre die übliche Vorgehensweise feolgende: Script: -BBEARB neu_ACAD_FMEBLOCK13423 SCHRAFF SOLID F -500,-500 500,500 _BCLOSE ------- LISP: (defun C:blockschr (/ ) (command "-BBEARB" "test_ACAD_FMEBLOCK4735" "") (command "SCHRAFF" "SOLID" "F" "-500,-500" "500,500" "") (command "_BCLOSE" "") )end defun Ich kann nun diese Vorgehensweise einfach kopieren und den Namen für jeden Block austauschen. Aber bei ca. 13500 Blöcken, hängt sich ACAD irgendwann auf. Gibt es eine andere Möglichkeit die Blöcke zu bearbeiten? Im Voraus besten Dank für das nachkrübbeln! Viele Grüße Silcono Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 07. Sep. 2015 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für silcono
Hallo Silcono, du könntest in einer Schleife alle Blocknamen der Zeichnung durchlaufen lassen und die Command-Befehle ausführen lassen: Code:
(defun C:blockschr ( / ) (vl-load-com) (vlax-for ITEM (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object))) (if (/=(substr(vla-get-Name ITEM)1 1)"*") (progn (command "-BBEARB" (vla-get-Name ITEM) "") (command "SCHRAFF" "SOLID" "F" "-500,-500" "500,500" "") (command "_BCLOSE" ""))) ) )
WICHTIG: vorher alles speichern, denn ob AutoCAD da ohne Absturz durchkommt weiß ich nicht, die Command-Befehle sind in der Regel relativ schwerfällig. Sagen wir mal so, vielleicht klappt es ja ;-) ------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
silcono Mitglied Planer
Beiträge: 88 Registriert: 19.12.2014 AutoCAD 2010 LT AutoCAD 2014 AutoCAD 2018 AutoCAD MAP 3D 2017 Intel(R) Core(TM) i5-4570 CPU @ 3.20GhZ 3.20Ghz 16,00GB Ram Windows 7- Prof. 64-Bit ASUS EAH6450 Series
|
erstellt am: 07. Sep. 2015 10:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, viele Dank erstmal. Das ist ja schon mal ein Ansatz. Leider hat Schleife die selbe Auswirkung, wie die Wiederholung der Befehle mit allen Blocknamen. ACAD hängt sich auf Aber der Ansatz gefällt mir schon mal. Trotzdem vielen Dank! Grüße Silcono Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 07. Sep. 2015 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für silcono
Zuerst einmal würde ich Befehl: ZURÜCK STEUERN KEINE setzen, um die Rückgängig Funktion nicht unnötig zu belasten. Dann kann man alle 100 Blöcke zwischenspeichern, ggf. sogar Zeichnung schließen und neu starten (allerdings höherer Programmieraufwand). Oder gänzlich auf Commands verzichten und alle Änderungen direkt mir Lisp/vba/.net in der Datenbank durchführen, allerdings müsste das Schraffurobjekt dann generiert werden und das ist je nach Kontur recht aufwändig. Da wäre ein Beispiel mit einigen ausgewählten Blöcken hilfreich. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 07. Sep. 2015 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für silcono
|
silcono Mitglied Planer
Beiträge: 88 Registriert: 19.12.2014 AutoCAD 2010 LT AutoCAD 2014 AutoCAD 2018 AutoCAD MAP 3D 2017 Intel(R) Core(TM) i5-4570 CPU @ 3.20GhZ 3.20Ghz 16,00GB Ram Windows 7- Prof. 64-Bit ASUS EAH6450 Series
|
erstellt am: 07. Sep. 2015 11:26 <-- editieren / zitieren --> Unities abgeben:
@CAD-Huebner Danke mal für die Anregungen, werde mich auf die Hinweise hin mal ergooglen. Hört sich aber noch einigen komplizierteren Wegen an, aber eine Herausforderung ist immer schön und hält bei Laune Danke! Grüße Silcono Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
silcono Mitglied Planer
Beiträge: 88 Registriert: 19.12.2014 AutoCAD 2010 LT AutoCAD 2014 AutoCAD 2018 AutoCAD MAP 3D 2017 Intel(R) Core(TM) i5-4570 CPU @ 3.20GhZ 3.20Ghz 16,00GB Ram Windows 7- Prof. 64-Bit ASUS EAH6450 Series
|
erstellt am: 07. Sep. 2015 11:27 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 07. Sep. 2015 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für silcono
Hallo Silcono, ich glaube, so in etwas müßte es funktionieren. Ich habe bei mir ein Testdatei mit vielen Blockdefinitionen gehabt, nach Abschluss war in jeder Definition ein rechteckiges Solid-Hatch enthalten: Code:
(defun C:blockschr ( / VLA-PLINE VLA-HATCH) (vl-load-com) (vlax-for ITEM (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object))) (if (/=(substr(vla-get-Name ITEM)1 1)"*") (progn (setq vla-pline(vla-addLightweightPolyline ITEM (blockschr:->variantArray '(-500.0 -500.0 500.0 -500.0 500.0 500.0 -500.0 500.0) ))) (vla-put-closed vla-pline :vlax-true) (setq vla-hatch(vla-AddHatch ITEM acHatchPatternTypePreDefined "SOLID" :vlax-True)) (vlax-invoke vla-hatch 'AppendOuterLoop (list vla-pline)) (vla-evaluate vla-hatch) (vla-delete vla-pline) ) ) ) ) (defun blockschr:->variantArray (liste / ) (vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble ; element type (cons 0 (- (length liste) 1) ) ; array dimension )liste)) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
silcono Mitglied Planer
Beiträge: 88 Registriert: 19.12.2014 AutoCAD 2010 LT AutoCAD 2014 AutoCAD 2018 AutoCAD MAP 3D 2017 Intel(R) Core(TM) i5-4570 CPU @ 3.20GhZ 3.20Ghz 16,00GB Ram Windows 7- Prof. 64-Bit ASUS EAH6450 Series
|
erstellt am: 07. Sep. 2015 13:10 <-- editieren / zitieren --> Unities abgeben:
|