| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: PSLTSCALE alle Layouts, kein Umschalten (3330 mal gelesen)
|
Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 16. Jan. 2009 15:27 <-- editieren / zitieren --> Unities abgeben:
den PSLTSCALE in allen Layouts ändern ohne diese umzuschalten: hier mein Ansatz, nachdem es mich genervt hat, daß die Proggis die ich gefunden habe immer nur nach dem Umschalten ein setvar durchführen dachte ich mir, daß das ja auch anders funktionieren muss. getestet unter AutoCad 2009 (DE) Code: (defun sw*set-psltscale-all (FLAG / LAYENT NEUELISTE) (if (and FLAG (member FLAG '(0 1)) ) (vlax-for LAYOUT (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)) ) (if (= (getvar "CTAB") (vla-get-Name LAYOUT)) (setvar "psltscale" FLAG) (progn (setq LAYENT (entget (vlax-vla-object->ename LAYOUT))) (append! 'NEUELISTE (reverse (member '(100 . "AcDbLayout") (reverse LAYENT))) ) (foreach PAIR (cdr (member '(100 . "AcDbLayout") LAYENT)) (append! 'NEUELISTE (if (= 70 (car PAIR)) (list (cons 70 FLAG)) (list PAIR) ) ) ) (entmod NEUELISTE) (entupd (vlax-vla-object->ename LAYOUT)) (setq NEUELISTE nil LAYENT nil ) ) ) ) ) ) (defun append!(symbol1 liste2 / ) (set symbol1(append(eval symbol1)liste2)) )
lg Wolfgang S Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wuehlmaus Mitglied Landschaftsarchitekt
Beiträge: 350 Registriert: 03.12.2010
|
erstellt am: 08. Jul. 2015 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Ich weiß - es ist lange her, aber jetzt hat ein Kollege den "Wunsch" den PSLTSCALE in jedem Layout auf 0 zu setzen ... irgendwie funktioniert aber der Code nicht. Müsste nicht in der ersten Zeile nach defun c: stehen? Oder wie wird die Lisp sonst aufgerufen? Wir arbeiten mit AC2013 ... Wäre über einen Hinweis dankbar chris ------------------ www.Gestalten-mit-AutoCAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Jul. 2015 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
defun c:irgendwas definiert AutoCAD-Befehl, hier kann man keine Parameter übergeben, daher schlecht in anderem Code verwenden. (sw*set-psltscale-all 0)
Das würde samt Klammer deinem Wunsch entsprechen. mit (defun c:PSLTSCALEall0 nil (sw*set-psltscale-all 0)) Hätte man einen AutoCAD-Befehl der das macht.. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 08. Jul. 2015 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Der Code funktuioniert auch in AutoCAD 2016 und muss so aufgerufen werden: Code: (sw*set-psltscale-all 0)
Das ist eine reine LISP Funktion mit Parameter - keine Funktion die als Command (dann mit C: aber ohne Parameter) aufgerufen werden kann. Mann kann aber noch eine Funktion dazuprogrammieren Code: (defun C:SETPSLTSCALE0 () (sw*set-psltscale-all 0) )
aber ob das notwendig ist in diesem Fall? ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wuehlmaus Mitglied Landschaftsarchitekt
Beiträge: 350 Registriert: 03.12.2010
|
erstellt am: 08. Jul. 2015 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
|
artes-indigo Mitglied
Beiträge: 101 Registriert: 30.08.2008 AutoCAD 2020 Windows 10
|
erstellt am: 13. Mrz. 2020 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
Hallo! Leider bin ich was LISP angeht ein Vollt... Kann ich diese einfache Funktion auch ohne extra "Datei" oder "Programm" starten? Einfach in der Befehlszeile? Ich hatte mal ein LISP, das komplett in der Befehlszeile zu sehen war, aber bei dieser Zeile (sw*set-psltscale-all 0) sagt AutoCAD nur Fehler: no function definition: SW*SET-PSLTSCALE-ALL Arbeite seit 2 Wochen mit AutoCAD2020 Danke, Iris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 14. Mrz. 2020 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für Wolfgang S
ohne jetzt geteste zu haben das sollte gehen ! kopiere erst einmal (defun sw*set-psltscale-all (FLAG / LAYENT NEUELISTE) ... ... ) und dann den 2ten Befehl (defun append!(symbol1 liste2 / ) ... ) und dann teste noch einmal mit (sw*set-psltscale-all 0) ------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |