CATIA V5 - Selection objet pour recuperer le centre d'inertie

CATIA V5 - Selection objet pour recuperer le centre d'inertie - Infographie 3D - Graphisme

Marsh Posté le 16-02-2016 à 12:32:17    

Bonjour a tous,
 
J'ai un petit probleme sur CATIA v5, j'ai deux objets pour lesquelles j'aimerais creer un point correspondant au centre d'inertie dans l'editeur de macros.
J'arrive a le faire pour mon premier objet, mais je n'arrive pas a le faire pour le second en passant le nom en parametre. (je suis vraiment debutant sur CATIA).
Voici ce que j'ai essayé:
 
Dim Koordinaten(2)
Dim Koordinaten1(2)
Dim myPoint As HybridShapePointCoord
Dim myPart As Part
Set myPart = CATIA.ActiveDocument.Part
Set Body = myPart.MainBody
Dim Wzk3D As HybridShapeFactory
Set Wzk3D = myPart.HybridShapeFactory
'Geometrisches Set erzeugen
Dim HBody As HybridBody
Set HBody1 = myPart.HybridBodies.Add
Set HBody2 = myPart.HybridBodies.Add
HBody1.Name = "Schwerpunkt_Flaeche"
HBody2.Name = "Schwerpunkt_Koerper"
 
 
 
Set SPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench" )
 
Ici je recupere le centre d'inertie de mon premier objet
Set Schwerpunkt = CATIA.ActiveDocument.product.GetTechnologicalObject("Inertia" )
Schwerpunkt.GetCOGPosition Koordinaten
 
 
Koordinaten(0) = Round(Koordinaten(0) * 1000, 3) ' in mm
Koordinaten(1) = Round(Koordinaten(1) * 1000, 3)
Koordinaten(2) = Round(Koordinaten(2) * 1000, 3)
MsgBox "Schwerpunkt: X = " & Koordinaten(0) & ", Y = " & Koordinaten(1) & " , Z = " & Koordinaten(2)
 
 
Dim Punkt As HybridShapePointCoord
Dim a, b, c As Double
a = Koordinaten(0)
b = Koordinaten(1)
c = Koordinaten(2)
Set Punkt = Wzk3D.AddNewPointCoord(a, b, c)
 
'Dim objekt As Selection
'Set objekt = myPart.CreateReferenceFromObject(Body)
 
Set objekt = CATIA.ActiveDocument.Selection
 
Ici j'aimerais recuperer l'objet dont le nom est Freischneiden-1 et recuperer son centre d'inertie
objekt.Search ("Name=Freischneiden-1,sel" )  
Set Element = SPAWorkbench.GetMeasurable(objekt)
 
Element.GetCOG Koordinaten1
Koordinaten1(0) = Round(Koordinaten(0), 3) ' in mm
Koordinaten1(1) = Round(Koordinaten(1), 3)
Koordinaten1(2) = Round(Koordinaten(2), 3)
 
Dim Punkt1 As HybridShapePointCoord
Dim a1, b1, c1 As Double
a1 = Koordinaten1(0)
b1 = Koordinaten1(1)
c1 = Koordinaten1(2)
Set Punkt1 = Wzk3D.AddNewPointCoord(a1, b1, c1)
 
 
'Geometrie dem geometrischen Set zuweisen
HBody1.AppendHybridShape Punkt
HBody2.AppendHybridShape Punkt1
myPart.Update
 
 
En esperant que vous pouvez m'aider
Merci par avance
Matt
 

Reply

Marsh Posté le 16-02-2016 à 12:32:17   

Reply

Marsh Posté le 16-02-2016 à 15:29:59    

laurmatt a écrit :


 
Set objekt = CATIA.ActiveDocument.Selection
 
Ici j'aimerais recuperer l'objet dont le nom est Freischneiden-1 et recuperer son centre d'inertie
objekt.Search ("Name=Freischneiden-1,sel" )  
Set Element = SPAWorkbench.GetMeasurable(objekt)


 
Bonjour,
 
Tu ne cherches que dans la sélection actuelle avec l'argument "sel". En supposant que ton objet Freischneiden est un body, je partirai plutôt sur la recherche suivante: objekt.Search("(Name=Freischneiden-1 & 'Part Design'.Body),all" )
Ensuite, tu essayes de créer ton measurable à partir de ta sélection au lieu du contenu de la sélection. Utilise plutôt: Set Element = SPAWorkbench.GetMeasurable(objekt.Item(1).Value)

Reply

Marsh Posté le 17-02-2016 à 13:33:00    

Merci beaucoup pour ta reponse, malheureusement cela ne marche pas chez moi, j'obtiens tout le temps le meme message d'erreur:
method "item" of "selection" failed
 
En fait j'essaye d'ecrire un macro dans lequel on calculerais le centre d'inertie de deux pieces pour ensuite deplacer une piece sur l'autre et enfin la redimensionner avec une bounding box.
J'ai deja reussi a creer la bounding box, mais malheureusement je n'arrive pas a faire la translation d'une piece sur l'autre. Peut etre qu'il y a une autre methode que de passer par le centre d'inertie...
 
En tout cas merci pour ton aide
Matt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed