Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Schwerpunkt über Formel

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Schwerpunkt über Formel (2273 mal gelesen)
ThomasJay
Mitglied
Dipl-Ing


Sehen Sie sich das Profil von ThomasJay an!   Senden Sie eine Private Message an ThomasJay  Schreiben Sie einen Gästebucheintrag für ThomasJay

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 21. Mai. 2012 09:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Mai. 2012 09:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

Servus
Hier (oder auch hier) findest du Beispielcode und eine Diskussion fü eine ähnliche Formel.
Hilft das schon?

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


Sehen Sie sich das Profil von ThomasJay an!   Senden Sie eine Private Message an ThomasJay  Schreiben Sie einen Gästebucheintrag für ThomasJay

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 21. Mai. 2012 10:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nein. Mein Problem ist nicht der Wert der Formel, sondern wie ich diesen Wert einem Parameter zuweise, der einen Punkt darstellt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pgmuer
Mitglied



Sehen Sie sich das Profil von pgmuer an!   Senden Sie eine Private Message an pgmuer  Schreiben Sie einen Gästebucheintrag für pgmuer

Beiträge: 111
Registriert: 22.01.2002

Catia V5 R18 Sp8
Catia V5 R19 Sp6

erstellt am: 21. Mai. 2012 10:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

Hallo,

Versuch doch mal einen Parameter vom Typ Punkt zu erstellen.
Dann sollte es funktionieren mit der Formel.

Gruss
Philipp

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ThomasJay
Mitglied
Dipl-Ing


Sehen Sie sich das Profil von ThomasJay an!   Senden Sie eine Private Message an ThomasJay  Schreiben Sie einen Gästebucheintrag für ThomasJay

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 21. Mai. 2012 10:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, das sollte es. Aber es gibt ja nicht die Möglichkeit eines CreatePoint, sowie z.B. CreateReal. Wie kann ich also so einen Parameter vom Typ Punkt erzeugen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Mai. 2012 12:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von ThomasJay an!   Senden Sie eine Private Message an ThomasJay  Schreiben Sie einen Gästebucheintrag für ThomasJay

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 21. Mai. 2012 13:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Klasse, so funktionierts. Vielen Dank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

olleiCAD
Mitglied



Sehen Sie sich das Profil von olleiCAD an!   Senden Sie eine Private Message an olleiCAD  Schreiben Sie einen Gästebucheintrag für olleiCAD

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 24. Sep. 2020 15:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Sep. 2020 17:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von olleiCAD an!   Senden Sie eine Private Message an olleiCAD  Schreiben Sie einen Gästebucheintrag für olleiCAD

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 09. Nov. 2020 15:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

Wunderbar, funktioniert.
Der Name der Formel sollte aber "PunktMax" heißen (steht ja auch so in der Formel). Angezeigt wird mir aber Point.XXX. Hab ich hier auch was übersehen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Nov. 2020 16:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von olleiCAD an!   Senden Sie eine Private Message an olleiCAD  Schreiben Sie einen Gästebucheintrag für olleiCAD

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 10. Nov. 2020 08:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich


Baum.png

 
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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Nov. 2020 20:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von olleiCAD an!   Senden Sie eine Private Message an olleiCAD  Schreiben Sie einen Gästebucheintrag für olleiCAD

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 11. Nov. 2020 12:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ThomasJay 10 Unities + Antwort hilfreich

Da soll einer drauf kommen 
Traumhaft vielen vielen dank!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz