Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Reaktor wieder laden

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:  Reaktor wieder laden (1378 mal gelesen)
Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 25. Mrz. 2008 09: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

Mit (vlr-remove-all) kann ich alle Reaktoren löschen.
Aber wie kann ich die dann wieder laden.
Wenn ich die Zeichnung schliesse und wiedr öffne dann ist alles wieder ok, das muss aber auch anders gehn.
Danke

------------------
Heinz 

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 25. Mrz. 2008 09: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 Dober Heinz 10 Unities + Antwort hilfreich

Hallo Heinz,
einfach mit LOAD die LISP-Datei laden, in der der Reactor definiert ist.

------------------
viele Grüße

Jörn

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 25. Mrz. 2008 09:35    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 joern bosse

Das geht leider nicht so. Bekomme immer ein nil, zurück.
Das hab ich e schon immer so getestet, funktioniert aber nicht.

------------------
Heinz 

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 25. Mrz. 2008 12:01    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

Also es will nicht funktionieren
Lade den Reaktor (load "bem_reaktor")
funktioniert alles.
lösche den Reaktor (vlr-remove-all) klappt auch alles.
Aber wenn ich den Reaktor wieder laden will (load "bem_reaktor") bekomme ich immer ein nil zurück.

Warum ?

------------------
Heinz 

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Mrz. 2008 12:33    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 Dober Heinz 10 Unities + Antwort hilfreich

Weil das Lisp "bem_reaktor" vielleicht nil zurückgibt? Was liefert dir denn (vlr-reactors) vor und nach dem Laden?

und was macht
(if (=(load "splinecurve.LSP" "FEHLER")"FEHLER")
  (prompt "\n Fehler beim Laden von bem_reaktor")
  (prompt "\n bem_reaktor erfolgreich geladen")
)

------------------
  - 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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 25. Mrz. 2008 12:46    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 Thomas

vor dem Laden Command: (vlr-reactors)
nil

