Also von einem Butten einen Makro aufrufen ist eigentlich überhautp kein Problem du musst dazu ja nur in der Menüdatei definieren:
zB:
ID_MeineFun [_Button("Dies ist meine Funtion", Bild_Klein.bmp, Bild_Groß.bmp)]^c^c^p-vbarun Modul.MeineFun
Das Problem ist, irgendwelche Prameter direkt zu übergeben, das geht zwar irgenwie, aber das ist eigentlich nit grad super.
Ich habe es so gelöst:
Ich schreibe mir eine kleines Lisp Programm in dem ich die Prameter in die Registry speicher.
zB.:
(defun c:MeineFun()
(vl-registry-write "HKEY_CURRENT_USER\\Software\\VB and VBA Program Settings\\MeinProg" "PrameterI" "EinstellungI)
(vl-vbarun Modul.MeineFun"))
... und im VBA rufe ich diese Informationen dann wieder über die registry ab
Public Sub MeineFun()
Dim Einstellung As String
'Einstellungen aus der Registrierung abrufen
Einstellung = GetSetting("MeinProg", "PrameterI", "EinstellungI", "Standardeinstellung")
'Weiter Funktion
MsgBox Einstellung
End Sub
---------------
Wenn du jedoch nit zu viel Einstellungen hast, dann kannst du auch die Uservariablen von Autocad benutzen.
USERS1 bis USERS5 --> für Stringvariablen (werden nicht gespeichert)
USERI1 bis USERI5 --> für Ganzzahlen (werden in Zeichnung gespeichert)
USERR1 bis USERR5 --> für Realzahlen (werden in Zeichnung gespeichert)
zB.:
(defun c:MeineFun()
(setvar "USERS1" "Meine Einstellung")
(vl-vbarun Modul.MeineFun"))
... und im VBA rufe ich diese Informationen dann wieder über die registry ab
Public Sub MeineFun()
Dim Einstellung As String
'Einstellungen aus der Registrierung abrufen
Einstellung = ThisDrawing.GetVariable("USERS1")
'Weiter Funktion
MsgBox Einstellung
End Sub
--------------------------
Ich würde jedoch nicht immer das VBA Projekt laden und danach wieder entladen. Da es nicht stört würde ich es gleich am Anfang laden. Dann brauchst du dann nur deine VBA Funktion ausführen.
Ich lasse in meiner Firma 5 VBA Projekt laden und davon ist eines schon 5Mb groß. Das merkt man aber nur einmal beim starten vom AutoCAD... sprich wenn es nit abstürz 1x am Tag *sfg*
lg mike
------------------
Michael Mair
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP