Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Ausführung dieser Lisp-Datei der alte Layer wieder zurückgesetzt

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Ausführung dieser Lisp-Datei der alte Layer wieder zurückgesetzt (819 mal gelesen)

Ex-Mitglied

erstellt am: 06. Mai. 2004 11:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo,

ich möchte eine Lisp Datei in einem Icon (Diesem Werkzeug zugeordnetes Makro
ausführen. Bevor diese Lisp-Datei ausgeführt wird soll noch ein andere Layer ein
gestellt werden. Soweit habe ich keine Probleme. Nun möchte ich aber, dass nach
Ausführung dieser Lisp-Datei der alte Layer wieder zurückgesetzt wird bzw. eine
andere Befehlsfolge ausgeführt wird.
Bei mir ist es so, dass wenn die Lisp-Datei ausgeführt wurde und die lisp verlasse,
dass danach eingefügte Befehle nicht mehr berücksichtigt werden.
Oder hat man die Möglichkeit dies komplett in eine Lisp-Datei zu packen.
Wer kann mir da helfen.
Danke für jeden Tip.
Ralph

AsSchu
Ehrenmitglied
Konstrukteur


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

Beiträge: 1632
Registriert: 27.06.2003

ACAD 2007,cadMANdu
Win 2000 XP

erstellt am: 06. Mai. 2004 11:13    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

Hallo,

ich würde die .lsp und das Makro mal hier reinstellen.
Dann kann man besser sehen was Du meinst.


Ciao

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: 21533
Registriert: 03.06.2002

Alles

erstellt am: 06. Mai. 2004 11:14    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

poste Lisp & Makro (wie du es eigentlich gern hättest - es aber nicht so weiterläuft)
dann packt es dir einer mit in das Lisp (auch den Layer einstellen VOR dem Lisp kann dann da mit rein)

------------------
- Sebastian -

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Mai. 2004 11:16    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

Hallo Ralph,

neben den vielen Fragezeichen, die ich jetzt im Gesicht habe zu dem was du jetzt meinen könntest mal 2 Befehle:
(getvar .. ermittelt den Wert einer Systemvariablen
(setvar .. setzt den Wert einer Systemvariablen

"CLAYER" ist die Systemvariable, welche den aktuellen Layer bestimmt.

somit kannst du mit (setq oldlayer (getvar "CLAYER")) den Layer vor Befehlsausführung sichern und mit
(setvar "CLAYER" oldlayer) am Ende wieder aktuell setzen.

Reicht das als Info?

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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


Ex-Mitglied

erstellt am: 06. Mai. 2004 11:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Das nachfolgende Programm sollte den Layer auf "0_Li_Cy_013" setzen
und danach die Lisp-Datei "Boesch" ausführen und danach den alten
Layer wieder einstellen.
Funktioniert aber nicht und ich weiss nicht warum. Kann mir jemand
Helfen?
Wäre super
Danke

(defun pre_lay (reatyp befname / );Wenn Programm gestartet wird
  (cond
    ((wcmatch (car befname) "Boesch*")
    (setq *oldlay* (getvar "CLAYER"))
    (setvar "CLAYER" "0_Li_Cy_013");Anstatt der 0 den Layer einsetzen, der zum Bemassen genutzt werden soll
    )
    )
  )
(defun after_lay (reatyp befname / );Wenn Programm beendet wird
  (cond
    ((and
      (wcmatch (car befname) "Boesch*")
      *oldlay*
      )
    (setvar "CLAYER" *oldlay*)
    (setq *oldlay* nil)
    )
    )
  )
(defun reaload ();Initialisierung des Reactors
  (if (not *DEFUN_DIMLAYER*)
    (progn
      (setq *DEFUN_DIMLAYER*
            (VLR-Command-Reactor "*DEFUN_DIMLAYER*"
              '((:vlr-commandEnded . after_lay)
                (:vlr-commandwillstart . pre_lay)
                )
              )
            )
      (princ "\nLayerschalter Bemassung aktiviert")
      )
    )
  )
(reaload)

Gruß
Ralph

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Mai. 2004 11:52    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

Hallo Ralph,

das ist nun etwas ganz Anderes. Du wusstest dass du da Code eines Reactors vor dir hast? Dieser reagiert auf die Befehlsausführung eines AutoCAD Befehls.
In LISP defienierte Befehle werden durch diesen Reactor nicht beachtet.
Wenn du nun schon eine LISP-Datei hast, dann wäre es absoluter Unsinn einen Reactor dafür zu verwenden. Schau dir mein letztes Posting an, dann kannst du ja die Lisp-Datei am Anfang und am Ende dahingehend verändern. getvar,setvar

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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


Ex-Mitglied

erstellt am: 06. Mai. 2004 11:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Holger,

diese Lisp-Datei ist nicht von mir.
Außerdem kenne ich mich mit Lisp zuwenig aus als das ich
jetzt wüsste was du von mir willst.
Ich brauche jemanden der mir so eine Lisp-Datei umschreibt
bzw. erstellt.
Deshalb die große Hilfe dich ich brauche.
Ralph

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Mai. 2004 12:09    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

Hallo Ralph,

wer diese Zeilen mal verbockt hat, dass kann ich dir sagen. ;-)

Solange du allerdings die andere Lisp hier nicht einstellst, kann ich nicht mehr tun, als dir den Hinweis auf (setvar..) (getvar ..) zu geben.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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


Ex-Mitglied

erstellt am: 06. Mai. 2004 12:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Holger,
dies ist die andere Lisp-Datei.
Mit dieser Datei kann ich Bogen zeichnen mit eingabe einer
Bogenlänge.
Nun hätte ich gern, dass vor Programmstart ein bestimmter Layer
eingestellt wird z.B. Bogenlayer.
Nach Programm ende soll dann der alte Layer wieder zurückgesetzt
werden.
Kannst du mir hier weiterhelfen?

(defun lbogen(cen p1 len / ang1 ang2 ang3 rad)
  (setq rad(distance cen p1))
  (setq ang1(angle cen p1))
  (setq ang2(+ ang1(/ len rad)))
  (if(minusp len)(setq ang3 ang1 ang1 ang2 ang2 ang3 len(abs len)))
  (entmake
    (list
    '(0 . "arc")
      (cons 10 cen)
      (cons 40 rad)
      (cons 50 ang1)
      (cons 51 ang2)
    )
  )
)
(defun c:lbogen1( / cen)
  (lbogen
    (setq cen(getpoint"\nMittelpunkt: "))
    (getpoint cen"\nStartpunkt: ")
    (getdist "\nBogenlänge (+ UZ, - GUZ): ")
  )
)

(defun c:lbogen2( / cen rad ang)
  (setq cen(getpoint"\nMittelpunkt: "))
  (setq rad(getdist cen"\nRadius: "))
  (setq ang(getangle"\nStartwinkel: "))
  (lbogen cen(polar cen ang rad)
    (getdist "\nBogenlänge (+ UZ, - GUZ): ")
  )
)

Gruß
Ralph

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Mai. 2004 12:22    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

Hallo Ralph,

dann sieht es so aus:

Code:

(defun lbogen(cen p1 len / ang1 ang2 ang3 rad)
  (setq rad(distance cen p1))
  (setq ang1(angle cen p1))
  (setq ang2(+ ang1(/ len rad)))
  (if(minusp len)(setq ang3 ang1 ang1 ang2 ang2 ang3 len(abs len)))
  (entmake
    (list
    '(0 . "arc")
      (cons 10 cen)
      (cons 40 rad)
      (cons 50 ang1)
      (cons 51 ang2)
    )
  )
)
(defun c:lbogen1( / cen  oldlayer)
  (setq oldlayer (getvar "CLAYER"))
  (if (tblobjname "LAYER" "0_Li_Cy_013")
    (setvar "CLAYER" "0_Li_Cy_013")
    )
  (lbogen
    (setq cen(getpoint"\nMittelpunkt: "))
    (getpoint cen"\nStartpunkt: ")
    (getdist "\nBogenlänge (+ UZ, - GUZ): ")
  )
  (setvar "CLAYER" oldlayer)
)

(defun c:lbogen2( / cen rad ang oldlayer)
  (setq oldlayer (getvar "CLAYER"))
  (if (tblobjname "LAYER" "0_Li_Cy_013")
    (setvar "CLAYER" "0_Li_Cy_013")
    )
  (setq cen(getpoint"\nMittelpunkt: "))
  (setq rad(getdist cen"\nRadius: "))
  (setq ang(getangle"\nStartwinkel: "))
  (lbogen cen(polar cen ang rad)
    (getdist "\nBogenlänge (+ UZ, - GUZ): ")
  )
  (setvar "CLAYER" oldlayer)
)


Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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


Ex-Mitglied

erstellt am: 06. Mai. 2004 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Holger,

danke für deine Hilfe.
Funktioniert so wie ich es mir vorgestellt habe
Danke
Gruß
Ralph

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)2023 CAD.de | Impressum | Datenschutz