nach dem Laden Command: (vlr-reactors)
((:VLR-Command-Reactor #<VLR-Command-Reactor> #<VLR-Command-Reactor> ))

und was macht
(if (=(load "splinecurve.LSP" "FEHLER")"FEHLER")
  (prompt "\n Fehler beim Laden von bem_reaktor")
  (prompt "\n bem_reaktor erfolgreich geladen")
)

Command: 'VLIDE
Fehler beim Laden von bem_reaktor
Command:

------------------
Heinz 

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Mrz. 2008 12: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 Dober Heinz 10 Unities + Antwort hilfreich

"splinecurve.LSP" haste durch "bem-reaktor" ersetzt ?
(hab ich von mir bloß reinkopiert, sorry)


das (vlr-reactors) .. zeigt dir ja, das der Reaktor initialisiert worden ist ..

ansonsten versteh ich nicht, was du willst ??

------------------
  - 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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 25. Mrz. 2008 13:00    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 Thomas

Mit denem Beispiel ist er geladen, aber der Reaktor funktioniert nicht mehr.
Wenn ich die Zeichnung öffne, und den Reaktor laden funktioniert er.
Wen ich Reaktor mit (vlr-remove-all) lösche, und ich ihn dann wieder laden will, (in der gleichen Zeichnung) ist er geladen aber er funktioniert nicht mehr.
Das ist mein Problem.

------------------
Heinz 

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 25. Mrz. 2008 13:08    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 Thomas

So sieht das mit deinem Lisp aus

(if (=(load "Bem_Reaktor.LSP" "FEHLER")"FEHLER")
  (prompt "\n Fehler beim Laden von Bem_Reaktor")
  (prompt "\n Bem_Reaktor erfolgreich geladen")
)

und das bekomme ich zurück

Command: 'VLIDE
Bem_Reaktor erfolgreich geladen
Command:
Command: 'VLIDE
Command:
Command: (vlr-reactors)
nil

------------------
Heinz 

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Mrz. 2008 11:01    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 Dober Heinz 10 Unities + Antwort hilfreich

Tja ohne dass Du uns Dein bem_reaktor.lsp zeigst, werden wir wohl nur raten können.

Ich vermute, dass der Reaktor einer Lispvariable zugewiesen wird, und diese vor dem setzten des Reaktors abgefragt wird.
Mit vlr-remove-all löscht Du zwar die Reaktoren, aber wegen den gesetzten Lispvariablen glaubt dein Lisp-Programm, dass diese noch immer gesetzt sind, und definiert sie nicht neu. So in etwa kann ich es mir vorstellen.

[Diese Nachricht wurde von fuchsi am 28. Mrz. 2008 editiert.]

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 31. Mrz. 2008 10: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

Hallo Fuchsi

Hier das lisp

Code:
; Anfang der Datei
; Funktion zum Setzen des Reaktors
(defun add-cmd-reactors( / )
  (vl-load-com)
  (vlr-command-reactor nil
    '( (:vlr-commandWillStart . cmd-start-callback))
  )
  (vlr-command-reactor nil
    '( (:vlr-commandEnded . cmd-end-callback))
  )
)
; Funktion zum Setzen der Reaktoren
(defun add-cmd-reactors( / )
  (vl-load-com)
  (if(not *cmd-reactor-added*)
    (progn
      (vlr-command-reactor nil
      '( (:vlr-commandWillStart . cmd-start-callback))
      )
      (vlr-command-reactor nil
      '( (:vlr-commandEnded . cmd-end-callback))
      )
      (setq *cmd-reactor-added* 'T)
    )
  )
)
; allgemeine Cmd-Callback-Funktion
; (vor der Befehlsausführung)
(defun cmd-start-callback(reactor argslist / )
  (cond
    ( (member(car argslist)'("DIMLINEAR""DIMALIGNED"
                            "DIMRADIUS""DIMANGULAR"
                            "DIMBASELINE""DIMDIAMETER"
                            "DIMCONTINUE""QLEADER"))
      (dim-start-callback reactor argslist)
    )
    ( (=(car argslist)"BHATCH")
      (bhatch-start-callback)
    )
  )
)
; allgemeine Cmd-Callback-Funktion
; (nach der Befehlsausführung)
(defun cmd-end-callback(reactor argslist / )
  (cond
    ( (member(car argslist)'("DIMLINEAR""DIMALIGNED"
                            "DIMRADIUS""DIMANGULAR"
                            "DIMBASELINE""DIMDIAMETER"
                            "DIMCONTINUE""QLEADER"))
      (dim-end-callback)
    )
    ( (=(car argslist)"BHATCH")
      (bhatch-end-callback)
    )
  )
)
; Macht einen Layer aktuell
(defun set-layer(name / )
  (vla-put-ActiveLayer
    (current-document)
    (vla-item(document-layers)name)
  )
)
; gibt das Vla-Object zu einem
; Layernamen zurück
(defun layer-object(name / result)
  (vlax-for layer(document-layers)
    (if
      (=(strcase name)
        (strcase(vla-get-name layer))
      )
      (setq result layer)
    )
  )
  result
)
; Erzeugt einen neuen Layer
(defun create-layer(name props / newlayer)
  (setq newlayer
    (vla-add (document-layers) name)
  )
  (foreach prop props
    (vlax-put-property
      newlayer (car prop)(cdr prop)
    )
  )
  newlayer
)
; Ermittelt den aktuellen Layer
(defun get-current-layer( / )
  (vla-get-activelayer
    (current-document)
  )
)
; Gibt die Layer-Collection zurück
(defun document-layers( / )
  (vla-get-layers
    (current-document)
  )
)
; gibt die aktuelle Zeichnung zurück
(defun current-document( / )
  (vla-get-activedocument
    (vlax-get-acad-object)
  )
)
; Vorher-Callback für Schraffuren
(defun bhatch-start-callback( / layer)
  (setq layer "--E-Schraffuren")
  (if(not(layer-object layer))
    (create-layer layer '((Color . 131)))
  )  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
; Nachher-Callback für Schraffuren
(defun bhatch-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)

; Vorher-Callback für Bemaßungen
(defun dim-start-callback(reactor argslist / layer)
  (setq layer "--E-Bemassung-Starkstrom")
  (if(not(layer-object layer))
    (create-layer layer '((Color . 5)))
  )
  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
; Nachher-Callback für Bemaßungen
(defun dim-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)
; Sicherstellen, dass die ActiveX-
; Funktionen geladen sind
(vl-load-com)
; Reaktoren beim Laden starten
(add-cmd-reactors)
; Ende Datei


------------------
Heinz 

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 31. Mrz. 2008 10: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 Dober Heinz 10 Unities + Antwort hilfreich

wie fuchsi schon sagt ... es wird auf ne gesetzte Variable geprüft :

(if(not *cmd-reactor-added*)... und wenn die noch 'T ist .. wird eben der Reaktor nicht noch mal initialisiert..

------------------
  - 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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 31. Mrz. 2008 12:05    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

danke CADmium

Und wie kann ich diese Problem lösen.


Danke

------------------
Heinz 

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 31. Mrz. 2008 12:21    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 Dober Heinz 10 Unities + Antwort hilfreich

na indem du die Variable nach vlr-remove oder vlr-remove-all auch auf nil setzt, dir am besten dafür eine Routine bastelst
die

am besten Reaktorobjekte merken ...
(setq START(vlr-command-reactor nil
            '( (:vlr-commandWillStart . cmd-start-callback))
          )
)
und dann später so löschen
(vlr-remove START)
(setq *cmd-reactor-added* nil)


oder bei Programmstart
(vlr-reactors)
auswerten und dann gegebenenfalls
(setq *cmd-reactor-added* nil)
setzen

------------------
  - 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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 31. Mrz. 2008 12:25    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

@ CADmium

Danke

------------------
Heinz 

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 31. Mrz. 2008 14:32    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 Dober Heinz 10 Unities + Antwort hilfreich

Code:
; Anfang der Datei
; Funktion zum Setzen des Reaktors
(defun add-cmd-reactors( / )
  (vl-load-com)
  (vlr-command-reactor nil
    '((:vlr-commandWillStart . cmd-start-callback)
  )
  (vlr-command-reactor nil
    '( (:vlr-commandEnded . cmd-end-callback))
  )
)

; Funktion zum Setzen der Reaktoren
(defun add-cmd-reactors( / )
  (vl-load-com)
  (if(not *cmd-reactor-added*)
    (progn
      (vlr-command-reactor nil
      '( (:vlr-commandWillStart . cmd-start-callback))
      )
      (vlr-command-reactor nil
      '( (:vlr-commandEnded . cmd-end-callback))
      )
      (setq *cmd-reactor-added* 'T)
    )
  )
)

Amerkungen
1.
Das erste Defun (fett markiert) ist abolut unnötig, da es mit dem 2. defun überschrieben wird!

2.
Da fehlt noch eine Reaktor
Nämlich command_cancelled. Damit solte auch sichergestellt werden, wenn eine Befehl mit ESC abgebrochen wird, dass z.B.: der Layer wieder zurückgestellt wird.

Code:

; Funktion zum Setzen der Reaktoren
(defun add-cmd-reactors( / )
  (vl-load-com)
  (if(not *cmd-reactor-added*)
    (setq *cmd-reactor-added*
      (vlr-command-reactor nil
        '((:vlr-commandWillStart . cmd-start-callback)
          (:vlr-commandEnded . cmd-end-callback)
          (:vlr-commandCancelled . cmd-end-callback)
        )
      )
      )
  )
)


------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 31. Mrz. 2008 14:37    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

@ fuchsi

Danke werde das änder.

PS:
Sind e fast Nachhbarn, bin aus Amstetten

------------------
Heinz 

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 07. Apr. 2008 08:24    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
Danke für eure Hilfe
Habe es so gelöst, und es funktioniert

Code:
; Funktion zum Setzen der Reaktoren
(defun c:reaein()
  (vl-load-com)
  (if(not com:react)
    (progn
    (setq com:react
      (vlr-command-reactor nil
      ' ((:vlr-commandWillStart . cmd-start-callback)
          (:vlr-commandEnded . cmd-end-callback)
  (:vlr-commandCancelled . cmd-end-callback))))
  (princ "\n Reactor EIN ")
        ) ;ende progn
      ) ;ende if
  (princ)  
  ) ;ende  c:reaein

(defun c:reaaus()
  (if com:react
    (progn
      (vlr-remove com:react)
      (setq com:react nil)
      (princ "\n Reactor AUS ")
      ) ; ende progn
    ) ; ende if
  ) ; ende aus  c:reaaus

; allgemeine Cmd-Callback-Funktion
; (vor der Befehlsausführung)

(defun cmd-start-callback(reactor argslist / )
  (cond
    ( (member(car argslist)'("DIMLINEAR""DIMALIGNED"
                            "DIMRADIUS""DIMANGULAR"
                            "DIMBASELINE""DIMDIAMETER"
                            "DIMCONTINUE""QLEADER"))
      (dim-start-callback reactor argslist)
    )
    ( (=(car argslist)"BHATCH")
      (bhatch-start-callback)
    )
  )
)
; allgemeine Cmd-Callback-Funktion
; (nach der Befehlsausführung)
(defun cmd-end-callback(reactor argslist / )
  (cond
    ( (member(car argslist)'("DIMLINEAR""DIMALIGNED"
                            "DIMRADIUS""DIMANGULAR"
                            "DIMBASELINE""DIMDIAMETER"
                            "DIMCONTINUE""QLEADER"))
      (dim-end-callback)
    )
    ( (=(car argslist)"BHATCH")
      (bhatch-end-callback)
    )
  )
)
; Macht einen Layer aktuell
(defun set-layer(name / )
  (vla-put-ActiveLayer
    (current-document)
    (vla-item(document-layers)name)
  )
)
; gibt das Vla-Object zu einem
; Layernamen zurück
(defun layer-object(name / result)
  (vlax-for layer(document-layers)
    (if
      (=(strcase name)
        (strcase(vla-get-name layer))
      )
      (setq result layer)
    )
  )
  result
)
; Erzeugt einen neuen Layer
(defun create-layer(name props / newlayer)
  (setq newlayer
    (vla-add (document-layers) name)
  )
  (foreach prop props
    (vlax-put-property
      newlayer (car prop)(cdr prop)
    )
  )
  newlayer
)
; Ermittelt den aktuellen Layer
(defun get-current-layer( / )
  (vla-get-activelayer
    (current-document)
  )
)
; Gibt die Layer-Collection zurück
(defun document-layers( / )
  (vla-get-layers
    (current-document)
  )
)
; gibt die aktuelle Zeichnung zurück
(defun current-document( / )
  (vla-get-activedocument
    (vlax-get-acad-object)
  )
)
; Vorher-Callback für Schraffuren
(defun bhatch-start-callback( / layer)
  (setq layer "--E-Schraffuren")
  (if(not(layer-object layer))
    (create-layer layer '((Color . 131)))
  )  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
; Nachher-Callback für Schraffuren
(defun bhatch-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)

; Vorher-Callback für Bemaßungen
(defun dim-start-callback(reactor argslist / layer)
  (setq layer "--E-Bemassung-Starkstrom")
  (if(not(layer-object layer))
    (create-layer layer '((Color . 5)))
  )
  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
; Nachher-Callback für Bemaßungen
(defun dim-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)



------------------
Heinz 

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