Aller au contenu

probléme prog vba pour catiaV5


Messages recommandés

Posté(e)

bonjour tout le monde, :)

 

j ai un petit dev a faire pour catia v5, je cherche a ouvrir un fichier catiaV4 en tant que catpart.

 

je m'explique :

 

le but principal de cette manipe est de pouvoir recupéré le current axys du fichier model et dans sortir les vecteurs.

 

le probléme est que pour pouvoir récup les axys a l aide de la fonction monfichier_catia.AxisSystems je doit etre dans un catproduct et non pas dans un je ne sais pas trop quoi quand je double click sur mon fichier model

 

autrement je ne suis pas utilisateur catia et le dev est a faire sous vba excel pour d autre raison technique

 

merci d'avance

 

 

je joint le code

 

 

Sub CATMain(MyPartDocument As Object)

 

 

 

Set AxisSystemColl = MyPartDocument.Part.AxisSystems

i = 0

For Each Axes In AxisSystemColl

i = i + 1

Set ThisAxisSystem = AxisSystemColl.Item(i)

 

If ThisAxisSystem.IsCurrent = 1 Then

 

'recuperation des vecteurs du systeme d'axes

Dim vectX(2)

ThisAxisSystem.GetXAxis vectX

'MsgBox ("Xx: " & vectX(0))

'MsgBox ("Xy: " & vectX(1))

'MsgBox ("Xz: " & vectX(2))

 

Dim vectY(2)

ThisAxisSystem.GetYAxis vectY

'MsgBox ("Yx: " & vectY(0))

'MsgBox ("Yy: " & vectY(1))

'MsgBox ("Yz: " & vectY(2))

 

Dim vectZ(2)

ThisAxisSystem.GetZAxis vectZ

'MsgBox ("Zx: " & vectZ(0))

'MsgBox ("Zy: " & vectZ(1))

'MsgBox ("Zz: " & vectZ(2))

 

Dim matInverse As Variant

Dim M(2, 2) As Double 'CREATION DE LA MATRICE M pour l'inverser

M(0, 0) = vectX(0)

M(0, 1) = vectY(0) 'vectX(0) vectY(0) vectZ(0)

M(0, 2) = vectZ(0) 'vectX(1) vectY(1) vectZ(1)

M(1, 0) = vectX(1) 'vectX(2) vectY(2) vectZ(2)

M(1, 1) = vectY(1)

M(1, 2) = vectZ(1) '

M(2, 0) = vectX(2)

M(2, 1) = vectY(2)

M(2, 2) = vectZ(2)

 

matInverse = MInverse(M) 'invertion

'coordonnee

Dim originCoord(2)

ThisAxisSystem.GetOrigin originCoord

'MsgBox ("coord x: " & originCoord(0))

'MsgBox ("coord y: " & originCoord(1))

'MsgBox ("coord z: " & originCoord(2))

 

Dim pret16(15) As Double 'matrice pret pour exporter

 

Dim j As Integer

For j = 0 To 11

pret16(j) = matInverse(j)

Next j

 

 

pret16(12) = -originCoord(0)

pret16(13) = -originCoord(1)

pret16(14) = -originCoord(2)

pret16(15) = 1

 

Dim str As String

str = "16 chiffres pret: " & Chr(10)

For j = 0 To 15

str = str & pret16(j) & Chr(10)

Next j

MsgBox (str)

 

Exit Sub

End If

Next Axes

 

End Sub

 

Function MInverse(M)

'prend la forme de table 2 dimesions, sort le variable variant a la forme d'une table 1 dimesion ordre par colonne

Dim det As Double

Dim M_1(0 To 2, 0 To 2) As Double

det = ((M(0, 0) * ((M(1, 1) * M(2, 2)) - (M(1, 2) * M(2, 1)))) - (M(0, 1) * ((M(1, 0) * M(2, 2)) - (M(1, 2) * M(2, 0)))) + (M(0, 2) * ((M(1, 0) * M(2, 1)) - (M(1, 1) * M(2, 0)))))

 

