Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Mit sendcommand eine Lisp-Funktion aufrufen

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Mit sendcommand eine Lisp-Funktion aufrufen (1251 mal gelesen)
steinemann09
Mitglied
Dipl. Ing.


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

Beiträge: 47
Registriert: 27.08.2008

AutoCAD 2005, AutoCAD 2011

erstellt am: 09. Apr. 2009 13: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

Hallo Leute,
Ich habe ein Problem mit dem sendcommand-Befehl. Mir gelingt es zwar einen Parameter an den Lispaufruf zu übergeben, aber auf den Rückgabewert der Lispfunktion kann ich in
VBA nicht zugreifen. Hat jemand eventuell eine Idee dazu?
_____________________________________________________________
Sub test()
ThisDrawing.Utility.GetEntity BlockRef, inspkt, "Blockwählen"
oi = Attributes(3).ObjectID ' Objekt-Id des 3. Attributwertes
hOBJEKTID = oi
ThisDrawing.SendCommand "(oi2la " & hOBJEKTID & ")" & vbCr ' Die Object_Id des Blockes wird
                                                            ' an eine Lispfunktion übergeben
' an dieser Stelle möchte ich den Rückgabe Wert der
' Lispfunktion weiterverarbeiten
End Sub

_______________________________________________________________


Der Lisp-Qellcode

(defun oi2la(hOBJEKTID )

; Routine zur Ermittlung des Layernamens aus der Objekt-ID
(setq DOC(vla-get-activedocument(vlax-get-acad-object)))
(setq OBJ2(vla-ObjectIDToObject DOC hOBJEKTID)); hOBJEKTID ist die Objekt-Id des Blockes
(setq OBJ3(vlax-vla-object->ename OBJ2))
(setq layer_n (cdr (assoc 8 (entget OBJ3))))

)

----------------------------------------------
Der Rückgabewert der Lispfunktion ist der Inhalt der Varable layer_n der Layername des Blockes als String. Wie komme ich an ihn in VBA heran
Ein Tipp wäre sehr hilfreich für mich.


Gruß Volker

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9803
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 09. Apr. 2009 14: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 Nur für steinemann09 10 Unities + Antwort hilfreich

Lisp an VBA ist leider nur über workarounds möglich.
Im Beispiel bietet sich z.B. USERS1 zur Ablage des Layernamens an.
Aber warum von hinten durch die Brust ins Auge? Warum nicht alles in Lisp oder VBA schreiben?

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

steinemann09
Mitglied
Dipl. Ing.


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

Beiträge: 47
Registriert: 27.08.2008

AutoCAD 2005, AutoCAD 2011

erstellt am: 09. Apr. 2009 15:15    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 Udo,

Zitat"Warum nicht alles in Lisp oder VBA schreiben?"

In meinen letzten Beitrag habe ich das ausführlich erläutert.

"Über das Schriftfeld eines Attributwertes die damit verknüpfte Polylinie ermitteln " -ist leider nicht in VBA möglich

- deshalb der Klimmzug

Ich habe etwas umständlich mittlerweile das Problem gelöst, in dem ich die über die Funktion  GetLispSymbol( siehe Anhang von Henning "Lispschnittstelle_fuer_VBA.pdf") mir den Wert in VBA ermitteln lassen kann.

Die Lispfunktion war nur ein Beispiel, jetzt lasse ich in Lisp, aus der ObjektId des Blockes  den Layernamen der verknüpften Polylinie
ermitteln und kann so überprüfen, ob er Layername korrekt ist.


Gruß Volker

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