| |
| 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 – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: vl-ide keywords (7530 mal gelesen)
|
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 14. Nov. 2008 09:24 <-- editieren / zitieren --> Unities abgeben:
Wie viele Lispler hab auch ich eine inzwischen umfangreiche Sammlung von praktischen Funktionen die ich in einer vielzahl von Programmen verwende. Jetzt kann ich in Notpad++ hergehen und meine eigenen Funktionen in eine Liste eintragen sodas sie im Code farblich hervorgehoben werden. Weil ich aber auch sehr oft mit der vl-ide arbeite frage ich mich, ob schon irgendjemand versucht hat, eigene Funktionswörter in die vl-ide einzubinden. Hat jemand von euch schon mal versucht eine der ide-dlls (welche?) mit reshack oder ähnlichen zu ändern? Oder kann ich in der vl-ide irgendwo einfach meine Funktionen eintragen (hab aber keine Möglichkeit bisher gefunden)? Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Nov. 2008 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
Es werden die per externer dll / arx vorhandenen Funktionen farblich gekennzeichet ... du kannst dir z.B. per .NET ne Funktionsbibliothek erstellen, die per netload laden und schon werden die Funktionen eingefärbt dargestellt. In Lisp gibt es keine User-eigenen Funktionen, nur Listen und Symbole ... ------------------ - 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 |
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 14. Nov. 2008 10:09 <-- editieren / zitieren --> Unities abgeben:
Verstehe. Nun ja, wir sind eh gerade dabei, ein paar andauernd genutzte Lisps nach C# zu portieren. Thx und Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 21. Apr. 2009 11:42 <-- editieren / zitieren --> Unities abgeben:
geht doch. Code: (defun codecolor () (setq functionlist (list 'getattrib 'setattrib 'getBlname 'make_dotted 'dotted->list 'table->list 'getattx 'getatty 'str-pos 'str-tok 'str-div 'str-divset 'stringtolist 'haschar 'is_empty_p 'getcoords 'getlayer 'gettype 'getpoly 'pline 'islocked?)) (eval (list 'pragma (list 'quote (list (cons 'unprotect-assign functionList)))))
(eval (list 'pragma (list 'quote (list (cons 'protect-assign functionList))))) )
Ich muß aber zugeben, das das nicht auf meinem Mist gewachsen ist... Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 21. Apr. 2009 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
|
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 21. Apr. 2009 12:13 <-- editieren / zitieren --> Unities abgeben:
Oh. Danke Thomas, hab auf die Quellenangabe vergessen. Mittagessen war nahe... Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Apr. 2009 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
.. was wären denn dabei gewesen, die pragmafunktion adeskseitig zu dokumentieren .. ? .. nunja .. thx fürs finden. ------------------ - 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 |
Wolfgang S Mitglied CADaver
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: 28. Apr. 2009 06:48 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
bei Reini Urban gefunden: http://gd.tuwien.ac.at/faqs/allfaqs/comp.cad.autocad/comp.cad.autocad_A utoLISP_FAQ_(part_1_2)_-_general Subject: [17] How to export Visual Lisp functions to AutoLISP/AutoCAD?
C: functions are automatically exported to AutoLISP. Plain vlisp/vill lisp functions must be exported either with (vl-acad-defun funcname) or their symbols may be exported with a special compiler pragma, defined either in the LSP file or in the GLD (global declarations) file. Better use special prefixes for such functions. .GLD: (AUTOEXPORT-to-ACAD-PREFIX ;| name prefixes for functions to be autoexported to AutoCAD: (strings) |; "myx-*" ) or one by one .LSP: (pragma '((export-to-acad myx-func1 myx-func2))) Note: There may exist known bugs in vlisp and vill with lists of atomic symbols and dotted pair lists in such functions arguments and return values. See [7]. Functions exported by external apps which are used in your application must be defined via XDF. Symbols (variables) whose values are updated in Visual Lisp and which values are also used in AutoLISP or AutoCAD (the menu e.g.), first may be marked for the compiler to be external with: (pragma '((not-localize myx:symbol))) but the value must be exported with (vlisp-export-symbol 'myx:symbol) each time the value is changed in Visual Lisp and control is returned to AutoCAD to be able to get the latest value in AutoLISP or in AutoCAD with !myx:symbol You may forget this whole chapter with AutoCAD 2000, however you might need to export your function from the protected namespace then with VL-DOC-SET. See also http://www.autodesk.com/support/techdocs/td17/td175363.htm allerdings muss ich gestehen, daß ich hier mit meinem momentanen Wissensstand auch kein Licht am Ende des Tunnels seh. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrassHopper Mitglied CAD-Betreuer
Beiträge: 22 Registriert: 18.03.2006
|
erstellt am: 29. Mai. 2009 18:35 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
Hallo Martin, ich hab hier mal eine Funktion gebbaut die genau das macht was du willst. Abgeschaut hab ich einen Teil aus AnsiCommonLisp. Die Funktion nennt sich CL:DEFCONSTANT Aufruf : (cl:defconstant '(Name Value)) Rückgabe: entweder Value oder Nil Es wird eine Liste mit Konstanten angelegt um bei nochmaligem Aufruf eine Meldung auszugeben dass dieses Symbol schon eine Konstante ist. Die Liste trägt den Namen *CL-PROTECTED-SYMBOLS* Der Trick an der Sache ich erzeuge eine neue Datei und lade diese. Beim Laden geht AutoCAD vom TOP-Level aus (so scheint's mir) Funktion: siehe Anhang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrassHopper Mitglied CAD-Betreuer
Beiträge: 22 Registriert: 18.03.2006
|
erstellt am: 30. Mai. 2009 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
Hallo zusammen, ich hab das Programm nochmals umgebaut da ich eine Fehler drin hatte. Es sind allerdings noch vier weitere Programme dazu gekommen. cl:format gibt Formatierte Strings aus Beschreibung mit (cl:format '-? nil nil) Aufruf: (cl:format stream "Destination-String" '(values ...) stream t => Ausgabe auf Konsole stream nil => Rückgabe als String stream #<File ...> => Ausgabe in Datei Destination-String: jedes ~A wird durch die Ausgabe mit (vl-princ-to-string value) ersetzt jedes ~S wird durch die Ausgabe mit (vl-prin1-to-string value) ersetzt jedes ~D wird durch (itoa IntegerValue) ersetzt jedes ~,<Anzahl Stellen> wird durch (rtos numberValue 2 <Anzahl Stellen>) ersetzt jedes ~@ wird durch die Elemente der ValueList ersetzt (cl:format nil "das sind meine kinder ~@" '((Heike Gabi Manni))) => "das sind meine kinder HEIKE GABI MANNI" Beispiel: (cl:format nil "~A hat eine Seitenlänge von ~,3m und eine Höhe von ~Dm\nDas ergibt einen umbauten Raum von ~,3m³" (list "Der Quader" 2.5 4 (* 2.5 2.5 4))) Ausgabe: "Der Quader hat eine Seitenlänge von 2.500m und eine Höhe von 4m Das ergibt einen umbauten Raum von 25m³" -------------------------- Eine Prädikat-Funktion zum Testen auf Typ String (defun CL:STRINGP (string) (eq (type string) 'str)) cl:error Ausgabe einer Fehlermeldung wenn ein schon verwendetes Symbol umdefiniert werden soll (cl:error "Fehlermeldung" argLst) Formatierung der "Fehlermeldung" wie bei cl:Format (cl:inplst2lst '(1 . 2)) => '(1 2) wandelt AssocListen in normale Listen um (cl:gensym-nil) erzeugt ein eineindeutiges Symbol #:G<Nummer> Konstante in AutoLisp definieren (CL:DEFCONSTANT 'name value) Beispiel: (CL:DEFCONSTANT 'MeineSymbolListe '(Das ist meine Symbolliste)) => (DAS IST MEINE SYMBOLLISTE) (CL:DEFCONSTANT 'MeineSymbolListe 5) => Das Symbol MeineSymbolListe ist ein geschütztes Symbol (type LIST) und kann nicht benutzt werden" Konstante wieder löschen (CL:Erase-Protected-Symbol 'Symbol-Name) CL:Erase-Protected-Symbol entfernt den Schutz des Symbols und setzt den Wert des Symbols auf nil So klappt's ganz gut
Manfred (GrassHopper) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrassHopper Mitglied CAD-Betreuer
Beiträge: 22 Registriert: 18.03.2006
|
erstellt am: 31. Mai. 2009 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
Hallo zusammen, Ich hab Noch ein kleiner Wurm innerhalb der CL:ERROR Funktion drin deswegen kann die Datei nicht geladen werden. Alte Funktion: ;| (defun cl:error (msg args / msgn) (cond ((and (vl-symbolp msg) (eq '-? msg)) (princ (VL-PRIN1-TO-STRING '(cl:Error "Fehlermeldung Formatierung siehe (cl:Format '-? nil nil)" [Wert | nil | '(wert1 wert2 ...)))) ==> Hier hab ich das Anführungszeichen an der falschen Stelle (doof oder?) (prin1)) (CL:STRINGP msg) (setq msgn(cl:format nil (strcat "\nEs ist ein Fehler in Ihrer Anwendung aufgetreten\nBeschreibung:\n" msg) (if (or (vl-consp args) (null args)) args (list args)))) (cl:format t msgn nil) (VL-EXIT-WITH-ERROR msgn)) ((numberp msg) (VL-EXIT-WITH-VALUE msg)))) |; durch neue ersetzen (defun cl:error (msg args / msgn) (cond ((and (vl-symbolp msg) (eq '-? msg)) (princ (VL-PRIN1-TO-STRING '(cl:Error "Fehlermeldung Formatierung siehe (cl:Format '-? nil nil) [Wert | nil ]| '(wert1 wert2 ...))"))) (prin1)) (CL:STRINGP msg) (setq msgn(cl:format nil (strcat "\nEs ist ein Fehler in Ihrer Anwendung aufgetreten\nBeschreibung:\n" msg) (if (or (vl-consp args) (null args)) args (list args)))) (cl:format t msgn nil) (VL-EXIT-WITH-ERROR msgn)) ((numberp msg) (VL-EXIT-WITH-VALUE msg))) Schönen Wochenstart Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 30. Okt. 2009 08:27 <-- editieren / zitieren --> Unities abgeben: Nur für Hunchback
Hat noch jemand weitere Informationen über pragma gefunden? Ist es damit möglich , aus der (atoms-family 1)-Rückgabe alle geschützten Symbole herauszufiltern ? ------------------ - 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 |