| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Umgebungseigenschaften übertragen (1926 mal gelesen)
|
Danillo Mitglied Bauingenieur
Beiträge: 229 Registriert: 12.11.2003 Windows 10 - AutoCAD 2023
|
erstellt am: 07. Apr. 2013 11:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, damit das gewünschte Layout erzielt wird bzw. die Lisp-Programme korrekt arbeiten, habe ich bisher immer eine Prototypenzeichnung (Template) gemacht, wo ich z.B. den Bemaßungsstil, den Textstil, Maßstäbe usw. voreingestellt habe. Diese Methode hat den Nachteil, dass man darauf angewiesen ist, dass der Benutzer auch die entsprechende Template verwendet bzw. man hat Probleme, wenn man auf einer fremden Zeichnung weiterarbeiten will. Meine Frage ist, wie kann ich einen Bemaßungsstil in LISP abspeichern und bei Bedarf wieder einfügen. Ich möchte vermeiden, dass ich die einzelnen Parameter händisch in ein Lisp-Programm eingebe, sondern möchte einen vorhandenen Stil als ganzen erfassen, damit er dann immer zur Verfügung steht. Vielleicht wäre eine Methode einen Block (= Template) einzufügen, damit dann die Elemente zur Verfügung stehen; ich finde diesen Ansatz aber nicht besonders elegant. Danke und Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2020 Plateia, Canalis Visual Basic
|
erstellt am: 07. Apr. 2013 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
Hallo, ich habe es mir inzwischen bei meinen Programmen zur Angewohnheit gemacht die Einstellungen abzufragen und fehlende Elemente neu zu erzeugen, da die Mitarbeiter es einfach nicht schaffen die Templates zu verwenden. Das Neuerzeugen erspart lästige Rückrufe und der Aufwand für die entsprechenden Unterroutinen ist relativ gering. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Danillo Mitglied Bauingenieur
Beiträge: 229 Registriert: 12.11.2003 Windows 10 - AutoCAD 2023
|
erstellt am: 07. Apr. 2013 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, Wie erzeugst du dann z.B. einen Bemassungsstil? Ich hätte daran gedacht, einmal alle Eigenschaften eines Bemaßungsstil auszulesen (irgendwie mit getobject über vlx) und dann würde ich diese Werte verwenden, bei Bedarf einen neuen Bemaßungsstil genau mit diesen Eigenschaften zu erzeugen. Wie gesagt, ist das mal meine Idee, wie diese umzusetzen ist, muss ich erst im Detail probieren. Glaubst du, das könnte so klappen? Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2020 Plateia, Canalis Visual Basic
|
erstellt am: 07. Apr. 2013 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
Hallo Daniel, zu den genauen Funktionen können Dir die Profis hier sicher die richtigen Tips geben. Ich habe es leider immer noch nicht geschafft mich vernünftig in Lisp einzuarbeiten. Unter VBA kann man einfach die Datenbank durchsuchen und, wenn der Stil nicht vorhanden ist, einen neuen erzeugen. Nachdem auch lisp auf die Active-X Objekte zugreift sollte das kein Problem sein. Vielleicht hift Dir ja dieser Beitrag weiter .. Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 07. Apr. 2013 19:19 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
Hallo Daniel, wie wäre es wenn Du - wenn die Bemaßung wunschgemäß eingestellt ist - die Bemaßungsvariablen in eine Script-Datei speicherst. Die Script-Datei kannst du bei Bedarf aufrufen und alles ist eingestellt. Das geht auch, wenn Script-Datei auf einem Stick gespeichert ist. Die erste Arbeit ist herauszufinden, welche Vaiablen für die Bemaßung zutsändig sind. Als Orientierung die mit Dim... anfangen. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 08. Apr. 2013 07:52 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
Hallo Daniel, hier ein kleines Beispiel für Textstile. Speichern eines Textstiles in externer LSP-Datei => (Style:Save) Es wird die ENTGET-Liste des Stiles "MeinStil" um die Gruppeneinträge -1, 5 330 erleichtert und dann in eine LSP-Datei geschrieben. Erstellen eines Textstiles => (Styles:Get) Wenn der Textstil "MeinStil" in der aktuellen Datei noch nicht vorhanden ist wird er mit der Liste aus der externen LSP-Datei über ENTMAKE neu erzeugt. Code:
(defun Style:Save ( / DATEI STYLE) (if (and(setq style(tblobjname "STYLE" "MeinStil")) (setq style (entget style))) (progn (setq datei (open "c:\\temp\\MeinStil.lsp" "w")) (write-line "'" datei) (write-line (vl-prin1-to-string (vl-remove-if '(lambda(A) (member(car A) '(-1 5 330)))style))datei) (close datei))))(defun Style:Get ( / ) (if (not (tblsearch "STYLE" "MeinStil")) (entmake(load "c:\\temp\\MeinStil.lsp"))))
Wenn Du sowas in der Art machen möchtest denk aber dran, ich habe nur das Grundprinzip geschildert, z.B. macht es keinen Sinn, für jeden Textstil eine LSP-Datei zu schreiben, das würde ich in einer globalen Sicherungsliste speichern: '("STYLES" ("MeinStil" ((0 . "STYLE") (100 . "AcDbSymbolTableRecord") ... ) ("MeinStil_1" ((0 . "STYLE") (100 . "AcDbSymbolTableRecord") ... ) ) ) Der Zugriff erfolgt dann so: (cadr(assoc "MeinStil"(cadr(assoc "STYLES" (load ... ------------------ viele Grüße Jörn http://www.bosse-engineering.com Koordinatenausgabe Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 08. Apr. 2013 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
Hallo Daniel, Zitat: Original erstellt von Danillo:
Meine Frage ist, wie kann ich einen Bemaßungsstil in LISP abspeichern und bei Bedarf wieder einfügen.
Ich stelle den gewünschten Bemaßungsstil per Lisp so ein: ; Den Bemaßungsstil als aktuellen Bemaßungsstil setzen (setq cbemstil (strcase "BemSoll")) (setq iexpertsav (getvar "expert")) (setvar "expert" 5) (command "_.dimstyle" "sichern" cbemstil) (setvar "expert" iexpertsav) ; Die Einstellungen des aktuellen Bemaßungsstiles aktualisieren (setvar "dimblk" ".") ; hier alle gewünschten Systemvariablen (die mit dim beginnen) aktualisieren ; Die Einstellungen sichern (setq iexpertsav (getvar "expert")) (setvar "expert" 5) (command "_.dimstyle" "sichern" cbemstil) (setvar "expert" iexpertsav)
Vielleicht hilft es Dir weiter. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Danillo Mitglied Bauingenieur
Beiträge: 229 Registriert: 12.11.2003 Windows 10 - AutoCAD 2023
|
erstellt am: 01. Jun. 2013 09:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Experten, basierend auf den Vorschlag von Jörn habe ich ein Programm erstellt, das die Bemassungsstile in einer Datei sichert, sodass sie anschließend wieder hergestellt werden können. Beim Wiederherstellen von Unterbemaßungsstilen (also spezielle Einstellungen z.B. für Radiatenbemaßung, Winkelbemaßung) kommt es zu Schwierigkeiten, d.h. zum Teil werden diese Unterstile korrekt hergestellt, zum Teil werden neue Stile mit Stilnamen+$2 oder Ähnliches erzeugt. Ich hänge mal den Quellcode und meine Stilsicherung an diese Nachricht. Befehl: DimSave und DimStart. Hat jemand einen Tipp, was das falsch läuft? Danke und Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Danillo Mitglied Bauingenieur
Beiträge: 229 Registriert: 12.11.2003 Windows 10 - AutoCAD 2023
|
erstellt am: 18. Jun. 2013 00:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, dein Vorschlag funktioniert wunderbar mit Textstilen. Bei Bemaßungsstilen schaffe ich es nicht alle Eigenschaften auf diese Art und Weise abzuspeichern und dann wieder herzustellen (z.B. die Art der Pfeile). Hast du einen Tipp, wo diese Infos gespeichert sind? Danke und Grüße Daniel ------------------ Windows 8 - AutoCAD 2013 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 18. Jun. 2013 06:27 <-- editieren / zitieren --> Unities abgeben: Nur für Danillo
|