Hi,
>> wie kann ich den Code von der Werkzeugpalette aufrufen und als Vaiable einen Blocknamen Übergeben.
Du rufst Deinen (dotNET-)Befehl genauso auf wie den _INSERT-Befehl und gibst den Blocknamen genauso an, wie Du einen Parameter in AutoCAD angibst.
Schreibst Du für AutoCAD im Menü z.B.
^C^C_INSERT;SchraubenBlock;
....oder auch....
^C^C(command "_INSERT" "SchraubenBlock")
Dann kannst Du zum Aufruf Deiner Funktion (ich nehme den Namen myINSERT mal an):
^C^CmyINSERT;SchraubenBlock;
Innerhalb Deines Codes musst Du halt 'nur' einen String abfragen (für den Blocknamen):
Code:
Dim tAcadDoc As Autodesk.AutoCAD.ApplicationServices.Document = Nothing
Try
tAcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim tInputRes As EditorInput.PromptResult = tAcadDoc.Editor.GetString("Blockname: ")
If tInputRes.Status = EditorInput.PromptStatus.OK AndAlso (tInputRes.StringResult.Length > 0) Then
Dim tBlName As String = tInputRes.StringResult
Else
'Fehlerausgabe, wenn notwendig
End If
[.....]
Alternativ kannst Du auch LISP-Funktionen in dotNET schreiben, ist ein wenig anders strukturiert, da kannst Du Parameter direkt mitgeben (und in Deiner LISP-Funktionserweiterung im Header deklarieren).
Braucht nur ein wenig mehr Code als ein Befehlsaufruf, ginge aber auch.
- alfred -
------------------
www.hollaus.at