| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Beim speichern einer Zeichnung automatisch Layout benennen (710 mal gelesen)
|
CadWerner Mitglied Technischer Zeichner
Beiträge: 78 Registriert: 21.02.2005 Acad 2002 ProSteel 16.35 Win XP
|
erstellt am: 09. Nov. 2005 13:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe mal wieder ne kleine Frage, die ihr mir sicher beantworten könnt. Wenn ich eine neue Zeichnung erstelle und ich sie zum ersten mal abspeicher, gibt es da eine Möglichkeit, den Button "speichern unter" so umzuschreiben, das der Name der Zeichnung beim speichern automatisch in das 1! Layoutfenster übertragen wird? Ich bedanke mich schon mal im vorraus für Eure Hilfe! ------------------ gruß aus waldbrunn werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CadStudio Mitglied Software Techniker
Beiträge: 43 Registriert: 13.10.2005 SUPPORTER SUPPORTER SUPPORTER
|
erstellt am: 09. Nov. 2005 14:01 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
Bernhard GSD Mitglied
Beiträge: 482 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Nov. 2005 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
So etwas ist sicher kein Problem. Die Frage ist nur wie der Dateiname eingegeben wird. Zum Beispiel könnte man ja mal einfach ein _Sichern_als_ durchführen, anschliessend mit Code:
(DEFUN C:SICHALS () (command "_.SAVEAS" "" "~") (command "_LAYOUT" "_RENAME" "Layout1" (getvar "dwgname"))) (command "_UNDEFINE" "_SAVEAS")
Der Dateiname muß dann allerdings die Regeln für Layoutnamen einhalten. Wenn Layout1 nicht existiert gibt es eine kleine Fehlermeldung. ------------------ Gruß aus Wien Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CadWerner Mitglied Technischer Zeichner
Beiträge: 78 Registriert: 21.02.2005 Acad 2002 ProSteel 16.35 Win XP
|
erstellt am: 09. Nov. 2005 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernhard! Das war genau das was ich brauchte! Klappt perfekt, mit einem kleinen Schönheitsfehler. Wie schreibe ich die Lisp um, das er mir das .dwg weglässt? Die Units sind schon unterwegs! Danke für die superschnelle Hilfe Ach ja entschuldigung, das der Beitrag jetzt 3 mal im Forum steht. Das war nicht meine Absicht, sondern ich hatte ein Serverproblem, und jedesmal wenn ich meinen Beitrag erstellt habe, ist er im Forum nicht aufgetaucht... ------------------ gruß aus waldbrunn werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 Sie nannten ihn google.
|
erstellt am: 09. Nov. 2005 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
indem du Code:
(command "_LAYOUT" "_RENAME" "Layout1" (getvar "dwgname")))
durchCode:
(command "_LAYOUT" "_RENAME" "Layout1" (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
ersetzt.------------------ Grüsse Thomas [Diese Nachricht wurde von tunnelbauer am 09. Nov. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 09. Nov. 2005 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
(DEFUN C:SICHALS (/ ITEM) (vl-load-com) (command "_.SAVEAS" "" "~") (vlax-for item(vla-get-layouts (vla-get-activedocument(vlax-get-acad-object)) ) (if(=(vla-get-taborder ITEM)1) (vla-put-name ITEM (vl-filename-base (getvar"dwgname"))) ) ) (command "_.save" "") ) da ist es dann egal, wie das Layout heißt.
P.S. ein Prog mit dem vlr-dwg-reactor ist noch eleganter ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CadWerner Mitglied Technischer Zeichner
Beiträge: 78 Registriert: 21.02.2005 Acad 2002 ProSteel 16.35 Win XP
|
erstellt am: 09. Nov. 2005 14:51 <-- editieren / zitieren --> Unities abgeben:
Danke an Euch beiden, aber... in beiden Fällen, also wenn ich wie beschrieben, die eine Zeile gegen die andere tausche, oder die "neue" Lisp nehme, speichert mir AutoCad die Zeichnung nur noch ab und ändert mir nicht mehr das 1 Layoutfenster in den Namen der Zeichnung um... Woran liegt das? ------------------ gruß aus waldbrunn werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 09. Nov. 2005 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
na das (command "_UNDEFINE" "_SAVEAS") mußt du auch mit in die Lispdatei speichern ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CadWerner Mitglied Technischer Zeichner
Beiträge: 78 Registriert: 21.02.2005 Acad 2002 ProSteel 16.35 Win XP
|
erstellt am: 09. Nov. 2005 14:59 <-- editieren / zitieren --> Unities abgeben:
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 09. Nov. 2005 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 03. Jun. 2008 07:59 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
hallo. das thema hatten wir ja bereits: ICH bin absoluter beginner in sachen autolisp. also hab ich mal versucht, nen ansatz zu finden, wie ich diese funktion so ummünzen kann: wenn ich den befehl layoutname (z.b.) ausführe, soll er mir das layout so wie die datei benennen. hab ich aber mehrere, was ja nicht immer der fall ist, soll er den dateinamen auch verwenden und dann aber alle (um nicht mit indices 1,2,3,... durcheinanderzukommen) mit a,b,c,d,... durchnummerieren. ich bin fast soweit, dass ich sag, ich kapier vielleicht, wie die sichals.lsp funktioniert, umbaun, krieg ich aber absolut nicht hin. vielen dank stolti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 03. Jun. 2008 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
suchst du sowas: (defun C:LAYOUTRENAME (/ ITEM LAYOUTLISTE) (vl-load-com) (setq NAME (cadr(fnsplitl(getvar"dwgname")))) (vlax-for item(vla-get-layouts (vla-get-activedocument(vlax-get-acad-object)) ) (setq LAYOUTLISTE(cons(list ITEM (vla-get-name ITEM) (vla-get-taborder ITEM) ) LAYOUTLISTE ) ) ) (setq NR 0) (foreach LAYOUT (cdr(vl-sort LAYOUTLISTE '(lambda(X1 X2)(<(caddr X1) (caddr X2))))) (if(not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-name(list (car LAYOUT)(strcat NAME "-"(itoa NR))) ) ) ) (setq NR(1+ NR)) ) ) ) wenn nicht, als Ansatz kannste es sicher verwenden. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 03. Jun. 2008 08:36 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 04. Jun. 2008 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
ich muss sagen: ich glaube, ich habe jetzt ansatzweise verstanden, wie die lisp funktioniert. ich hab gestern abend im kochbuch autolisp nachgeschlagen und versucht rauszufinden, wie ich dann statt der zahlennummerierung eine mit buchstaben hinkriege. aber daran scheitere ich noch. ich wollte jetzt nur fragen: was ist das für ein lispbefehl, der mir das ganze in zahlen ausgibt, weil a+1 oder so kann ich ja nicht verwenden. vielen DANK. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 04. Jun. 2008 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
distof , atof, atoi sind Funktionen, die Zeichenketten in Zahlen umwandeln. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 04. Jun. 2008 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 04. Jun. 2008 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 04. Jun. 2008 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 04. Jun. 2008 23:06 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
mh. also aus dem buch weiß ich jetzt: (itoa) macht mir aus der zahl 555 den wert "555". für euch hier absolut lachhaft wahrscheinlich, für mich komplett böhmische dörfer. ist die strategie richtig: ich geh her und sag ihm nach dem ) ) ) (setq NR(1+ NR)) aus dem 1 ein a machen, aus dem 2 ein b, oder? oder muss das früher geschehen? geht das über ein normales setq? (setq 1 a). oder denk ich da komplett verkehrt? aber wie bind ich da den itoa ein? aber danke dass ich euch so nerven darf. stolti.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 05. Jun. 2008 07:25 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
Ich weiß absolut nicht was du vorhast und was das mit dem Threadthema zu tun hat, poste doch mal deinen Code im Lispforum , dazu deine Fragen , und dann schauen wir weiter.OK? ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jun. 2008 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für CadWerner
Hallo Stolti, schau Dir mal die Funktionen (chr ) und (ascii ) an. Und wenn Du dann NR von 97 laufen lässt, hast Du schon fast gewonnen. Weiteres bei Bedarf, wie Cadmium schon sagte, im Lisp-Brett. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |