| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Reaktoren auf ATHENA-Befehl (1412 mal gelesen)
|
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003 WIN 7 Prof. SP1 64Bit Intel i7 2,4GHz 8GB PDSU 2013 Vault Prof. 2013
|
erstellt am: 25. Nov. 2009 16:39 <-- editieren / zitieren --> Unities abgeben:
Ich habe von mapcar unter http://www.visuallisp-tutorial.mapcar.net/layreactor.html eine lisp gefunden, die mir grundsätzlich ganz gut passen würde. Es funktioniert auch super, solange ich Autocad-Befehle zum Ansprechen des Reaktors verwende. Da ich ATHENA einsetze und ich einen Befehl von ATHENA ("ATH_HOKO") ebenfalls mit in die Liste aufnehmen will, hab ich einfach mal versucht diesen Befehl bei den ganzen DIM-Befehlen hinten anzureihen, aber es funktioniert nicht! Funktionieren die Reaktoren nur für AutoCAD-Befehle oder was müsste ich noch tun?? Danke im voraus! ------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 25. Nov. 2009 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
Zitat: Original erstellt von wisch: Ich habe von mapcar unter http://www.visuallisp-tutorial.mapcar.net/layreactor.html eine lisp gefunden, die mir grundsätzlich ganz gut passen würde. Es funktioniert auch super, solange ich Autocad-Befehle zum Ansprechen des Reaktors verwende.Da ich ATHENA einsetze und ich einen Befehl von ATHENA ("ATH_HOKO") ebenfalls mit in die Liste aufnehmen will, hab ich einfach mal versucht diesen Befehl bei den ganzen DIM-Befehlen hinten anzureihen, aber es funktioniert nicht! Funktionieren die Reaktoren nur für AutoCAD-Befehle oder was müsste ich noch tun?? Danke im voraus!
Probier mal VL-ACAD-DEFUN, eventuell greifen die Reaktoren dann auch zu (hab's nicht ausprobiert). Ansonsten brauchst Du doch gar keine Reaktoren, weil Du doch den Befehl einfach mit (defun MY-ATH_HOKO () (c:ATH_HOKO) (do-the-reactor-stuff) ) so umdefinieren kannst, dass die gewünschte Funktionalität greift. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 26. Nov. 2009 07:26 <-- editieren / zitieren --> Unities abgeben:
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 26. Nov. 2009 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
Hi, mit "dürftigen" Lisp-Kenntnissen an Reaktoren rumzuspielen halte ich für ziemlich ... übermütig? Aber vielleicht haben wir unterschiedliche Definitionen von "dürftig". Der Reaktor setzt den entsprechenden Layer für das erzeugte Objekt. Eine der ureigensten Funktionen von Applikationen im Allgemeinen. Macht Athena das denn nicht von sich aus? Außerdem solltest du als erstes beim Support mal anfragen, ob man die App-Befehle so überhaupt abfangen kann, oder ob die App nicht einen Riegel in irgendeiner Form vorgeschoben hat. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 26. Nov. 2009 09:20 <-- editieren / zitieren --> Unities abgeben:
Athena hat da schon eine Funktionalität, wo ich Bemaßungen grundsätzlich einen bestimmten Layer zuweisen kann, jedoch nicht in Abhängigkeit des eingestellten Bemaßungsstils/Maßstabs (zumindest nicht im Modell-Bereich). Daher würde ich gerne - für Bemaßungen funktioniert es ja mit obiger lisp ausgezeichnet - diese Funktion auch für die Höhenkoten erweitern. Da dachte ich mir, es müsste doch möglich sein die lisp so zu erweitern, dass der Reaktor auch bei den Athena-Befehlen anspricht. Aber dem ist nicht so und das ist mein Problem. Es käme dann ohnehin noch die Herausforderung dazu, dass ich bei Bemaßungen andere Layer setzen möchte als bei den Höhenkoten, aber soweit bin ich noch gar nicht! Also ich habe aufgrund meiner nun schon längeren Recherche in vielen Forumseinträgen zumindest das Gefühl bekommen, dass man mit Reaktoren vorsichtig sein muss. Aber ist mein Vorhaben schon so riskant? ------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 26. Nov. 2009 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
No risk no fun. Aber es kann ziemlich frustrierend sein, wenn man sich tagelang in ein Lisp-Problem verbeißt und am Ende stellt sich heraus, dass die zusätzliche Applikation grundsätzlich nicht mitspielen will oder lässt. Also frag die App-Entwickler. Am besten mit Beispiel-Code. Wenn die das durchwinken und Athena bei Hökos keine Reaktoren, Eventhandler o.ä. anwirft um Layer, Skalierung, erweiterte Daten zu modifizieren, sollte es grundsätzlich laufen. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 26. Nov. 2009 10:30 <-- editieren / zitieren --> Unities abgeben:
Nun gut, meine ursprüngliche Idee wäre ohnhin gewesen, dass ich mir einen eigenen Werkzeugkasten einrichte wo ich einen eigenen lisp-Befehl vor den Athena-Befehl setze. Somit lass ich alles schön in Ruhe! Dieser lisp-Befehl soll den aktuellen Bemaßungsstil abfragen und den dazugehörigen Layer aktuell setzen (Die Zuornung Bemstil zu Layer sollte in lisp od. eigener cfg erfolgen). Mehr bräuchte ich vorher gar nicht tun! Nur wie gesagt - dazu fehlen mir die lisp-Kenntnisse und ich suche schon tagelang im Forum herum und finde leider nichts... Über Hilfe wäre ich sehr, sehr dankbar! ------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 26. Nov. 2009 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 688 Registriert: 26.07.2005 AutoCAD 2018 Linear, CATS Windows 10
|
erstellt am: 26. Nov. 2009 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
Reicht da nicht ne einfache cond-Schleife? Also aktuellen Bemaßungsstilnamen ermitteln (DIMSTYLE), den dann vergleichen mit cond, nach dem Schema ((wenn Name a)(command -layer "se" "layer a)) Vielleicht noch was mit reinbasteln, dass der aktuelle Layer (vorher) gemerkt wird und hinterher wieder eingestellt wird, nachdem die Höhenkoten drin sind. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 26. Nov. 2009 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für wisch
hallo wisch wenn du (command -layer "se" "layer a) machst dann schau dir einfach mal die var "clayer" an wie sich die verändert "clayer" = der aktuelle layer und CADmium macht genau das was du beschrieben hast sogar mit (cond) den namen des aktuellen bemassungsstiels abfragen und dann den layer entschprechend setzen. gruss steff [Diese Nachricht wurde von Steff179 am 26. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wisch Mitglied
Beiträge: 78 Registriert: 22.05.2003
|
erstellt am: 26. Nov. 2009 16:24 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: du suchst schon Tage lang .... wow ... und nichts gefunden ??na dann : (setq DIMS(getvar "DIMSTYLE")) ;_Dimstlye auslesen (cond ((= DIMS "STANDARD")(setvar "CLAYER" "0")) ;_Layer entsprechend aktuell setzen ((= DIMS "DIMS1")(setvar "CLAYER" "1")) ((= DIMS "DIMS2")(setvar "CLAYER" "3")) ) namen ect. mußt du natürlich anpassen
Vielen Dank, der Ansatz hat mir weitergeholfen!
------------------ wisch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |