| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: VB6 in Visual Studio 2010 Express öffnen (7731 mal gelesen)
|
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 25. Jun. 2010 08:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo an Alle, ich verwende ein VBA-Makro (von der Microsoft-Website) um meine VBA-Projekte in VB6 zu wandeln. Das funktioniert recht gut. Dann aber schaffe ich es nicht diese erstellten (Projekt)Dateien mit Visual Studio 2010 Express zu öffen. Gibt es einen Trick. Oder kann man mit Visual Studio 2010 Express keine VB6 Dateien öffnen? Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Jun. 2010 09:27 <-- editieren / zitieren -->
Hi, imho ist das Einlesen von VB6 (und damit das Portieren nach dotNET-Struktur) nur im Professional-VS enthalten und nicht in der Express-Version. Die VB6 Dateien sind aber ganz normaler ASCII-Code und damit kannst Du den Code per Copy&Paste von VB6 nach VS kopieren, einzige Ausnahme sind die Formulare, die sind aber durch die viel größere Funktionalität am besten neu zu gestalten. Noch eine Hilfestellung zu Konvertierung: >>>hier<<< - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 28. Jun. 2010 16:25 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred, ich bin der Verzweiflung nahe. Ich bin inzwischen auch auf VB 2008 umgestiegen mit VB 2010 bin ich gar nicht zu recht gekommen. Was gar nicht klappen will ist das Debuggen. Obwohl ich die Projektfile schon bearbeitet habe, so daß das Debuggen eigentlich gehen müsste, kriege ich immer die Fehlermeldung: Ein Projekt mit dem Ausgabetyp "Klassenbibliothek" kann nicht direkt gestartet werden. Um das Projekt zu debuggeb, fügen sie dieser Projektmappe ein ausführbares Projekt hinzu das auf das Bibliotheksprojekt verweist....... Was ist damit gemeint? Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 28. Jun. 2010 20:11 <-- editieren / zitieren -->
Hi, schick mir dein VBPROJ-File und den Ort, wo Du Dein AutoCAD installiert hast, ich versuch das mal händisch einzustellen. Dann kann ich auch die Fragen leichter beantworten. - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 29. Jun. 2010 08:21 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Alfred, meine Projektfile hängt an. Der Pfad meiner Acad.exe ist: "C:\Programme\AutoCAD 2010\acad.exe" Ich habe es selbst auch schon probiert ein zustellen aber es geht nicht. Vielen Dank schon mal. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 29. Jun. 2010 09:15 <-- editieren / zitieren -->
Hi, anbei 2 Dateien, sichere zuerst Deine Dateien und überspiele mal die von mir ersetzenden ALLGEMEIN.VBPROJ und ALLGEMEIN.VBPROJ.USER Nicht sicher bin ich mir bei der Dateinamensvergabe, bei Dir hat ein E bei ALLGEMEIN gefehlt und ich weiss nicht, ob das nur durchs kopieren zustandekam oder so war, ich hab's innerhalb der Files richtig geschrieben, wenn das nicht passen sollte, dann musst Du mittels suchen/ersetzen wieder zurückkorrigieren. Die Dateien sollten passen, würden zumindest bei VS2008-Prof, ein Express hab ich nicht und konnte es daher nicht probieren. Aufpassen ev. bei Einstellungen wie OPTION STRICT, .... die könnten beim Kopieren von meiner Vorlage umgestellt sein, ebenso die Warnungs-Ausgaben. Der wesentlichste Unterschied ist, dass die Angabe der Startapplikation in der VBPROJ.USER-Datei ist und nicht in der VBPROJ. Hoffe, es passt jetzt für Dich, - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 29. Jun. 2010 14:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred, das hat mir schon viel geholfen. Ich kann jetzt Debuggen. Ab und zu kommt immer noch Fehlermeldung, der Qulltext wäre verändert worden. Aber im großen und ganzen funktioniert es recht gut. ich habs gleich als Vorlage abgespeichert. Danke. Erlaube mir noch eine Frage. Unten ist eine recht einfache Prozedur, die nur das übergebene Autocadobjekt in den Hintergrund schiebt. Leider bekomme ich viele Fehlermeldungen, ich müsste mit new neue Instanzen erstellen. Könntest Du den Programmtext etwas optimieren. Die Variablen sind glaub ich richtig. Aber was muß ich alles mit NEW machen. Gruß, Theo Public Sub NachUnten(ByVal Objekt As AcadObject) Dim arr(0) As AcadObject Dim eDictionary As AcadDictionary Dim sentityObj As AcadSortentsTable
eDictionary = ThisDrawing.ModelSpace.GetExtensionDictionary eDictionary = myLayout.GetExtensionDictionary sentityObj = New AcadSortentsTable On Error Resume Next sentityObj = eDictionary.GetObject("ACAD_SORTENTS") If Err.Number <> 0 Then If sentityObj Is Nothing Then sentityObj = eDictionary.AddObject("ACAD_SORTENTS", "AcDbSortentsTable") End If Err.Clear() End If On Error GoTo 0 arr(0) = ThisDrawing.ObjectIdToObject(Objekt.ObjectID) sentityObj.MoveToBottom(arr) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 29. Jun. 2010 14:17 <-- editieren / zitieren -->
Hi, der Code stammt, wenn ich es recht sehe, aus der VBA-Hilfe aus AutoCAD. Als solches scheint dieses richtig, mit der Ausnahme, dass ich das rundherum nicht sehe, und damit kann ich nur erahnen, was das Problem sein könnte: Die Variable 'ThisDrawing' hat in VBA eine vordefinierte Zuweisung auf das jeweils aktuelle Document. Diese Zuweisung gibt es nicht, wenn Du eine dotNET-Applikation erstellst, dafür musst Du selbst sorgen. Weiters halte ich dieses Statement für ungewöhnlich: arr(0) = ThisDrawing.ObjectIdToObject(Objekt.ObjectID) Korrigiere das in: arr(0) = Objekt Jedenfalls wäre wichtig, an welcher Zeile Dein Code mit der Fehlermeldung beim Debuggen stehen bleibt, und welche Fehler das genau wären. Ich verstehe schon, dass Du nicht alles von Deinem Projekt hier offenbaren willst, aber einfacher könnte es sein, den gesamten Source zu sehen, dann brauch ich nur starten, um zu sehen.
- alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 29. Jun. 2010 14:52 <-- editieren / zitieren --> Unities abgeben:         
Hi Alfred, das mit der VBA Hilfe stimmt und dort ist er auch einwandfrei gelaufen. Die Fehlermeldung bekomme ich bei der zeile: "If Err.Number <> 0 Then" Thisdrawing ist gelöst. Du kannst gern das drumherum sehen, ist nichts besonderes. Die ganze Klasse dient nur dazu Objekte farbig zu hinterlegen. Ich habe bisher immer nur "Dreieck" gestartet, die anderen werden noch schlechter funktionieren. Danke. Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 29. Jun. 2010 16:00 <-- editieren / zitieren -->
Hi, ich hab ein wenig 'zurechtgerückt', jetzt geht's. Wichtig scheint mir, dass die Command-Aufrufe mit 'Shared' definiert sein sollten, weiters ist es schon weniger Code zu schreiben, wenn mit 'Strict Off' gearbeitet wird, aber die Fehler bekommst Du damit auch nicht serviert (bei Strict On siehst Du Typkonflikte gleich bei tippen!). Ich habs jedenfalls umgedreht und ein paar 'CType' eingebaut, ich hoffe, es ist verständlich für Dich. Beiliegend das gesamte Projekt ==> Verweise austauschen und im VBPROJ.USER auf Deinen Acad-EXE-Pfad tauschen, fertig. - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 29. Jun. 2010 16:39 <-- editieren / zitieren --> Unities abgeben:         
Danke Alfred, daß Du mir ein ganzes Projekt daraus gemacht hast. Aber ich werds nicht kpl. übernehmen sonder von der Formen.vb Zeile für Zeile übernehmen. Vileicht lern ich was draus und komme beim nächsten Projekt alleine weiter. Falls es nicht klappt kann ich immer noch das ganze Projekt verwenden. Danke und Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 30. Jun. 2010 15:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred, jetzt ist mir doch noch ein Problemchen aufgefallen. Nachdem der Benutzer die beiden Punkte eingegeben hat, setze ich P2 = P0. Und danach verändere ich den Y-Wert von P2. Es scheint als würede ich damit auch den Y-Wert von P0 verändern. Kann das sein? wie verhindere ich das? Gruß, Theo <Autodesk.AutoCAD.Runtime.CommandMethod("Quadrat")> _ Public Shared Sub Quadrat() Dim mySolid As AcadSolid Dim myLayout As AcadBlock Try P0 = CType(ThisDrawing.Utility.GetPoint(, "Erster Eckpunkt:"), Double()) P1 = CType(ThisDrawing.Utility.GetPoint(, "Gegenüberliegender Eckpunkt:"), Double()) P2 = P0 P2(1) = P1(1) 'hier passiert der Fehler, es ändert sich auch P0(1) P3 = P1 P3(1) = P0(1)
myLayout = ThisDrawing.ActiveLayout.Block mySolid = myLayout.AddSolid(CObj(P0), CObj(P2), CObj(P3), CObj(P1)) NachUnten(myLayout, CType(mySolid, AcadEntity)) Catch ex As Exception Call ThisDrawing.Utility.Prompt("Fehler aufgetreten: " & ex.Message) End Try End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Jun. 2010 15:32 <-- editieren / zitieren -->
Hi, statt: P2 = P0
Code: Redim P2(2) P2(0) = P0(0) P2(1) = P0(1) P2(2) = P0(2)
Dein ursprüngliches Statement bedeutet mal P2 zum gleichen Objekt wie P0, also keine Kopie des Objekts, das kannst Du nur, wenn Du ein neues Objekt erstellst und dann die Werte einzel umsetzt. - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 30. Jun. 2010 16:07 <-- editieren / zitieren --> Unities abgeben:         
Danke und noch eine Frage: die Funktion: Private Shared Function acHatchPatternTypePreDefined() As Integer 'war Long Throw New NotImplementedException End Function funtioniert nicht. Was kann man da machen?? Gruß Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 30. Jun. 2010 18:06 <-- editieren / zitieren -->
Hi, bekommst Du eine Fehlermeldung? Oder wie äußert sich 'funktioniert nicht'? - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 01. Jul. 2010 08:31 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Alfred, das Program sprang nach der Funktion immer auf die Zeile: Catch Ex as Exception Und ich bekam eine Fehlermeldung in der ACAD Befehlszeile. Ich habe das Problem jetzt so gelöst: PatternType = 1 Noch eine ganz andere Frage habe ich noch: Wenn ich jetzt mal so weit bin, daß ich eine funktionierede DLL habe. Was muß ich dann machen um diese auf einem anderen Rechner laufen zu lassen. Bei uns ist überall nur ACAD2010 instaliert. Was muß auf den anderen Rechnern instaliert werden und was muß evtl. eingestellt werden? Die DLL wollte ich dann mit Lisp laden. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Jul. 2010 08:43 <-- editieren / zitieren -->
Hi, >> das Program sprang nach der Funktion immer auf die Zeile: >> Catch Ex as Exception Das sollte es ja auch, denn mit Throw New ...Exception weist Du die Subroutine an, eine Fehlermeldung zu initiieren, die dann in der übergeordneten Routine abgehandelt wird, demnach muss die übergeordnete Routine ins Catch hineinfliegen. >> Was muß ich dann machen um diese auf einem anderen Rechner laufen zu lassen
Mit Befehl NETLOAD laden, das ist alles. Solange Du keine eigenen Assemblys einbindest, die nicht Bestandteil von AutoCAD oder Framework sind, ist keine weitere Aktion notwendig. DLL auf die lokale Harddisk kopieren, denn aus dem Netzwerk lässt es sich oft mangels Berechtigungen nicht starten, in diesen Fällen würdest Du eine Fehlermeldung beim Befehl NETLOAD bekommen. - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
 
 Beiträge: 426 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 01. Jul. 2010 14:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred, inzwischen läuft es richtig gut. Ich hab inzwischen auch schon meine erste Userform erstellt, ist ähnlich wie in VBA nur etwas umfangreicher. Probleme habe ich etwas mit diesen AutoCAd konstanten. Zb. ging bei VBA folgenede Zeile: ThisDrawing.Regen (ModelSpace) Bei Net geht: ThisDrawing.Regen(AcRegenType.acActiveViewport) ist aber nicht das selbe. Manche Konstante finde ich unter common z.B. Common.AcCoordinateSystem.acWorld Aber da komm ich ehr zufällig drauf. Gibts ne sichere Methode? Kann ich das irgendwo nachsehen? Gibts ne Hilfe(wie bei VBA) dazu? Noch besser wäre ne Automation, wie bei der Thisdrawing-Variable. Danke, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |