| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Hilfe zu Lispprog. (1622 mal gelesen)
|
CADLUIS Mitglied
Beiträge: 278 Registriert: 31.01.2008 HICAD 2023
|
erstellt am: 05. Jan. 2009 17:39 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich habe im Netz ein kleines Lisp gefunden das fast geneu meinen Wünschen entspricht. Dieses Prog. benennt mir die Layout nach der Plannunmmer um, und nummeriert diese dann fortlaufend. Nun brauche ich eure Hilfe um es für mich perfekt zu machen. 1.) Nur es bringt mir eine Fehlermeldung (; Fehler: no function definition: VLAX-GET-ACAD-OBJECT) 2.) Wie kann ich dem Prog. sagen das es nicht bei Nummer 1 beginnen soll, sondern eine Abfrage der 1. Nummer für die Nummerierung. (Die erste Nummer ist nicht immer 1.) --------------------------------------------------------------------------- (defun c:AlleLayoutsUmbenennen () (vlax-for i (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument ) 'Layouts ) (if (/= 0 (vlax-get-property i 'TabOrder)) (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-put-property (list i 'Name (strcat (vl-filename-base (getvar "DWGNAME")) "_" (itoa (vlax-get-property i 'TabOrder)) ) ) ) ) (princ (strcat "\nLayout " (vlax-get-property i 'Name) " konnte nicht umbenannt werden, weil der Name bereits verwendet wurde." ) ) ) ) ) ) ;;; Kurzbefehl ALU (defun c:ALU () (c:AlleLayoutsUmbenennen) ) (princ "\n\"AlleLayoutsUmbenennen.lsp\" wurde geladen. Zum Starten \"AlleLayoutsUmbenennen\" oder \"ALU\" eingeben." ) (princ)
Danke im Voraus
Alois
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 05. Jan. 2009 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für CADLUIS
Hi, zu 1): vorher einmal (vl-load-com) ausführen. zu 2): Am Anfang: (setq n (1- (getint "Startnummer:"))) und dann statt (itoa (vlax-get-property i 'TabOrder)) dieses: (itoa ( + n (vlax-get-property i 'TabOrder))) ;(erhöht die Nummer um n.) Grüsse, Henning PS: Hab' ich jetzt nur "runtergeschrieben", ohne Test, eventuelle Fehler kannst Du behalten ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de
[Diese Nachricht wurde von wronzky am 05. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLUIS Mitglied
Beiträge: 278 Registriert: 31.01.2008
|
erstellt am: 05. Jan. 2009 18:10 <-- editieren / zitieren --> Unities abgeben:
|
CADLUIS Mitglied
Beiträge: 278 Registriert: 31.01.2008 HICAD 2023
|
erstellt am: 05. Jan. 2009 18:25 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 05. Jan. 2009 18:38 <-- editieren / zitieren --> Unities abgeben: Nur für CADLUIS
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 05. Jan. 2009 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für CADLUIS
Hallo Alois, Also dann doch noch mal "integriert" in ?!Deine!? Routine: Code: (defun c:AlleLayoutsUmbenennen ( / n i) (vl-load-com) (or ;Startnummer setzen (if (setq n (getint "Startnummer <1>:")) (setq n (1- n)) ) (setq n 0) ) ;Für jedes Layout in der aktuellen Zeichnung (vlax-for i (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument ) 'Layouts ) (if (/= 0 (vlax-get-property i 'TabOrder));Layout ist NICHT Modellbereich (taborder = 0) (if ;Versuchen, Layout umzubenennen (vl-catch-all-error-p ;Fehler abfragen: T, wenn Versuch fehlschlägt (vl-catch-all-apply ;Fehler abfangen 'vlax-put-property;Eigenschaft "Name" des Layouts "i" (list i 'Name (strcat ;ändern in "Zeichnungsname" + "_" + "Nummer des Tabs + Startnummer" (vl-filename-base (getvar "DWGNAME")) "_" (itoa (+ n (vlax-get-property i 'TabOrder))) ) ) ) ) (princ;Rückmeldung, wenn Fehler auftrat (strcat "\nLayout " (vlax-get-property i 'Name) " konnte nicht umbenannt werden, weil der Name bereits verwendet wurde." ) ) ) ) ) )
Es wäre im Übrigen ganz nett, wenn Du den Urheber der Routine nennen würdest, und nicht nur "hab' da im Netz was gefunden".Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLUIS Mitglied
Beiträge: 278 Registriert: 31.01.2008
|
erstellt am: 05. Jan. 2009 20:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Henning! Hab es grade geschaft habe aber nur die 1 Zeile geändert (setq n (- (getint "Startnummer:") 1)) zum Urheber habe ich keine Angabe sehe gerade das das ganze neu geschrieben wurde. Jedenfals nochmals DANKE !!!!!!!! Grüsse aus der Steiermark
Alois Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |