CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

Macro dans catia inertie

2 participants

Aller en bas

EnCours Macro dans catia inertie

Message par Ponpon Mer 20 Jan 2016 - 12:45

Bonjour à tous,

Suite au conseil de Guss, je relance un nouveau sujet.

J'aimerais lancer la commande mesure d'inertie et exporter le fichier en texte pour l'enregistrer dans un répertoire comme le fait manuellement le logiciel.
J'ai essayé l'enregistrement de macro mais il ne se passe rien. bate

Auriez-vous des idées pour lancer cette commande?!

Bonne journée! Smile Smile Smile

Ponpon
timide
timide

Messages : 16
Date d'inscription : 28/04/2015
Localisation : Lyon

Revenir en haut Aller en bas

EnCours Re: Macro dans catia inertie

Message par lumpazepfel Jeu 21 Jan 2016 - 13:18

Bonjour Ponpon,

Je ne sais pas si cette commande est directement accessible par macro. J'ai trouvé dans l'aide CATIA ce script qui donne les valeurs de mesure d'inertie du produit selectionné et j'ai rajouté la création du fichier texte.
Code:
' COPYRIGHT DASSAULT SYSTEMES 2001
Option Explicit

' ***********************************************************************
'  Purpose    : Compute the mass and the center of gravity of a component.
'  Assumptions : A CATProduct document should be active and a component selected.
'  Author      :
'  Languages  : VBA
'  Locales    : English
'  CATIA Level : V5R6
' ***********************************************************************

Sub CATMain()

    ' Retrieve the selected component
    Dim oSelection As Selection
    Set oSelection = CATIA.ActiveDocument.Selection
    Dim oProduct As AnyObject
    On Error Resume Next
    Set oProduct = oSelection.FindObject("CATIAProduct")
    If (Err.Number <> 0) Then
        MsgBox "No selected product"
    Else
        On Error GoTo 0

        ' Compute the inertia
        Dim oInertia As AnyObject
        Set oInertia = oProduct.GetTechnologicalObject("Inertia")

        ' Read the inertia data
        Dim dMass As Double
        dMass = oInertia.Mass
        Dim dDensity As Double
        dDensity = oInertia.Density
        Dim dCoordinates(2)
        oInertia.GetCOGPosition dCoordinates
        Dim dMatrix(8)
        oInertia.GetInertiaMatrix dMatrix
        'suivant ton besoins tu peux rajouter:
        Dim dPAxes(8)
        oInertia.GetPrincipalAxes dPAxes
        Dim dPMoments(2)
        oInertia.GetPrincipalMoments dPMoments
       
    End If
    Dim oFileSys 'As FileSystem
    Set oFileSys = CATIA.FileSystem

    ' Create the name of the output file
    Dim sFileOutPath As String
    sFileOutPath = "C:\temp\Inertie" '--> Nom et chemin du fichier texte

    ' Create the  text file
    Dim oFileOut As File
    Set oFileOut = oFileSys.CreateFile("C:\temp\Inertie.txt", False) ' mettre true pour écraser un fichier existant
    Dim oStream As TextStream
    Set oStream = oFileOut.OpenAsTextStream("ForWriting")

    ' Configure ici ton fichier texte
    oStream.Write "#####################################################################" & Chr(10)
    oStream.Write "#                                                                  #" & Chr(10)
    oStream.Write "#                    INERTIA TEXT FILE                            #" & Chr(10)
    oStream.Write "#                                                                  #" & Chr(10)
    oStream.Write "#####################################################################" & Chr(10)
    oStream.Write Chr(10) & Chr(10)
    oStream.Write oProduct.Name & Chr(10)
    oStream.Write "Mass = " & CStr(dMass) & Chr(10)
    oStream.Write "Denstity = " & CStr(dDensity) & Chr(10)
    oStream.Write "Center of gravity : X = " & CStr(dCoordinates(0)) & ", Y = " + CStr(dCoordinates(1)) & ", Z = " + CStr(dCoordinates(2))
    oStream.Write "Ixx = " & CStr(dMatrix(0)) & Chr(10)
    oStream.Write "Ixy = " & CStr(dMatrix(1)) & Chr(10)
    oStream.Write "Ixz = " & CStr(dMatrix(2)) & Chr(10)
    oStream.Write "Iyx = " & CStr(dMatrix(3)) & Chr(10)
    oStream.Write "Iyy = " & CStr(dMatrix(4)) & Chr(10)
    oStream.Write "Iyz = " & CStr(dMatrix(5)) & Chr(10)
    oStream.Write "Izx = " & CStr(dMatrix(6)) & Chr(10)
    oStream.Write "Izy = " & CStr(dMatrix(7)) & Chr(10)
    oStream.Write "Izz = " & CStr(dMatrix(8)) & Chr(10)
    oStream.Write "A1x = " & CStr(dPAxes(0)) & Chr(10)
    oStream.Write "A2x = " & CStr(dPAxes(1)) & Chr(10)
    oStream.Write "A3x = " & CStr(dPAxes(2)) & Chr(10)
    oStream.Write "A1y = " & CStr(dPAxes(3)) & Chr(10)
    oStream.Write "A2y = " & CStr(dPAxes(4)) & Chr(10)
    oStream.Write "A3y = " & CStr(dPAxes(5)) & Chr(10)
    oStream.Write "A1z = " & CStr(dPAxes(6)) & Chr(10)
    oStream.Write "A2z = " & CStr(dPAxes(7)) & Chr(10)
    oStream.Write "A3Z = " & CStr(dPAxes(8)) & Chr(10)
    oStream.Write "M1 = " & CStr(dPMoments(0)) & Chr(10)
    oStream.Write "M2 = " & CStr(dPMoments(1)) & Chr(10)
    oStream.Write "M3 = " & CStr(dPMoments(2)) & Chr(10)
     
    oStream.Close
End Sub



J'espère que ça pourra te servir.
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 316
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

EnCours Re: Macro dans catia inertie

Message par Ponpon Jeu 21 Jan 2016 - 17:00

Salut Marc!

Merci pour ta réponse c'est une bonne piste pour avancer, cependant je ne peux programmer qu'en VBS dans Catia sinon il me jette!

J'ai déjà fais toute une macro de tri basée sur le texte normalisé renvoyer par la fonction mesure d'inertie... Je récupère tous les détails pièces par pièces des différents assemblages.




Ponpon
timide
timide

Messages : 16
Date d'inscription : 28/04/2015
Localisation : Lyon

Revenir en haut Aller en bas

EnCours Re: Macro dans catia inertie

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum