Autor
|
Thema: Problem mit dem Befehl: AddNewLinePtPt (1076 mal gelesen)
|
tonka Mitglied
Beiträge: 59 Registriert: 18.07.2006
|
erstellt am: 18. Jul. 2006 10:21 <-- editieren / zitieren --> Unities abgeben:
Hy @ all! Ich hoffe jemand von euch kann mir helfen. Vorab:Ich benutze CATIA V5 R14 Service Pack 4 und ich programmieren mit VBA(CATIA) Aufgabenstellung: Ich habe in einem Part eine Fläche. Ich möchte das ich zwischen zwei Eckpunkten dieser Fläche, die vom Benutzer mittels SelectElement2-Function ausgewählt werden, eine Linie erzeugen. Ich habe es schon auf viel Arten versucht z.B. mit CreateReferenceFromObject,BRepName,Name,Geometry doch nichts funktioniert wirklich. Zum Schluss habe ich es mit Stringmanipulation probiert, wie man es im nachfolgenden Codeausschnitt auch sieht. Dieser funktioniert nur selten. Ich muss diese Problem dringen lösen, da ich es in meiner Arbeit benötige. Die beiden Punkte werden über ein Interface abgefragt und sind daher im folgenden Code schon vorhanden. => hier treten immer diverse Fehlermeldungen auf Function zeichnen() Dim Bauteil As Part Set Bauteil = CATIA.ActiveDocument.Part Dim Wzk3D As Factory Set Wzk3D = Bauteil.HybridShapeFactory Dim HBody As HybridBody Set HBody = Bauteil.InWorkObject Dim RefP1, RefP2 As Reference Dim text, text2 As String text = AuswahlPunkt1.Name text = Replace(text, "GSMAssemble.1", "WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14), hybridShapeAssemble1") text = Replace(text, "GSMAssemble.1", "hybridShapeAssemble1") text = Replace(text, "Selection_", "") text2 = AuswahlPunkt2.Name text2 = Replace(text, "GSMAssemble.1", "WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14), hybridShapeAssemble1") text2 = Replace(text, "Selection_", "") AuswahlPunkt1.Name = text //Hier wird im die Fehlermeldung ausgegeben, dass das Verfahren Name nicht möglich ist. WARUM??? Set RefP1 = Bauteil.CreateReferenceFromName(text) '(AuswahlPunkt1.Name) Set RefP2 = Bauteil.CreateReferenceFromName(text2) '(AuswahlPunkt2.Name) Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(RefP1, RefP2) HBody.AppendHybridShape Linie zeichnen = 0 Bauteil.Update End Function DANKE im vorhinein
MFG Tonka Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 18. Jul. 2006 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für tonka
Hallo Tonka, wenn die 2 Punkte schon ausgewählt sind, muß man doch keine Referenz mehr bilden. Über Selection.Item(1).Reference erreicht man die Referenz auf das ausgewählte Objekt. Beispiel: Dim Inp(0) Inp(0) = "Vertex" oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 1 auswählen", False Dim oRef1 As Reference Set oRef1 = oSel.Item(1).Reference oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 2 auswählen", False Dim oRef2 As Reference Set oRef2 = oSel.Item(1).Reference oSel.Clear Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(oRef1, oRef2) HBody.AppendHybridShape Linie Gruß Steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tonka Mitglied
Beiträge: 59 Registriert: 18.07.2006
|
erstellt am: 18. Jul. 2006 13:33 <-- editieren / zitieren --> Unities abgeben:
Danke Steffen! Danke für deine Antwort, jedoch hat das leider nichts geändert. Bekommen trotzdem diese Fehlermeldung: "Object doesn't support this property or method". Function zeichnen()
Dim Bauteil As Part Set Bauteil = CATIA.ActiveDocument.Part Dim Wzk3D As Factory Set Wzk3D = Bauteil.HybridShapeFactory Dim HBody As HybridBody Set HBody = Bauteil.InWorkObject Dim RefP1 As Reference, RefP2 As Reference, Ref As Reference Dim Punkt As HybridShapePointCoord Set RefP1 = AuswahlPunkt1.Reference Set RefP2 = AuswahlPunkt2.Reference Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(RefP1, RefP2) End Function Setzte ich deinen Source-Code ein, bekomme ich in der gleichen Zeile den Fehler: "Object required" Function zeichnen() Hinterschnitt.Hide Dim oSel As Object Set oSel = CATIA.ActiveDocument.Selection Dim Inp(0) Inp(0) = "Vertex" oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 1 auswählen", False Dim oRef1 As Reference Set oRef1 = oSel.Item(1).Reference oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 2 auswählen", False Dim oRef2 As Reference Set oRef2 = oSel.Item(1).Reference oSel.Clear Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(oRef1, oRef2) Hinterschnitt.Show End Function Hast vielleicht noch eine andere Lösung bzw. Erklärung MfG Tonka Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 18. Jul. 2006 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für tonka
|
tonka Mitglied
Beiträge: 59 Registriert: 18.07.2006
|
erstellt am: 18. Jul. 2006 13:53 <-- editieren / zitieren --> Unities abgeben:
Hey Steffen! Danke für deine schnell Anwort, leider gehts trotzdem nicht, aber die Fehlermeldung hat sich geändert: "Object doesn't support this property or method". Könnte das eventuell an den Lizenzen liegen oder durch irgendetwas anderes gesperrt sein? Oder kann es daran liegen, das die Flächen "tote" Flächen sind. Diese wurden nämlich mittels igs-format eingespielt! Das Problem is zum Verzweifeln Function zeichnen()
Hinterschnitt.Hide Dim Wzk3D As Factory Set Wzk3D = CATIA.ActiveDocument.Part.HybridShapeFactory Dim oSel 'As Object Set oSel = CATIA.ActiveDocument.Selection Dim Inp(0) Inp(0) = "Vertex" oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 1 auswählen", False Dim oRef1 As Reference Set oRef1 = oSel.Item(1).Reference oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 2 auswählen", False Dim oRef2 As Reference Set oRef2 = oSel.Item(1).Reference oSel.Clear Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(oRef1, oRef2) Hinterschnitt.Show End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 18. Jul. 2006 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für tonka
Hallo tonka, probier es mal damit: Function zeichnen() Hinterschnitt.Hide Dim oDoc As PartDocument Set oDoc = CATIA.ActiveDocument Dim Wzk3D As Factory Set Wzk3D = oDoc.Part.HybridShapeFactory Dim oSel 'As Object Set oSel = oDoc.Selection Dim Inp(0) Inp(0) = "Vertex" oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 1 auswählen", False Dim oRef1 As Reference Set oRef1 = oSel.Item(1).Reference oSel.Clear oSel.SelectElement2 Inp, "Eckpunkt 2 auswählen", False Dim oRef2 As Reference Set oRef2 = oSel.Item(1).Reference oSel.Clear Dim Linie As HybridShapeLinePtPt Set Linie = Wzk3D.AddNewLinePtPt(oRef1, oRef2) Hinterschnitt.Show End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 18. Jul. 2006 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für tonka
|
tonka Mitglied
Beiträge: 59 Registriert: 18.07.2006
|
erstellt am: 18. Jul. 2006 14:33 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|