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