M_1(0, 0) = (((M(1, 1) * M(2, 2) - M(1, 2) * M(2, 1))) / det)

M_1(0, 1) = (((M(0, 2) * M(2, 1) - M(0, 1) * M(2, 2))) / det)

M_1(0, 2) = (((M(0, 1) * M(1, 2) - M(0, 2) * M(1, 1))) / det)

 

M_1(1, 0) = (((M(1, 2) * M(2, 0) - M(1, 0) * M(2, 2))) / det)

M_1(1, 1) = (((M(0, 0) * M(2, 2) - M(0, 2) * M(2, 0))) / det)

M_1(1, 2) = (((M(0, 2) * M(1, 0) - M(0, 0) * M(1, 2))) / det)

 

M_1(2, 0) = (((M(1, 0) * M(2, 1) - M(1, 1) * M(2, 0))) / det)

M_1(2, 1) = (((M(0, 1) * M(2, 0) - M(0, 0) * M(2, 1))) / det)

M_1(2, 2) = (((M(0, 0) * M(1, 1) - M(0, 1) * M(1, 0))) / det)

'avec 0 entre les vecteurs

MInverse = Array(M_1(0, 0), M_1(1, 0), M_1(2, 0), 0, M_1(0, 1), M_1(1, 1), M_1(2, 1), 0, M_1(0, 2), M_1(1, 2), M_1(2, 2), 0)

End Function

Function init()

Dim TypeFichier As Integer

Dim PtDoc As Object

Set PtDoc = GetCATIAPartDocument1

 

 

End Function

Function GetCATIAPartDocument1() As Object

Set CATIA = GetCATIA1

 

Dim MyPartDocument As Object

Set MyPartDocument = CATIA.ActiveDocument

 

Set GetCATIAPartDocument = MyPartDocument

'Call CATMain(MyPartDocument)

Call copie_model(MyPartDocument)

End Function

Function GetCATIA1() As Object

Set CATIA = GetObject(, "CATIA.Application")

If CATIA Is Nothing Then

Set CATIA = CreateObject("CATIA.Application")

CATIA.Visible = True

End If

 

Set GetCATIA1 = CATIA

End Function

 

 

 

[Edité le 11/4/2006 par legato]

Posté(e)

Bonjour,

 

Si ce n'est que pour passer de CATIA V4 en V5, il existe une moulinette qui fait ça.

 

[surligneur] Pourquoi développer?[/surligneur]

 

Y-a-t-il autre chose?

 

Cordialement.

Posté(e)

dsl si je me suis mal exprimé.

 

1 ---> concernant le batch de convertion v4 v5 pour moi c de la merde :( mais bon j ai peut etre mal paramétré ( sa sort 3 fichier pour 1 model et sa plante comme il faut)

 

2 ---> autement le but de la manip est de pouvoir recupéré les valeur du current axis qui je le précise n ai pas forcement l axe de création de la piéce de facon a pouvoir créer une matrice de position pour envoyer dans un autre logiciel.

le probleme de position ne se pose pas si tu ouvre la piece dans V4 ou V5 si tu a bien penser a lui dire de la mettre en position, autrement il fait comme les autres logiciel il t ouvre t as piece au zéro de création.Je prend un exemple :

 

--> tu dessine une roue de voiture ton repere de création va etre au milieu de la roue

--> tu met la roue en position dans v4 ( je ne connait pas la methode)

--> tu sauve la position

---> quand tu réouvre la piece tu as la possibiliter de l ouvrir soit en position ,soit la roue revient au zéro de création:/

 

et donc quand je converti m a piece en format neutre par un logiciel de convertion j iai ma roue de voiture qui est converti au zéro de création, donc sa pause probléme.

 

le code que jai mit comprend la matrice de calcul qui est fausse soit dit en passant ^^

la méthode de récupération des valeur du current axis d un catproduct.

 

et la est bien mon malheur quand j ouvre une piece catia V4 dans V5 elle s ouvre en je ne sais quoi. :(

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité