Autor
|
Thema: CreateReferenceFromObject Problem (5436 mal gelesen)
|
rattlesnake Mitglied
Beiträge: 47 Registriert: 22.10.2007 Vb .NET CATIA V5R19
|
erstellt am: 14. Jun. 2010 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche gerade mein erstes Projekt unter VB .NET zu erstellen. Hab zuvor mit VBA geschrieben und da eine spezielle Funktion erstellt, welche mit ein Body PasteSpecial As Result macht: Code: Sub CATMain() Dim tPart As Part Set tPart = CATIA.Documents.Item("Part7.CATPart").Part Dim body1 As Body Set body1 = tPart.Bodies.Item("TestBody") Dim tBody As INFITF.AnyObject Set tBody = PasteSpecial(body1, tPart) Dim tReference As INFITF.Reference Set tReference = tPart.CreateReferenceFromObject(tBody) End SubPublic Function PasteSpecial(ByVal tBody As MECMOD.Body, ByVal pPart As MECMOD.Part) As INFITF.AnyObject Dim tActiveDocument As INFITF.Document Set tActiveDocument = CATIA.activeDocument Dim killSelection As INFITF.Selection Set killSelection = CATIA.activeDocument.Selection killSelection.Clear killSelection.Add tBody killSelection.Copy killSelection.Clear killSelection.Add pPart killSelection.PasteSpecial "CATPrtResultWithOutLink" pPart.UpdateObject killSelection.Item(1).value tActiveDocument.Activate Set PasteSpecial = killSelection.Item(1).value killSelection.Clear End Function
Nun habe ich eine statische Funktion mit vb.net gemacht, welche mit quasi das übernimmt:
Code: Public Shared Function PasteSpecial(ByVal objectToKill As MECMOD.Body, ByVal pPart As MECMOD.Part, ByVal pPasteSpecialType As PasteSpecialType) As MECMOD.Body Dim tActiveDocument As INFITF.Document = Catia.ActiveDocument Dim tBody As MECMOD.Body Dim tlSelectionKill As INFITF.Selection tlSelectionKill = CATIA.activeDocument.Selection tlSelectionKill.Clear() tlSelectionKill.Add (objectToKill) tlSelectionKill.Copy() tlSelectionKill.Clear() tlSelectionKill.Add (pPart) tlSelectionKill.PasteSpecial (pPasteSpecialType.ToString) tBody = tlSelectionKill.Item(1).value pPart.Update() tlSelectionKill.Clear() tActiveDocument.Activate() Return tBody End Function
Aufruf: Code: im tBody As MECMOD.Body = CsiControls.CatiaDocumentStructure.CatiaBasicDocument.PasteSpecial( _ tCatiaPart.PartDocument.Part.MainBody, _ tWorkPart.PartDocument.Part, _ CsiControls.CatiaDocumentStructure.CatiaBasicDocument.PasteSpecialType.CATPrtResultWithOutLink)Dim tMainBodyResult As INFITF.Reference = tPart.CreateReferenceFromGeometry(tBody)
Klappt auch alles wunderbar, nur möchte ich danach von dem Body ein Extract machen und brauch eine Referenz. In VBA alles Klasse. In VB .NET bekomme ich immer bei dem Erstellen der Referenz eine Exception. Entweder eine ArgumentExpception mit der Message "Der Wert liegt außerhalb des erwarteten Bereichs." Meine Vermutung ist, dass das Ergebnis der Selection Selection.Item(1).value nicht weiter verwendbar ist. Auch funktioniert keine Referenz auf Part.Bodies.Item(x) zu erstellen. Einzige funktionierende Möglichkeit ist über Part.Bodies.Item("String") eine Referenz zu erstellen.
Hat jemand eine Idee woran es konkret liegt oder einen Work-Arround um dieses Problem? Vielen, Vielen Dank. ------------------ \\\\|//// \\ _ _ // ( o o ) ================oOOo-(_)-oOOo================== The next time you think you are perfect, try walking on water ========================Oooo=================== oooO ( ) ( ) ) / \ ( (_/ \_) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rattlesnake Mitglied
Beiträge: 47 Registriert: 22.10.2007 Vb .NET CATIA V5R19
|
erstellt am: 14. Jun. 2010 11:31 <-- editieren / zitieren --> Unities abgeben:
Hat sich erledigt. Ganzen Morgen rumgesucht, Froumsbeitrag geschrieben, und 10 Minuten später die Lösung. Ich versuch von einem anderen Part eine Referenz zu erstellen. Das kann nie funktionieren. Es sollte schon das Part sein, indem der Body liegt. Trotzdem vielen Dank an alle, die versucht haben mein Problem zu lösen. ------------------ \\\\|//// \\ _ _ // ( o o ) ================oOOo-(_)-oOOo================== The next time you think you are perfect, try walking on water ========================Oooo=================== oooO ( ) ( ) ) / \ ( (_/ \_) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|