legato Posté(e) le 11 avril 2006 Posté(e) le 11 avril 2006 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.AxisSystemsi = 0For Each Axes In AxisSystemColli = i + 1Set 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 SubEnd IfNext 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 colonneDim det As DoubleDim M_1(0 To 2, 0 To 2) As Doubledet = ((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 vecteursMInverse = 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 FunctionFunction init() Dim TypeFichier As Integer Dim PtDoc As Object Set PtDoc = GetCATIAPartDocument1 End FunctionFunction 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 FunctionFunction 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 = CATIAEnd Function [Edité le 11/4/2006 par legato]
CATDEV Posté(e) le 13 avril 2006 Posté(e) le 13 avril 2006 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.
legato Posté(e) le 13 avril 2006 Auteur Posté(e) le 13 avril 2006 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. :(
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant