|  |  | 
|  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|  |  | 
|  | Qualität sichtbar gemacht, dank leistungsfähiger 3DViewStation Grafik, eine Pressemitteilung 
 | 
| Autor | Thema:  Schwerpunkt über Formel (2690 mal gelesen) | 
 | ThomasJay Mitglied
 Dipl-Ing
 
   
 
      Beiträge: 159Registriert: 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: 12117Registriert: 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: 159Registriert: 19.04.2011
 CATIA V5 R19 |    erstellt am: 21. Mai. 2012 10:21  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | pgmuer Mitglied
 
 
   
 
      Beiträge: 111Registriert: 22.01.2002
 Catia V5 R18 Sp8Catia V5 R19 Sp6
 |    erstellt am: 21. Mai. 2012 10:41  <-- editieren / zitieren -->    Unities abgeben:           Nur für ThomasJay   | 
                        | ThomasJay Mitglied
 Dipl-Ing
 
   
 
      Beiträge: 159Registriert: 19.04.2011
 CATIA V5 R19 |    erstellt am: 21. Mai. 2012 10:46  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 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:GrußSub CATMain()
 Dim partDocument1 As PartDocumentSet partDocument1 = CATIA.ActiveDocument
 Dim part1 As PartSet part1 = partDocument1.Part
 Dim hybridShapeFactory1 As HybridShapeFactorySet hybridShapeFactory1 = part1.HybridShapeFactory
 Dim hybridBodies1 As HybridBodiesSet hybridBodies1 = part1.HybridBodies
 Dim hybridBody1 As HybridBodySet hybridBody1 = hybridBodies1.Item("Geometrisches Set.1")
 part1.Update Dim hybridShapePointCoord2 As HybridShapePointCoordSet hybridShapePointCoord2 = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 0#)
 hybridBody1.AppendHybridShape hybridShapePointCoord2part1.InWorkObject = hybridShapePointCoord2
 part1.Update
 Dim reference4 As ReferenceSet reference4 = part1.CreateReferenceFromObject(hybridShapePointCoord2)
 Dim hybridShapePointExplicit1 As HybridShapePointExplicitSet hybridShapePointExplicit1 = hybridShapeFactory1.AddNewPointDatum(reference4)
 hybridBody1.AppendHybridShape hybridShapePointExplicit1 Dim oForm As FormulaSet oForm = part1.Relations.CreateFormula("Test", "", hybridShapePointExplicit1, "point(1mm,1mm,1mm) ")
 part1.InWorkObject = hybridShapePointExplicit1part1.Update
 hybridShapeFactory1.DeleteObjectForDatum reference4End Sub
 
 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: 159Registriert: 19.04.2011
 CATIA V5 R19 |    erstellt am: 21. Mai. 2012 13:00  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | olleiCAD Mitglied
 
 
  
 
      Beiträge: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | 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: 12117Registriert: 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 wegBeim 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 09. Nov. 2020 15:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für ThomasJay   | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | 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: 12117Registriert: 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 11. Nov. 2020 12:43  <-- editieren / zitieren -->    Unities abgeben:           Nur für ThomasJay   |