| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Autocad Skript erstellen (3077 mal gelesen)
|
muntafuner Mitglied Architekt
Beiträge: 14 Registriert: 18.10.2019 Revit 2020/Autocad 2020/Autocad Architecture 2020
|
erstellt am: 18. Okt. 2019 09:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin auf der Suche nach einer Lösung (wahrscheinlich am besten mittels einer Skript-Datei) für folgende Problemstellung: Derzeit bin ich beschäftigt erhaltene Zeichnungen auf meinen Layer-Standard zu bringen. Dabei liegen alle Schraffuren der erhaltenen Zeichnung auf dem Layer "Poly_Muster" jedoch mit verschiedenen Farben. Nun möchte ich zum Beispiel alle Schraffuren auf dem Layer Poly_Muster mit der Farbe 241,227,215 auswählen und auf meinen Layer "Poly_Stahlbeton" mit der Farbe VonLayer setzen. Diese Funktion sollte ich für alle Schraffuren der Zeichnung haben. Des Weiteren wäre es super, wenn ich gleichzeitig alle Schraffuren aus sämtlichen Blöcken löschen könnte ohne, dass ich dabei die Blöcke auflösen muss. Danke für eure Unterstützung! PS: Gibt es einen Befehl, der in das Skript eingefügt werden kann, dass zu allererst ein Layerstatus geladen wird? PPS: Gibt es einen weiteren Befehl, der ein bestehendes Layout aus einer anderen Zeichnungsdatei in diese Datei kopiert und die Zeichnung direkt in diesem Layout inkl. passendem Maßstab einfügt? [Diese Nachricht wurde von muntafuner am 18. Okt. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 2966 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 18. Okt. 2019 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Zitat: Original erstellt von muntafuner: Hallo zusammen,...PPS: Gibt es einen weiteren Befehl, der ein bestehendes Layout aus einer anderen Zeichnungsdatei in diese Datei kopiert und die Zeichnung direkt in diesem Layout inkl. passendem Maßstab einfügt? [Diese Nachricht wurde von muntafuner am 18. Okt. 2019 editiert.]
Befehl / Möglichkeiten nun über das DC kann man ja ein Layout einfach rein ziehn das ganz kann man evtl mit -layout Vorlage ???.DWT auch machen cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 18. Okt. 2019 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Hallo muntafuner, Schraffuren auswählen und Layer und farbe ändern geht mit Script. ABER Aus Blöcken löschen ohne zu sprengen geht nicht, dazu braucht man Lisp. Das ist dann wohl auch das Hauptproblem. Eine Funktion die das macht im Script zu laden und aufzurufen würde dann aber wieder gehen. Layerstatus laden kann ich nicht sagen, ich arbeite damit nicht. Layout automatisch holen mache ich auch über Lisp, ich hab noch nicht geschaut ob man das auch anders automatisieren kann. cadwomen hat ja dazu schon was geschrieben ... hab ich noch nie ausprobiert. Ich hole mir alles was ich brauche mit Lisp über copyobjects (also Layer, Layouts, Blöcke, ...). Ist immer der selbe Weg für alles. Mir egal obs auch anders geht ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
muntafuner Mitglied Architekt
Beiträge: 14 Registriert: 18.10.2019 Revit 2020/Autocad 2020/Autocad Architecture 2020
|
erstellt am: 22. Okt. 2019 07:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas, danke für deine Antwort! Gut zu wissen, dass es funktioniert. Das Problem mit den Schraffuren ist vorab das dringlichste. Könntet ihr mir helfen, was das schreiben des Scriptes angeht? Wie fange ich da am besten an? Ich komme nicht um die Schnellauswahl herum... Vielen Dank für eure Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 22. Okt. 2019 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Hallo muntafuner, zunächst kannst Du hier mal reinschauen. In Scripten verwendet man, soweit vorhanden, die Befehlszeilenversionen der Befehle. Diese sind am anführenden Bindestrich zu erkennen, z. B. "-layer" oder "-plot". Vom Befehl "sauswahl" gibt es meines Wissens keine Befehlszeilenversion, evtl. bietet sich der Befehl "-layzusf" an. mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
muntafuner Mitglied Architekt
Beiträge: 14 Registriert: 18.10.2019 Revit 2020/Autocad 2020/Autocad Architecture 2020
|
erstellt am: 22. Okt. 2019 10:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Ingo, danke für deine Antwort. Eben gibt es für den Befehl "sauswahl" keine Befehlszeilenversion. Wie kann ich diesen umgehen und die Schraffuren nach Farbe auswählen? "layzusf" funktioniert leider nicht - da alle Schraffuren auf dem selben Layer liegen, ich sie aber der Farbe nach filtern möchte und auf den jeweiligen Layer legen.. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 23. Okt. 2019 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Hallo muntafuner, hier mal ein par Zeilen Lisp: Code: (setq r 241 g 227 b 215) (setq filter (list '(0 . "HATCH") '(8 . "Poly_Muster") (cons 420 (+ (lsh (fix R) 16) (lsh (fix G) 8) (fix B) ) ) ) ) (setq satz (ssget "x" filter)) (sssetfirst satz satz)
Damit kannst du die Schraffuren auswählen lassen. Funktioniert auch wenn du das so ins Script kopierst und die Farbwerte (erste Zeile) anpasst. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 28. Okt. 2019 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Hallo zusammen, @ muntafuner: Leider weiß ich dort auch nicht weiter, da ich keinen Befehl gefunden habe, der auch in Scripten die Auswahl von Objekten zulässt. @ Andreas: Deinen Vorschlag habe ich ausprobiert und den Code in ein Script kopiert. Leider läuft bei mir auch das nicht. Der Lisp-Code erscheint zwar in der Befehlszeile, endet aber mit "(nil nil)", ohne das etwas passiert. Die Option "vorher" des Befehls "Wahl" sagt, "Kein vorheriger Auswahlsatz". Wenn ich aus der test.scr eine test.lsp mache und über das Register "Verwalten" > Gruppe "Anwendungen" > "Anwendung laden" gehe passiert ebenfalls nichts. mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 28. Okt. 2019 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Zitat: Original erstellt von Ingo Struck: endet aber mit "(nil nil)"
Dann liegt das an deiner Datei, nicht am Code. Deine Datei scheint keine Schraffuren mit Farbe 241,227,215 auf dem Layer Poly_Muster zu beinhalten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 29. Okt. 2019 17:07 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
Ja, der Einwand stimmt. Wenn eine solche Schraffur vorhanden ist, läuft sowohl Andreas Vorschlag mit dem Script als auch direkt die lsp-Datei. Gestern war ich wohl etwas vorschnell beim Testen mit den Schraffuren. Evtl. meldet sich ja auch muntafuner noch einmal hierzu. Danke an Andreas und cadffm! mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
muntafuner Mitglied Architekt
Beiträge: 14 Registriert: 18.10.2019 Revit 2020/Autocad 2020/Autocad Architecture 2020
|
erstellt am: 07. Nov. 2019 09:08 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe die Lösung für mein Problem gefunden: (defun _hatchcolorstolayer (lst / a d tc) ;; Test (vl-load-com) (vlax-for l (vla-get-layers (setq d (vla-get-activedocument (vlax-get-acad-object)))) (cond ((= -1 (vlax-get l 'lock)) (vlax-put l 'lock 0) (setq a (cons l a)))) ) (vlax-for b (vla-get-blocks d) (if (= 0 (vlax-get b 'isxref)) (vlax-for o b (cond ((and (= (vla-get-objectname o) "AcDbHatch") (setq tc (vla-get-truecolor o)) (setq tc (mapcar '(lambda (x) (vlax-get tc x)) '(red green blue))) (setq ln (cadr (assoc tc lst))) ) (or (tblobjname "layer" ln) (entmakex (append (entget (vlax-vla-object->ename o)) (list (cons 8 ln)))) ) (vl-catch-all-apply 'vla-put-layer (list o ln)) ) ) ) ) ) (foreach l a (vlax-put l 'lock -1)) (princ) ) ;; Schraffurliste (_hatchcolorstolayer '(((128 210 4) "Poly_Stahlbeton") ((153 76 0) "Poly_Mauerwerk") ((245 245 235) "TEST")) ) so funktioniert es einwandfrei - Danke euch trotzdem für die zahlreichen Lösungsvorschläge und Anmerkungen zu diesem Thema :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 07. Nov. 2019 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für muntafuner
|