Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Layer Reaktor

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:  Layer Reaktor (135 / mal gelesen)
nebuCADnezzar
Mitglied



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

Beiträge: 293
Registriert: 17.10.2007

AutoCAD 2023
Inventor 2023
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 05. Feb. 2025 15:57    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

Moinmoin zusammen

Ich habe mir vor etlichen Jahren mal was gebastelt (da hat ich noch etwas mehr Übung im lispeln...) Ich hab mir dass Ding seit Jahren immer angepasst (dass is nich sooooo schwierig das habi immer hinbekommen...) Jetz bin ich verwirrt, ich sehe nich wiso dass nicht tut bzw sogar nur Teilweise:

Ansichtsfenster werden auf den richtigen Layer gesetzt, aber nach abschluss nicht auf den previus zurückgesetzt
Punkte und Führungen da passiert mal einfach gar nix

chatgpt fand auch keine Kommafehler oder sowas (oder sonstwas)

Vieleicht kann ja eins euer menschlichen lisp spezialisten Augen mal drüber gucken? Weiss nicht vieleicht sind befehle alt und nicht mehr unterstützt oder...???


Code:

;allgemeinens
; Anfang der Datei http://activex.autolisp.info/layreactor.html


; 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)'("_plot""plot"))
;      (plot-start-callback reactor argslist)
;    )
    ( (member(car argslist)'("-VPORTS""-MANSFEN""AFENSTER""-AFENSTER"))
      (vport-start-callback reactor argslist)
    )
    ( (member(car argslist)'("punkt" "_point"))
      (punkt-start-callback reactor argslist)
    )
    ( (member(car argslist)'("_mleader""MFÜHRUNG" "BEMFÜHRUNG" "FÜHRUNG" "SFÜHRUNG"))
      (fuhrung-start-callback reactor argslist)
    )
  )
)

; allgemeine Cmd-Callback-Funktion
; (nach der Befehlsausführung)
(defun cmd-end-callback(reactor argslist / )
  (cond
   
;    ( (member(car argslist)'("_plot""plot"))
;      (plot-end-callback)
;    )
    ( (member(car argslist)'("-MANSFEN""AFENSTER"))
      (vport-end-callback)
    )   
    ( (member(car argslist)'("punkt" "_point"))
      (punkt-end-callback)
    )   
    ( (member(car argslist)'("_mleader""MFÜHRUNG" "BEMFÜHRUNG" "FÜHRUNG" "SFÜHRUNG"))
      (fuhrung-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 Ansichtsfenster
(defun vport-start-callback(reactor argslist / layer)
  (setq layer "Defpoints")
  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)

; Nachher-Callback für Ansichtsfenster
(defun vport-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)

; Vorher-Callback für Punkt
(defun punkt-start-callback(reactor argslist / layer)
  (setq layer "Defpoints")
  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
 
; Nachher-Callback für Punkt
(defun punkt-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)


; Vorher-Callback für Führung
(defun fuhrung-start-callback(reactor argslist / layer)
  (setq layer "fp_text")
  (setq *previous-layer*(get-current-layer))
  (set-layer layer)
)
 
; Nachher-Callback für Führung
(defun fuhrung-end-callback( / )
  (if *previous-layer*
    (progn
      (vla-put-activelayer
        (current-document)
        *previous-layer*
      )
      (setq *previous-layer* nil)
    )
  )
)

; Vorher-Callback für Plot
;(defun plot-start-callback(reactor argslist / )
;  (command "BlocksToLayer0")
;  (vl-cmdf)  ; Warten, bis der Befehl abgeschlossen ist
;)

; Vorher-Callback für Plot
;(defun plot-start-callback(reactor argslist / )
;  (BlocksToLayer0)  ; Direktes Aufrufen der Funktion BlocksToLayer0
;)

; Nachher-Callback für Plot
;(defun plot-end-callback( / )
 
;)

(princ
    (strcat
        "\n**  ForsterReaktoren.lsp _ Version 2.1 loaded "
    )
)


; Sicherstellen, dass die ActiveX-
; Funktionen geladen sind
(vl-load-com)
; Reaktoren beim Laden starten
(add-cmd-reactors)


; Ende Datei


Schöne Grüsse
nebu

------------------
Es ist kein Zeichen geistiger Gesundheit, gut angepasst an eine zutiefst kranke Gesellschaft zu sein.

Jiddu Krishnamurti

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

Alles

erstellt am: 05. Feb. 2025 16:38    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Ich habe es jetzt mal überflogen und würde auf den ersten Blick sagen: Das klappte noch nie.
(vielleicht mit 1-2 Ausnahmen, so genau habe ich nicht geschaut, oder ist das jetzt die "verhunzte" Version?)

Sicher das du die "richtige Kopie", also Version, gegriffen hast?


Na egal, Hauptpunkt ist, neben der ggf. fehlenden Layer-Erstellung (code vorhanden, wird aber nicht genutzt!?)
dein Vergleich von aktuellem Befehlsnamen und einer Liste von Namen in den COND- statements

Die passen nur selten zusammen.
Beispiel "_mleader", das passt gleich doppelt nicht
1. gibt es keinen Befehl "_mleader" und
2. wird der Befehlsname MLEADER GROSSGESCHRIEBEN.

Also Debugger an und schauen was in (car argslist) geliefert wird, dann kannst du deine member-Listen anpassen.

 

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

VMichl
Mitglied



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

Beiträge: 227
Registriert: 04.01.2001

AutoCAD, LT, Inventor, Revit, Map, LISP...
Firma: ARKANCE (CAD Studio)

erstellt am: 06. Feb. 2025 08: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 nebuCADnezzar 10 Unities + Antwort hilfreich

Verwenden Sie niemals ChatGPT, um Ihre Anwendungen zu programmieren. Die gewünschte Funktionalität ist ähnlich dem, der FLAY-Reaktor bietet:
https://apps.autodesk.com/ACD/de/Detail/Index?id=7021100717958412164&appLang=en&os=Win32_64

V.Michl, www.arkance.world - www.cadforum.cz

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

archtools
Mitglied



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

Beiträge: 979
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 06. Feb. 2025 09: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 Nur für nebuCADnezzar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von VMichl:
Verwenden Sie niemals ChatGPT, um Ihre Anwendungen zu programmieren.

Warum? Wie wird diese steile These begründet?

Man sollte alles verwenden, was funktioniert. Ich habe hier im Forum gerade eben DeepSeek gegen ChatGPT programmieren lassen. ChatGPT war zwar deutlich schlechter, aber solange es was nutzt, ist es OK.

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

Alles

erstellt am: 06. Feb. 2025 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 Nur für nebuCADnezzar 10 Unities + Antwort hilfreich

Das kann ich übersetzen:
"Verwenden Sie niemals ChatGPT, um Ihre Anwendungen zu programmieren." => WENN DU KEINE AHNUNG HAST

Aber das ist hier ohnhin nicht der Fall gewesen.

Der von mir wirklich sehr sehr geschätzte vladimir wollte doch nur, neben der User Hilfe an sich,
auf (s)ein funktionierendes 4free Tool aufmerksam machen.

_


Als Daumenregel unterstütze ich die These und würde noch aufstocken:
"Verwenden Sie niemals ChatGPT, um Ihre Anwendungen zu programmieren." => WENN DU KEINE AHNUNG HAST
und wenn du es doch machst, dann verschone die Menschheit mit deinen Fragen dazu.

Wer hingegen wirklich lernen will, der ist sicher immer und überall willkommen in Foren dieser Welt.

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