Création de pionts, changement de référence
Page 1 sur 1
Création de pionts, changement de référence
Salut,
Je suis à la recherche d'une maninère pas trop compliqué pour rérupéré la position de "pionts clefs "de parts dans un product et d'en créé un setgémometrique dans une dernière part.
J'arrive à quelque chose mais il me faut utiliser des matrice de passage de changement de repère, c'est assez lourd.
Je sais ressortir les coordonée de point dans une part ainsi que les coordonée d'une part dans le referenciel du produit.
De là avec la fonction " AddNewPointCoord(X,Y,Z) " je sais créer les pionts dans un set géometrique de la part que je veux.
mais voilà il faut passer par une matrice de passage pour convertir chaque point de chaque part dans le nouveau referenciel, c'est source d'erreur pour une quantité de plus de1000 points à créer.
Il y a peut être moyen d'extaire directement les coordonnés des pionts directement dans le referenciel produit
J'ai répéré la fonction " AddNewPointCoordWithReference( double iX, double iY, double iZ, Reference iPt) As HybridShapePointCoord " mais je ne pige pas comment doit être définie le référence.
des idées?
Je suis à la recherche d'une maninère pas trop compliqué pour rérupéré la position de "pionts clefs "de parts dans un product et d'en créé un setgémometrique dans une dernière part.
J'arrive à quelque chose mais il me faut utiliser des matrice de passage de changement de repère, c'est assez lourd.
Je sais ressortir les coordonée de point dans une part ainsi que les coordonée d'une part dans le referenciel du produit.
De là avec la fonction " AddNewPointCoord(X,Y,Z) " je sais créer les pionts dans un set géometrique de la part que je veux.
mais voilà il faut passer par une matrice de passage pour convertir chaque point de chaque part dans le nouveau referenciel, c'est source d'erreur pour une quantité de plus de1000 points à créer.
Il y a peut être moyen d'extaire directement les coordonnés des pionts directement dans le referenciel produit
J'ai répéré la fonction " AddNewPointCoordWithReference( double iX, double iY, double iZ, Reference iPt) As HybridShapePointCoord " mais je ne pige pas comment doit être définie le référence.
des idées?
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Création de pionts, changement de référence
Pour ceux qui cherches quelque chose de similaire voici ma macro
Il ne manque que les formules de passage, car je ne les ais pas encore défini
J'utilise des noms de set géométriques particulers, c'est une marco non fonctionel mais en cour de developpement
Pour que vous puissiez là faire fonctioner
le set géométrique des part dans les sont les point clef doit s'appeler
points_clef
le nom du set géométrique dans la part de destination
Set géométrique.1
Les point créés ont pour coordonées 0.0.0 puisques les variable X,Y,Z utiliser pour créer les nouveaux points ne sont pas défins
Il ne manque que les formules de passage, car je ne les ais pas encore défini
J'utilise des noms de set géométriques particulers, c'est une marco non fonctionel mais en cour de developpement
Pour que vous puissiez là faire fonctioner
le set géométrique des part dans les sont les point clef doit s'appeler
points_clef
le nom du set géométrique dans la part de destination
Set géométrique.1
Les point créés ont pour coordonées 0.0.0 puisques les variable X,Y,Z utiliser pour créer les nouveaux points ne sont pas défins
- Code:
Sub CATMain()
Dim product_base As Product, _
product_dest As Product, _
produit_parent As Product, _
documents As documents, _
produit_analyser As Product, _
part_dest As Part, _
hybridBody3 As HybridBody, _
hybridShapeFactory3 As HybridShapeFactory, _
hybridShapePointCoord3 As HybridShapePointCoord, _
hybridShapePointCoord3 As HybridShapePointCoord
Dim oshapes As Object, _
oposition As Object
Dim PointName, _
X, Y, Z, _
VecteurX(2), VecteurY(2), VecteurZ(2), Origine(2), _
pos(11), point(2), _
I, A
Set product_base = select_product("part contenant les points clés") 'séléction du produit contenant le set géométriqeu à lire
Set product_dest = select_product("part de destination") 'séléction du produit où seront insérés le nouveaux points
'---- exctraction du nom des part
nom_base = Left(product_base.Name, InStr(1, product_base.Name, "."))
nom_dest = Left(product_dest.Name, InStr(1, product_dest.Name, "."))
'--- fin extraction
Set produit_parent = product_base.Parent
comptage = produit_parent.Products.Count
Set part_dest = documents.Item(nom_dest & "CATPart").Part
Set hybridBody3 = documents.Item(nom_dest & "CATPart").Part.HybridBodies.Item("Set géométrique.1")
Set hybridShapeFactory3 = documents.Item(nom_dest & "CATPart").Part.HybridShapeFactory
message = ""
'---- traitement de chaque part
For A = 1 To comptage
If Left(produit_parent.Products.Item(A).Name, InStr(1, product_base.Name, ".")) = nom_base Then
Set oposition = produit_parent.Products.Item(A).position
Set oshapes = documents.Item(nom_base & "CATPart").Part.HybridBodies.Item("points_clef").HybridShapes
For I = 1 To oshapes.Count Step 1
If TypeName(oshapes.Item(I)) = "HybridShapePointCoord" Or TypeName(oshapes.Item(I)) = "HybridShapePointExplicit" Then
oshapes.Item(I).GetCoordinates point 'extrction de coordonées point dans le repère pièce
oposition.GetComponents pos 'extrction de coordonnés repère pièce dans repere général
message = message & nom_base & A & " - " & oshapes.Item(I).Name & "(" & Join(point, ",") & ")" & vbLf
' décomposition données coordonées repère de la pièce
VecteurX(0) = pos(0)
VecteurX(1) = pos(1)
VecteurX(2) = pos(2)
VecteurY(0) = pos(3)
VecteurY(1) = pos(4)
VecteurY(2) = pos(5)
VecteurZ(0) = pos(6)
VecteurZ(1) = pos(7)
VecteurZ(2) = pos(8)
Origine(0) = pos(9)
Origine(1) = pos(10)
Origine(2) = pos(11)
'X=
'Y=
'Z=
PointName = A & I
Set hybridShapePointCoord3 = hybridShapeFactory3.AddNewPointCoord(X, Y, Z)
hybridBody3.AppendHybridShape hybridShapePointCoord3
part_dest.InWorkObject = hybridShapePointCoord3
hybridShapePointCoord3.Name = PointName
End If
Next
End If
MsgBox Join(pos, vbCrLf)
Next
MsgBox message
part_dest.Update
End Sub
Function select_product(texte As String) As Object ' fonction séléctionant un porduit
Dim EnableSelectionFor(0), UserSelection
EnableSelectionFor(0) = "Product"
Set selection = CATIA.ActiveDocument.selection
selection.Clear
MsgBox texte
UserSelection = selection.SelectElement2(EnableSelectionFor, texte, False)
If UserSelection <> "Normal" Then
message = MsgBox("Erreur avec la sélèction!", vbCritical, "Error")
Exit Function
Else
Set select_product = selection.Item(1).Value 'retourne la part séléctioner
End If
End Function
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Création de pionts, changement de référence
Bon j'ai rebossé sur ma macro, mais je ne trouve toujours pas la solution.
Il y a un objet qui s'appelle HybridShapePointExplicit
qui visiblement définir un point ayant une référence externe, mais je n'ai aucune idée de comment créé un tel objet, je ne trouve que des moyen d'en lire les paramètres.
Quelqu'un aurait-il par hasard réussi à créer via une macro un point ayant une référence externe ?
Il y a un objet qui s'appelle HybridShapePointExplicit
qui visiblement définir un point ayant une référence externe, mais je n'ai aucune idée de comment créé un tel objet, je ne trouve que des moyen d'en lire les paramètres.
Quelqu'un aurait-il par hasard réussi à créer via une macro un point ayant une référence externe ?
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|