Autor
|
Thema: Schwerpunkt über Formel (2273 mal gelesen)
|
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 21. Mai. 2012 09:46 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wie kann ich den Schwerpunkt einer Fläche als Formel erzeugen? Ich mein damit nicht GetCOG, denn das liest mir ja nur einmal die Koordinaten aus, die ich zur Erstellung eines Punktes verwenden kann. Ändert sich anschließend die Fläche bleibt der Punkt gleich. Es ist also eine Formel nötig. Wenn ich es per Hand mach und aufnehme kommt folgendes: Code: Set formula1 = relations1.CreateFormula("Formula.3", "", parameter1, "centerofgravity(`Fläche` ) ")
Ich weiß aber nicht, welchen Punkt ich mit parameter1 verknüpfen kann, dass das funktioniert. Wenn ich einfach einen Koordinatenpunkt wähle wird CATIA sofort beendet... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Mai. 2012 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
|
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 21. Mai. 2012 10:21 <-- editieren / zitieren --> Unities abgeben:
|
pgmuer Mitglied
Beiträge: 111 Registriert: 22.01.2002 Catia V5 R18 Sp8 Catia V5 R19 Sp6
|
erstellt am: 21. Mai. 2012 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
|
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 21. Mai. 2012 10:46 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Mai. 2012 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Servus Du musst zunächst einen HybridPointExplicite anlegen (also einen isolierten Punkt). Diesen kannst du dann bei der Erstellung der Formel angeben. zB (zusammengebastelter Code) Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridShapeFactory1 As HybridShapeFactory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("Geometrisches Set.1") part1.Update Dim hybridShapePointCoord2 As HybridShapePointCoord Set hybridShapePointCoord2 = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 0#) hybridBody1.AppendHybridShape hybridShapePointCoord2 part1.InWorkObject = hybridShapePointCoord2 part1.Update Dim reference4 As Reference Set reference4 = part1.CreateReferenceFromObject(hybridShapePointCoord2) Dim hybridShapePointExplicit1 As HybridShapePointExplicit Set hybridShapePointExplicit1 = hybridShapeFactory1.AddNewPointDatum(reference4) hybridBody1.AppendHybridShape hybridShapePointExplicit1 Dim oForm As Formula Set oForm = part1.Relations.CreateFormula("Test", "", hybridShapePointExplicit1, "point(1mm,1mm,1mm) ") part1.InWorkObject = hybridShapePointExplicit1 part1.Update hybridShapeFactory1.DeleteObjectForDatum reference4 End Sub
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 21. Mai. 2012 13:00 <-- editieren / zitieren --> Unities abgeben:
|
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 24. Sep. 2020 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Hallo zusammen, hänge gerade fest. Bei mir ist der GetNameToUseInRelation Befehl immer leer. Woran liegts? Hier ein Ausschnitt aus dem Code: Code: Dim Wkz3D As Factory Set Wkz3D = CATIA.ActiveDocument.Part.HybridShapeFactory Dim PunktMin As HybridShapePointExplicit Dim PunktMax As HybridShapePointExplicit Dim hybridShapePointCoord2 As HybridShapePointCoord Set hybridShapePointCoord2 = hybridShapeFactory1.AddNewPointCoord(0, 0, 0) hybridBody1.AppendHybridShape hybridShapePointCoord2 part1.InWorkObject = hybridShapePointCoord2 part1.Update Dim reference4 As Reference Set reference4 = part1.CreateReferenceFromObject(hybridShapePointCoord2) Dim Bodyname As String For i = 0 To 2 Set extremum1_max = hybridShapeFactory1.AddNewExtremum(reference1, directions1(i), 1) hybridBody1.AppendHybridShape extremum1_max Set PunktMax = hybridShapeFactory1.AddNewPointDatum(reference4) hybridBody1.AppendHybridShape PunktMax Set Bodyname = part1.Parameters.GetNameToUseInRelation(extremum1_max) MsgBox Bodyname Dim oForm As Formula Set oForm = part1.Relations.CreateFormula("PunktMax", "", PunktMax, "centerofgravity(Bodyname)") part1.InWorkObject = PunktMax part1.Update
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Sep. 2020 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Servus Da GetNameToUseInRelation dir ein String und kein Objekt liefert: lass mal das Set vor Bodyname weg Beim erstellen der Formel müsstest du den String übergeben : Code: Set oForm = part1.Relations.CreateFormula("PunktMax", "", PunktMax, "centerofgravity(" & Bodyname & ")")
ggf den String der Formel zuvor zusammensetzen Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 09. Nov. 2020 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Nov. 2020 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Servus Welchen Namen meinst du? Der Formel oder des Punktes? (ggf Screenshot) Bei Point.XXX meinst du wohl eher einen Punkt. Den solltest du mit PunktMax.Name umbenennen können. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 10. Nov. 2020 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Habe ich schon probiert (einmal mit oForm.Name und einmal mit PunktMax.Name), der Punkt heißt trotzdem Point.XXX (siehe Anhang) Wollte das Ganze nun über ein Array lösen, aber ich habe das Gefühl, dass ich die aus der Formel erzeugten Punkte nicht ansprechen kann. --> GetMinimumDistance failed --> Die Maße Lauten dreimal 0mm... Anbei der Code: Code: For i = 0 To 2 'PunktMax Set extremum1_max = hybridShapeFactory1.AddNewExtremum(reference1, directions1(i), 1) hybridBody1.AppendHybridShape extremum1_max Set PunktMax = hybridShapeFactory1.AddNewPointDatum(reference4) hybridBody1.AppendHybridShape PunktMax Bodyname = part1.Parameters.GetNameToUseInRelation(extremum1_max) Dim oForm As Formula Set oForm = part1.Relations.CreateFormula("PunktMax", "", PunktMax, "centerofgravity(" & Bodyname & ")") 'Formelname = "PunktMax" & CStr(i) 'oForm.Name = Formelname Set PunkteMax(i) = part1.CreateReferenceFromObject(oForm) 'PunktMin Set extremum1_min = hybridShapeFactory1.AddNewExtremum(reference1, directions1(i), 0) hybridBody1.AppendHybridShape extremum1_min Set PunktMin = hybridShapeFactory1.AddNewPointDatum(reference4) hybridBody1.AppendHybridShape PunktMin Bodyname = part1.Parameters.GetNameToUseInRelation(extremum1_min) Set oForm = part1.Relations.CreateFormula("PunktMin", "", PunktMin, "centerofgravity(" & Bodyname & ")") 'Formelname = "PunktMin" & CStr(i) 'oForm.Name = Formelname Set PunkteMin(i) = part1.CreateReferenceFromObject(oForm) Next part1.Update For i = 0 To 2 Set Measurable1 = TheSPAWorkbench.GetMeasurable(PunkteMax(i)) Laengen(i) = Measurable1.GetMinimumDistance(PunkteMin(i)) Next Dim wert1, wert2, wert3 wert1 = Laengen(0) wert2 = Laengen(1) wert3 = Laengen(2) MsgBox "Die Rohteilabmessungen lauten:" & Chr(13) & "Richtung1 = " & CInt(wert1) & "mm" & Chr(13) & "Richtung2 = " & CInt(wert2) & "mm" & Chr(13) & "Richtung3 = " & CInt(wert3) & "mm" & Chr(13), vbInformation, makroname + " " + version
[Diese Nachricht wurde von olleiCAD am 10. Nov. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Nov. 2020 20:05 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
Servus In deinem Bild ist nicht die Formel zu sehen sondern der Punkt der über eine Formel definiert wird. Zum benennen des Punktes: Code: Set PunktMax = hybridShapeFactory1.AddNewPointDatum(reference4) PunktMax.Name = "PunktMax" & CStr(i) hybridBody1.AppendHybridShape PunktMax
Zum Messen musst du die Reference aus dem Punkt erzeugen und nicht der Formel: Code: Set PunkteMax(i) = part1.CreateReferenceFromObject(PunktMax) 'Bzw. Set PunkteMin(i) = part1.CreateReferenceFromObject(PunktMin)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 11. Nov. 2020 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasJay
|