Hi
Ich habe bei uns im Büro schon einige Makros mit Hilfe dieses Forums machen könnte. Auch konnte ich hier und allgemein im Netz schon viele nützliche LISP-Befehle finden, die ich mit anwählbaren Buttons ins AutoCAD integriert habe.
Jetzt kommt es hier immer wieder vor, dass Ingenieure gewisse Pläne (oft auch fremde Pläne) in ihr Statik-Programm einlesen müssen. Dabei ist es wichtig, dass z. B. keine Blöcke mehr in den Zeichnungen sind, Bemassungen und wohl auch die meisten Texte sind auch nicht mehr wichtig, es wäre gut, wenn alles bereinigt wäre da sonst viel Müll mit importiert wird (leere Layer) und oft können sie nur ältere Versionen importieren.
Ich habe mir überlegt, warum das immer und immer wieder machen statt einfach mal den Versuch wagen ein Makro oder eine LISP zu erstellen, mit der man das mit einem Knopfdruck machen kann. Abgesehen, dass das wohl sehr schwer ist, habe ich a) keine Zeit im Büro und b) zu wenig Erfahrung.
Trotzdem hier ein Versuch:
Kurz und bündig:
1. alle Blöcke sprengen (auch die Blöcke von Blöcken)
2. alles bereinigen
3. Fehlerprüfung durchführen und die gefundenen Fehler auch beheben
4. Als alte Version speichern, am besten automatisch im selben Verzeichnis wie das aktuelle DWG/DXF einfach mit dem Zusatz _2000 hinter dem Dateinamen. Wenn die Originaldatei ein DWG ist ein neues DWG speichern, wenn es eine DXF-Datei ist eine DXF speichern.
Der Inhalt des Makro:
^C^C_explodeall;be;al;*;n;_audit;j;_saveas
Das funktioniert sogar. Zuerst habe ich nur be eingegeben für bereinigen, dann hat er manuell noch in der Befehlszeile für Optionen gefragt, die ich danach eingebaut habe (diese Befehle erscheinen sonst gar nicht sondern ein Fenster erscheint).
Für Punkt 1 hätte ich hier den LISP-Inhalt:
Zitat:
(defun c:EXPLODEALL(/ AWS L I OBJ)
(while(and(setq AWS(ssget "_X" (list '(0 . "INSERT")(cons 410 (getvar "CTAB")))))
(>(setq L (sslength AWS))0)
)
(setq I -1)
(repeat L
(setq OBJ(ssname AWS(setq I (1+ I))))
(command "_explode" OBJ)
)
)
(princ)
)
Am Ende fragt er mich jetzt wo ich speichern möchte. Wenn ich mich nicht täusche, ist immer schon das aktuelle Verzeichnis gewählt. Fehlt nur noch der Name mit einem _2000 dahinter (also aus test.dwg wird test_2000.dwg) und das automatische speichern an sich.
Ist das schwer zu machen?
Oder ist es einfacher zu machen, dass die aktuelle Datei überschrieben wird in einer älteren Version? Dann müssten halt die Zeichner zur Sicherheit vorher die Datei kopieren was auch kein Problem wäre. Was gibt wohl mehr Aufwand?
Das würde mir fürs erste mal genügen.
Aber man könnte den Befehl ja noch ausbauen, einen XXL-Bereinigungsbefehl daraus machen:
Ausserdem frage ich mich, ob man den Befehl noch erweitern könnte mit beispielsweise folgenden Aktionen. Wie würden die einzelnen Bausteine aussehen zu folgenden Aktionen?
- via Schnellauswahl alle Bemassungen (egal ob Winkel, linear, ausgerichtet usw.) wählen und löschen
- auch alle Führungen oder die neue Multiführungslinie löschen
- alle texte und mtexte löschen
Optional:
- alle zur Zeit ausgeschalteten oder gefrorenen Layer mit ihrem Inhalt löschen
- Alle Referenzen die einen anderen Status als „geladen“ haben lösen (egal ob DWG, JPG usw.)
Wird wohl nicht alles kombiniert werden können, oder auf jeden Fall nicht so einfach.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP