| | | 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: VS2008 VB.Net acDoc.SendStringToExecute (2844 mal gelesen)
|
ManuelKuhn Mitglied Techniker und DvD :-)
Beiträge: 100 Registriert: 23.03.2005 Intel XEON W3503 @ 2.4GHz 8 GB DDR3 NVIDIA QUADRO FX3800 WinXP Prof SP3 x64 ACAD 2007 + ProSteel 17.2/ 18 ACAD 2010 + ProSteel V8i S3 Rhino 3D V4 Autodesk VIZ-2006 ( bald vielleicht Max2011 :-D )
|
erstellt am: 24. Feb. 2011 14:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich hätte mal ne Frage, an die VB.Net Fraktion (ich stelle sie hier, da es leider kein AutoCAD.Net Forum gibt) Ich bin gerade dabei die ersten gehversuche mit VisualStudio und VB.NET zu machen und muss für mein Programm eine zusätzliche dll in AutoCad einladen, sprich nachdem ich mein Plugin mit netload geladen habe, soll automatisch die entsprechende dll mitgeladen werden. Mein Gedanke war das genze so anzugehen; Code:
Imports System Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.RuntimePublic Class Class1 <CommandMethod("net_com")> _ Public Sub Main() Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument acDoc.SendStringToExecute("filedia 0 ", True, False, True) acDoc.SendStringToExecute("netload C:\Program Files\Common Files\Bibliothek.dll ", True, False, True) acDoc.SendStringToExecute("filedia 1 ", True, False, True) End Sub End Class
Nur leider funktioniert das ganze nicht, denn im Abschnitt ("netload C:\Program Files\Common Files\Bibliothek.dll ", True, False, True) bleibt AutoCAD "hängen", da es anscheinend das letzte Leerzeichnen nicht als ENTER erkennt, sondern denkt, dass es noch zum Dateinamen gehört :( und dann steht in meiner Kommandozeile folgendes: Zitat: Command: netload Assembly file name: C:\Program Files\Common Files\Bibliothek.dllfiledia 1
Kann mir da einer weiterhelfen? Grüße aus Wü Manu ------------------ Etwaige Rechtschreibfehler sind gewollt und dienen der allgemeinen Belustigung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
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: 24. Feb. 2011 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für ManuelKuhn
|
Ex-Mitglied
|
erstellt am: 24. Feb. 2011 14:48 <-- editieren / zitieren -->
Hi, probier dieses: Code: acDoc.SendStringToExecute("netload C:\Program Files\Common Files\Bibliothek.dll" & vbCR, True, False, True)
dotNET wird im >>>ARX-Forum<<< mitdiskutiert, egal, wir haben auch das hier gefunden. - alfred - ------------------ www.hollaus.at |
ManuelKuhn Mitglied Techniker und DvD :-)
Beiträge: 100 Registriert: 23.03.2005 Intel XEON W3503 @ 2.4GHz 8 GB DDR3 NVIDIA QUADRO FX3800 WinXP Prof SP3 x64 ACAD 2007 + ProSteel 17.2/ 18 ACAD 2010 + ProSteel V8i S3 Rhino 3D V4 Autodesk VIZ-2006 ( bald vielleicht Max2011 :-D )
|
erstellt am: 24. Feb. 2011 15:02 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr zwei, vielen Dank, für die super schnelle Hilfe!
Zitat: acDoc.SendStringToExecute("netload C:\Program Files\Common Files\Bibliothek.dll" & vbCR, True, False, True)
Das hat funktioniert, eine gute Idee, "NewLine" als ENTER zu nutzen, warum bin ich da nicht drauf gekommen!!? @Udo: für was steht das \n In Zukunft kommen meine Fragen ins ARX Forum! ------------------ Etwaige Rechtschreibfehler sind gewollt und dienen der allgemeinen Belustigung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
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: 24. Feb. 2011 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für ManuelKuhn
\n steht für Newline bzw. Enter in Lisp und auch C#.net, deshalb mein Schnellschuss. Aber bei VB.net ist es VBCr (wie mich auch schon Alfred korrigierte). ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 24. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ManuelKuhn Mitglied Techniker und DvD :-)
Beiträge: 100 Registriert: 23.03.2005 Intel XEON W3503 @ 2.4GHz 8 GB DDR3 NVIDIA QUADRO FX3800 WinXP Prof SP3 x64 ACAD 2007 + ProSteel 17.2/ 18 ACAD 2010 + ProSteel V8i S3 Rhino 3D V4 Autodesk VIZ-2006 ( bald vielleicht Max2011 :-D )
|
erstellt am: 24. Feb. 2011 15:16 <-- editieren / zitieren --> Unities abgeben:
Zitat: und auch C#.net[/B]
dsa ist aber auch gut zu wissen, früher oder später wird das evtll. für mich auch ein Thema! Danke dir! ------------------ Etwaige Rechtschreibfehler sind gewollt und dienen der allgemeinen Belustigung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007
|
erstellt am: 25. Feb. 2011 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für ManuelKuhn
Also vielleicht nochmal ein etwas anderer Ansatz. Ich persönlich vermeide so gut es geht SendStringToExecute u.ä. Was auch geht ist die assembly in .NET zu laden: Code:
Dim assemblyBytes() As Byte = File.ReadAllBytes("D:\Test.dll") Dim SymbolAssemblyBytes() As Byte = File.ReadAllBytes("D:\Test.pdb") Dim MyAssembly As Assembly = Assembly.Load(assemblyBytes, SymbolAssemblyBytes)
Die zweite Zeile wird nur benötigt wenn Du die dll auch debuggen möchtest ansonsten kann man das weglassen.Du sprachst auch davon das du mit dem netload deiner dll automatisch die andere dll geladen werden soll. In Deinem Beispiel nutzt Du jedoch einen AutoCAD Befehl dafür der extra aufgerufen werden muss. "Richtig" automatisch ginge es:
Code:
Public Class Class1 Implements IExtensionApplication Public Sub Initialize() Implements IExtensionApplication.Initialize Dim assemblyBytes() As Byte = File.ReadAllBytes("D:\Test.dll") Dim MyAssembly As Assembly = Assembly.Load(assemblyBytes) Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor ed.WriteMessage(vbCr + "Initialize Version: " & My.Application.Info.Version.ToString & vbCrLf) #If DEBUG Then ed.WriteMessage(vbCr + "DEBUG" & vbCrLf) #End If End Sub Public Sub Terminate() Implements IExtensionApplication.Terminate End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|