Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  PSLTSCALE alle Layouts, kein Umschalten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   PSLTSCALE alle Layouts, kein Umschalten (1993 mal gelesen)
Wolfgang S
Mitglied
CADaver


Sehen Sie sich das Profil von Wolfgang S an!   Senden Sie eine Private Message an Wolfgang S  Schreiben Sie einen Gästebucheintrag für Wolfgang S

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von wuehlmaus an!   Senden Sie eine Private Message an wuehlmaus  Schreiben Sie einen Gästebucheintrag für wuehlmaus

Beiträge: 350
Registriert: 03.12.2010

erstellt am: 08. Jul. 2015 09:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19731
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 08. Jul. 2015 09:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9555
Registriert: 01.12.2003

One AutoCAD 2.5 - 2020, Civil 3D, Win10

erstellt am: 08. Jul. 2015 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von wuehlmaus an!   Senden Sie eine Private Message an wuehlmaus  Schreiben Sie einen Gästebucheintrag für wuehlmaus

Beiträge: 350
Registriert: 03.12.2010

erstellt am: 08. Jul. 2015 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich

DANKE! Das wars und ich kann es weitergeben.
Chris

------------------
www.Gestalten-mit-AutoCAD.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

artes-indigo
Mitglied



Sehen Sie sich das Profil von artes-indigo an!   Senden Sie eine Private Message an artes-indigo  Schreiben Sie einen Gästebucheintrag für artes-indigo

Beiträge: 82
Registriert: 30.08.2008

AutoCAD 2005
AutoCAD 2007

erstellt am: 13. Mrz. 2020 14:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich


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



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 320
Registriert: 15.07.2011

ACA2018
Windows10

erstellt am: 14. Mrz. 2020 09:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wolfgang S 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz