Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  VBA -> .Net Point2D

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
Autor Thema:   VBA -> .Net Point2D (814 mal gelesen)
3DCS
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 10
Registriert: 13.06.2015

Inventor,AutoCad,TurboCad,MS Access,mySQL

erstellt am: 03. Jul. 2017 14:14    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

Ich bin gerade dabei einige VBA Codes nach .Net zu portieren und beisse mir an einer Stelle die Zähne aus.
Vielleicht kann jemand helfen.

Es geht um ein Makro mit welchem ich in idw's Text, View Titles und Views in X bzw. Y Richtung ausrichte.
Als VBA Makro funktioniert das.
Die selektierten Objekte werden entsprechend dem zuerst gewähltem Objekt ausgerichtet entsprechend obj.Position
Hier das Beispiel für die X-Richtung:

Sub AusrichtenX()
'Vertikal ausrichten
Dim oDoc As DrawingDocument
Set oDoc = ThisApplication.ActiveDocument

Dim oSelect As SelectSet
Set oSelect = oDoc.SelectSet

Dim newPoint As Point2d
Set newPoint = oSelect.Item(1).Position

For Each obj In oSelect
  newPoint.Y = obj.Position.Y
  obj.Position = newPoint
Next
End Sub


In .Net sieht das im Moment bei mir so aus:

Sub AusrichtenX()
            'Vertikal ausrichten
            Dim oDoc As DrawingDocument = InventorApp.ActiveDocument
            Dim oSelect As SelectSet = oDoc.SelectSet
            Dim tg As TransientGeometry = InventorApp.TransientGeometry
            Dim newPoint As Point2d = Nothing
            Dim obj As Object

            newPoint = tg.CreatePoint2d(oSelect.Item(1).Position.X, oSelect.Item(1).Position.Y)

                For Each obj In oSelect
                    newPoint.Y = obj.Position.Y
                    obj.Position = newPoint
                Next
            End If
        End Sub


In der For Each Schleife bei obj.Position = newPointX steigt .Net aus.
Ich vermute ein Typenproblem da obj ein Variant ist. Das ist erforderlich,da es sich tatsächlich um verschiedene Typen handeln kann.
Ich habe auch schon versucht in die einzelnen Koordinaten obj.Position.X und obj.Position.Y die Werte zu übergeben.
Dann kommt zwar keine Fehlermeldung mehr aber die Werte werden nicht übernommen!?

Den Point2D als TransientGeometry zu erzeugen ist wahrscheinlich auch nicht nötig....war halt eine Idee, hat aber nicht genützt.

Wäre toll wenn mir jemand einen Tip geben kann.

Grüße Martin


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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Jul. 2017 08:37    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 3DCS 10 Unities + Antwort hilfreich

Hi,

mit welcher Fehlermeldung steigt er denn aus?

------------------
MFG

Chris

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

Tacker
Mitglied
TZ, Tech. MB, Softwareentwickler


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

Beiträge: 175
Registriert: 23.09.2010

IV 2015 & IV 2017 Pro
i7-7700K 4x4.2GHz
32GB DDR4-2400
GTX 1060 6GB DDR5

erstellt am: 20. Jul. 2017 12:33    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 3DCS 10 Unities + Antwort hilfreich

Hallo 

Der Fehler hat sich wahrscheinlich nur beim Posten hier eingeschlichen, aber im .NET Code steht ein "End IF" ohne ein "IF *"

Ansonsten würde mich zuerst auch einmal die Fehlermeldung interessieren.

MFG

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

3DCS
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 10
Registriert: 13.06.2015

Inventor,AutoCad,TurboCad,MS Access,mySQL

erstellt am: 24. Jul. 2017 16:02    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


3DCS_2017.07.24_15h49m53s_001_.jpg

 
Hallo,
zurück aus dem Urlaub zunächst mal Danke für euer beider Interesse an meinem Problem.

Richtig,das End If gehört da nicht hin und war ein Kopierfehler.

Anscheinend verstehen sich die beiden COM Objekte nicht.
Ich habe einen Screenshot angehängt in welchem die Fehlermeldung zu sehen ist.

Wenn man auf Weiter klickt wird das AddIn normal weiter ausgeführt, nur halt ohne etwas zu machen. Es kommt also nicht zu einem Absturz oder ähnlichem beim Inventor.

Bin gespannt auf weitere Hinweise.

Grüße Martin

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

DerBrain87
Mitglied
Mathematiker


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

Beiträge: 73
Registriert: 29.04.2015

Inventor 2017 & VisualStudio 2013

erstellt am: 18. Okt. 2017 07:26    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 3DCS 10 Unities + Antwort hilfreich

Hallo Martin,
Zunächst würde ich, wenn ich ein Array, welches vom Typ Object ist stets überprüfen, dass der Datentyp stimmt. Hierfür kannst du entweder die Methode GetType oder ein Trycast, der dir dann schon das passende Inventor-Objekt gibt, verwenden. So reduzierst du mögliche Fehlermeldungen bzw. kannst sie evtl. besser Kategorisieren und, falls noch ein Fehler drin ist, ihn besser finden. Da du in der Auswahl mehrere Verschiedene Sachen zulässt (Texte, View Titles etc.) würde ich entweder mit 'GetType' und einem 'Select Case' oder mehrere Trycast nacheinander arbeiten.

Zu deiner Aussage

Zitat:
Dann kommt zwar keine Fehlermeldung mehr aber die Werte werden nicht übernommen!?
klingt für mich stark danach, dass dein AddIn abstürzt. Es kommt leider immer wieder vor, - ich kämpfe da auch gerade etwas mit - dass ein AddIn scheinbar ohne Fehlermeldung abkachelt. Fügst du in deiner Methode ein Try-Catch-Block ein, kann es gut sein, dass eine (leider sehr aussagefreie) Fehlermeldung auftaucht.

Gruß DerBrain87

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

3DCS
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 10
Registriert: 13.06.2015

Inventor,AutoCad,TurboCad,MS Access,mySQL

erstellt am: 18. Okt. 2017 11:01    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 @DerBrain87
das Problem konnte ich mittlerweile lösen, siehe https://forums.autodesk.com/t5/inventor-customization/vba-gt-net-problem-with-point2d/m-p/7268094#M73932

Das COM Objekt muss in .Net anders aufgerufen werden.

Grüße Martin

[Diese Nachricht wurde von 3DCS am 18. Okt. 2017 editiert.]

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