| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Grundriss bearbeitung Automatisieren (2673 mal gelesen)
|
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 07. Jan. 2016 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bekomme von Architekten Grundrisse, die ich dann bearbeite und später als Xref hinterlege. Bisher habe ich alles mit kleinen Makros gemacht. Diese möchte ich jetzt in eine Skriptdatei bekommen um über die Freeware "ScriptPro" mehrere DWG Dateien automatisch zu bearbeiten. Meine bisherigen Schritte: 1.Befehl "Burst"(ab und zu mehrmals, da oft mehrere verschachtelungen drin sind ) um im 3ten Schritt den Grundriss grau zu setzten. 2.Setzte alle Objekte die auf Layer 0 liegen auf Layer 1 um denn grau zu setzten. Folgendes Makro: ^C^C-Layer;Neu;1;Aus;*;N;;LAYMWECHS;alle;;Name;1;-Layer;Ein;*;; 3. Grundriss auf grau setzten. Dabei habe ich mir mit einem Skript beholfen, den ich als Button in der Schnellzugrifsleiste hinterlegt habe. _______________________________________________________________________________ layer fa 8 * layer fa 7 0 setbylayer alle ja ja zoom g 4. Alle Schraffuren auf Transparenz 50 setzten. Das habe ich bislang händisch gemacht (Schnellauswahl und Transparenzwert ändern. Wäre auch toll wenn das automatisch geht. Konnte leider keine Systemvarialble finden die, die Tranzparenz der Schraffuren automatisch ändert... wäre für tipps sehr dankbar Habe dazu auch folgendes Makro rausgesucht, macht aber nur die Auswahl automatisch: (sssetfirst(setq a(ssget "_:s" '((0 . "HATCH"))))a) 5. Alles Bereinigen mit folgendem Makro: -Bereinig;alles;*;Nein; Ist schon etwas aufwendig, vielleicht habe ich mit meinem halbwissen auch zu kompliziert überlegt.
Wäre sehr hilfreich wen ich das ganze in eine Skriptdateil schreiben könnte. Brauch dazu aber unbedingt eine möglichkeit wie ich die Schraffuren auf eine Transparenz von 50 setzten kann. Vielen Dank im voraus! ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik [Diese Nachricht wurde von globerDa am 07. Jan. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Jan. 2016 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
Burst macht Dinge unnötig kaputt, kennst du SetByLayer? (Suchbegriff/Acadbefehl) Da das Script ja Formen annimmt, versuche auch den Rest! Die Transparanz kannst du, wie alle anderen allgemeinen Eigenschaften, über den Befehl ÄNDERN ändern. Hoffe das hilft beides weiter. Ergänze noch deine SystemInfo um Betriebssystem(32/64) und die Autodesk Software/Version. Danke ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 07. Jan. 2016 16:41 <-- editieren / zitieren --> Unities abgeben:
wenn ich alles auf grau setzen möchte muss ich Blöcke sprängen. Beim sprängen kann ich jedoch Atribitte zerstören die mit burst erhalten bleiben. Zum zweiten Vorschlag: die Idee hatte ich auch und hat funktioniert. Da ich damit aber nur den Layer auf dem die schraffuren liegen transparent schalten kann, ist es auch nicht wirklich eine saubere Lösung. (wenn ich dich richtig verstanden hab) Hat jemand noch ideen? ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 07. Jan. 2016 16:43 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Jan. 2016 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
Mein Vorschlag wäre sich mehr den Antworten zu beschäftigen. Zu den beiden Punkten habe ich ja nicht aus Spaß etwas geschrieben, sollten einige Aussagen nicht deinem Kenntnisstand entsprechen, so ist das ein Grund mehr die Antworten ernst zu nehmen und zu testen. (meine Meinung) sprEngen muß man nie etwas, es sei denn man möchte aus einer Blockreferenz Einzelelemente erhalten. Die Farbe der Elemente ergibt sich je nach der Eigenschaft FRbe des Objektes, der Blockreferenz, oder des Layers der beiden. Schau dir mal dieses Thema an: FAQ: Blöcke: Objekteigenschaften und deren Auswirkungen in Blöcken Und dazu würde ganz gut der beschriebene Befehl passen. Auch zu Ändern hast du dir keine Mühe gegeben und dazu ändert Ändern nur grafische Objekte, keine Layer. Also schau dir den Befehl noch einmal an und teste. Wie immer: Eingeben, bestätigen und F1 drücken. Und wenn du dich den Antworten wirklich angenommen hast, dann gehe ich auch gerne auf Rückfragen ein, die du dir nicht selbst beantworten kannst, versprochen. Frage: Hast du jemals auf dem Rechner mit Mep2015 ScriptPro getestet? Bis dann.
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 07. Jan. 2016 17:52 <-- editieren / zitieren --> Unities abgeben:
Da ich nicht mehr im Geschäft bin, könnte ich den Befehl Ändern leider noch nicht testen (mach ich morgen). Zum Thema sprängen: die Architekten haben alles mögliche in Blöcken enthalten (z.b. eine Wand die aus Linien etc. und Schafuren besteht). Ist auch ok. Wenn von denen jetzt Linien etc. nur über die Eigenschaften verändert werden (Farbe als Beispiel), müsste ich in alle Blöcke über den Editor rein und alles ändern. Wäre viel zu aufwendig. Oder kann ich da nicht folgen? Für uns ist es eigentlich nur wichtig den Grundriss in grau als xref zu hinterlegen. Gib es den andere Möglichkeiten die genauso schnell sind? Danke im Voraus! ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 07. Jan. 2016 17:57 <-- editieren / zitieren --> Unities abgeben:
ScriptPro hab ich schon getestet. Funktioniert ziemlich gut um mehrere Dateien zu bereinigen etc.. Für mich würde das jedoch nur Sinn machen wenn ich eben noch paar weitere Automatismen einbauen kann. Gibt es da noch was besseres? Oder geht das selbe vielleicht auch über VBA (Hab nur etwas was mit Diesel befehlen und Makros gemacht, kenn mich deshalb damit garnicht aus)? ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik [Diese Nachricht wurde von globerDa am 07. Jan. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Jan. 2016 18:38 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
"Oder kann ich da nicht folgen"? Wenn du wieder im Geschäft bist, teste alles mal(an Kopien, nicht an Originaldateien), dann sprechen wir weiter. Oder wenn du heute noch fit bist: Google den Befehl einfach mal (setbylayer) und meinen Link kannst du ja auch ohne Acad lesen -> FAQ Eigenschaften in Blöcken. Beides zusammen führt zum Ziel, ohne Zerstörung der Blockreferenzen. Aber es gibt auch weitere fremdProgramme die das elegant können. Wenn die von dir genannten Schraffuren(transparenz) zB in Blöcken verschachtelt vorliegen, dann reicht dir setbaylayer nicht mehr aus. Da würde ich dann auf etwas anderes verweisen. Anmerkung: Wir haben ja kein aussagekräftiges Beispiel(dwg), daher muss ich hier etwas Rätselraten und hoffen beim beschreiben von Alternativen und Lösungen. Weitere Anmerkung: Objekte von Layer0 auf Layer1 ändern.. Wenn der Einfügelayer der XRef(also der ArcDatei) Farbe Grau bekommt, dann ist dieser Vorgang überflüssig. Möchtest du die Objekte über den Layer1 an/ausschalten, dann ist Layer1 hilfreich - sonst nicht.
"Oder gibt es da was besseres"? Es gibt anderes. Meine Meinung: Wenn du mit ScriptPro warm geworden bist, bleib dabei. "mit VBA"? Natürlich, muss t jeder Programmiersprache und aus jedem Programm heraus könnte man das umsetzen. Zum Beispiel aus Outlook heraus mit VBA, lach. Es geht sogar ohne Programmierung, nur mit einem Script(aber da fehlt der Komfort) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 08. Jan. 2016 07:55 <-- editieren / zitieren --> Unities abgeben:
Leider sind die Schraffuren verschachtelt. Da ich öfter mal sachen in der xref friere ist es schon ab und zu hilfreich alles von Layer0 auf Layer1 zu machen, aber wenn man das nicht macht bräuchte man es wirklich nicht. Mit dem Befehl Ändern hat es geklappt. Bzw. hab ich an das Makro der Schraffurauswahl den befehl angehängt und das funktioniert. Schonmal vielen dank dafür Gibt es gute Handbücher oder Schulungen für sollche Programmiersprachen? Würde mich generell sehr interessieren Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 08. Jan. 2016 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
|
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 08. Jan. 2016 08:49 <-- editieren / zitieren --> Unities abgeben:
Danke ich teste das auch mal Eine Frage noch... Das SkriptPro geht in die Datei rein führt die Befehle aus und geht wieder raus. Da aber die zugeschickten Dateien nicht immer gleich im Modellbereich gespeichert sind, wird es nicht überall funktionieren. Gibt es eine Variable die Prüft ob man sich im Layout oder Modelbereich befindet und gegebenenfalls immer in Modelbereich springt? Wäre dafür Dankbar! Denke das es dann perfekt ist ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Jan. 2016 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
Zitat: Original erstellt von globerDa:
Gibt es gute Handbücher oder Schulungen für sollche Programmiersprachen? Würde mich generell sehr interessieren
Für jede Programmiersprache gibt es Bücher oder sonstige Publikationen, sonst könnte sie ja niemand nutzen. Wichtiger ist Bücher zu finden welche die Programmiersprache in Bezug auf die Software näher bringt, also zumindest AutoCad als Basis. Dazu gibt es ebenfalls Bücher, auf deutsch gibt es aber keines zu .Net Gegefrage: Hast du Programmierwissen, hast du Wissen von der DWG/DXF Datenstruktur? Wenn beides fehlt ist der Anfang oft frustrierend, einfach weil man das Werkzeug nicht kennt mit dem man ein Unbekanntes Objekt bearbeiten soll(will). Neben Cadmiums (ungetesteter, aber sicher super) Beispiellösung, ein anderer Thread zum Thema: http://forum.cad.de/foren/ubb/Forum145/HTML/004307.shtml
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Jan. 2016 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
|
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 08. Jan. 2016 09:07 <-- editieren / zitieren --> Unities abgeben:
Also ich bin begeistert Binde die Lösung bei mir noch ein, wird dann wohl besser sein als alles zu sprengen. Hat mir eigentlich an zwei wötern "Ändern" und "Model" gefehlt, aber trotzdem wieder was dazu gelernt. Ich hab eigentlich vor paar Jahren angefangen fertige Lisp Befehle in AutoCAD einzuspielen. Darauf folgten Automatische Köpfe (mit Diesel Befehlen), automatisierte Werkzeugpalettenstruktur, Makros, MEP bezogene Bauteile usw. Mit viel testen, kopfzerbrechen und hilfe über dieses Forum immer wieder zum Ziel gekommen und dazu gelernt. Verstehe die zusammenhänge vielleicht auch ein tick mehr, bin aber nicht tief in der sache drin. Danke für eure Hilfe! ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 08. Jan. 2016 22:24 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, war noch etwas fleißig und hab ein weiteres Skript geschrieben, dass eine 3D Datei in eine 2D Datei umwandelt. Dazu entferne ich erstmals alle xrefs und exportiere die Datei in AutoCAD 2010. Dann sind Kanäle schon platt. Diese Datei öffne ich und bearbeite diese weiter. Hat alles wunderbar funktioniert. Die exportierte Datei muss jedoch ein Pfad mit Namen bekommen. Ich lasse diese auf dem Desktop speichern und nenne die Datei ACAD-2D. Kann man diese automatisch ACAD-"aktueller Dateiname" nennen und dies wiederum öffnen? Danke! ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik [Diese Nachricht wurde von globerDa am 08. Jan. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Jan. 2016 22:49 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
Den Dateinamen gibst du ja selber an beim exportieren, daher verstehe ich die Frage nach dem umbenennen nicht. Benenne sie halt gleich richtig, Problem gelöst? Suchst du evtl. nur die Systemvariablen DWGPREFIX und DWGNAME ? (ansonsten kann man natürlich über SHELL cmd oder eine Programmierschnittstelle (vba/lsp) die Datei umbenennen. "wieder öffnen" Wenn wir weiterhin (möglichst) ohne Programmierung auskommen wollen, dann ist es möglich(den Autocad-Befehl zum öffnen von Dateien solltest du ja kennen?). Wenn das Script danach aber weiterlaufen soll, dann ist dies nur möglich im SDI-Modus(SingleDocumentModus, Gegenteil von MDI, Einstellung ob das Programm nur ein oder mehrere Dateien gleichzeitig geöffnet haben kann. Im SDI-Modus kannst du in einem Script Dateien Öffnen, was aber der Logik nach bedeutet dass die aktuelle Datei dabei geschlossen wird, daher wird ggf gefragt ob die Änderungen gespeichert werden sollen. Teste das SDIverhalten in dem du Dateien öffnest, bearbeitest, wechselst usw OHNE Script, so erkennst du die nötigen Eingaben für das spätere Script. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 13. Jan. 2016 10:30 <-- editieren / zitieren --> Unities abgeben:
|
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 13. Jan. 2016 14:15 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, ich habe eigentlich alles hinbekommen was ich wollte. Jetzt bleibt es doch an einer kleinigkeit (hoffentlich) hängen. Kurz zur Erläuterung: Ziel war es aus einer Koordinationsdatei wo mehrere Gewerke vorhanden sind eine Datei zu erstellen, die nur ein Gewerk beinhaltet. Hier das Skript: Modell sdi 1 sichern (strcat (getvar "DWGPREFIX") "Heizung-" (getvar "DWGNAME")) öffnen (strcat (getvar "DWGPREFIX") "Heizung-" (getvar "DWGNAME")) -xref lösen * zoom grenzen -layer Entsperren * Tauen * Ein * -Layer Frieren H_* Frieren RR_HZG_* löschen alle -layer Tauen * -Bereinig alles * Nein -AFENSTER Einzeln sdi 0 ksich schliessen Ich habe der neu erstellten Datei für das Gewerk "Heizung-" drangesetzt. Wollte damit gleich mehrere Dateien über SkriptPro erstelen (deshalb konnte ich nicht einfach ein namen vorgeben). Solange ich das Skript im Modelbereich an einer Zeichnung ausführe, klappt es optimal. Wenn ich jedoch mehrere ausführe über SkriptPro, macht er mir nichts... (ich habe den ScriptPro 2.0) Mir ist aufgefallen das er AutoCAD immer wieder startet und da Zeichnung1 offen ist und er dadurch sdi1 nicht ausführen kann. Ich hab darauf hin das ganze versucht über Startup (2) zu lösen oder dem Startup (in SkriptPro) ein Skript mit _close zu zuweisen. Hat nichts gebracht. Dannach habe ich das sdi im Skript nicht mehr auf 0 zurückgestzt und vorm starten sdi schon auf 1 gestellt. Dann kam es nur bis zum speichern der Datei und nicht weiter... Was mache ich falsch?
------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 13. Jan. 2016 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für globerDa
Ohne jetzt jedes Wort zu kommentieren: Werf das SDI=1 auf den Müll (beim Einsatz von ScriptPro für den Batchbetrieb). Das Problem mit dem Zeichnung wechseln in einem Script stellt sich nämlich nicht wenn du deine Vorgehensweise etwas anpasst: Code: sichern (strcat (getvar "DWGPREFIX") "Heizung-" (getvar "DWGNAME")) öffnen (strcat (getvar "DWGPREFIX") "Heizung-" (getvar "DWGNAME"))
Ich nehme an das der Dateistand vor dem "Sichern" bereits gesichert ist (du öffnest doch sicher eine Datei und führst gleich "sichern" aus, oder? Wenn dem so ist, verwende doch einfach anstatt SICHERN SICHALS! Damit bist du dann bereits in der neuen Datei (sozusagen): _saveas (strcat (getvar "DWGPREFIX") "Heizung-" (getvar "DWGNAME")) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 13. Jan. 2016 16:09 <-- editieren / zitieren --> Unities abgeben:
hm ja, hab ich bei einem anderen Skript auch so gemacht. Könnte so klappen...gebe Bescheid wenn ich es getestet habe. Ist einfach komisch das es beim einfachen hereinziehen funktioniert. Liegt wahrscheinlich an dem sdi. Wenn es ohne klappt ist mir auch wohler, weil ich dann ständig den Reiter oben für die Zeichnungen anmachen muss etc.. ------------------ Daniel Glober Technischer Systemplaner für Versorgungs- und Ausrüstungstechnik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
globerDa Mitglied Technischer Systemplaner
Beiträge: 70 Registriert: 05.11.2013
|
erstellt am: 14. Jan. 2016 08:15 <-- editieren / zitieren --> Unities abgeben:
|