Créer un axis system??

Voir le sujet précédent Voir le sujet suivant Aller en bas

R?solu Créer un axis system??

Message par jbinder le Jeu 7 Mai 2015 - 2:58

Bonjour,

Savez vous s'il est possible de créer un axis system á partir d'une macro?
J'en aurai bien besoin dans la mienne, et j'ai beau feuilleter la doc de programmation (VBA/CATIA), je ne trouve rien à ce sujet...  Crying or Very sad

Merci pour votre aide,

Jérémy


Dernière édition par jbinder le Jeu 7 Mai 2015 - 21:07, édité 2 fois

jbinder
timide
timide

Messages : 12
Date d'inscription : 23/04/2015
Localisation : Stuttgart

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par jbinder le Jeu 7 Mai 2015 - 4:35

J'ai trouvé un bout de code sur internet, mais je n'arrive pas à l'adapter à VBA (Excel)...

Je précise que je n'ai fait aucune erreur sur la déclaration des References (Ref1: Point origine, RefX/Y/Z Respectivement Axe X/Y/Z)
J'obtiens l'erreur suivante: Erreur type '5'   Procédure d'appel ou argument invalide

Code:
'Create The AxisSystem
        Set Axis = PtDoc.Part.AxisSystems.Add
        Axis.Type = catAxisSystemStandard
        Axis.OriginType = catAxisSystemOriginByPoint '0
        Axis.OriginPoint = Ref1
        Axis.XAxisType = catAxisSystemAxisSameDirection '0
        Axis.YAxisType = catAxisSystemAxisSameDirection '0
        Axis.ZAxisType = catAxisSystemAxisSameDirection '0
        Set RefY = PtDoc.Part.CreateReferenceFromObject(LinieY)
        Set RefZ = PtDoc.Part.CreateReferenceFromObject(LinieZ)
        Axis.XAxisDirection = RefX
        Axis.YAxisDirection = RefY
        Axis.ZAxisDirection = RefZ
        
        PtDoc.Part.UpdateObject Axis

jbinder
timide
timide

Messages : 12
Date d'inscription : 23/04/2015
Localisation : Stuttgart

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par PhilippeC le Jeu 7 Mai 2015 - 6:00

Bonjour Jbinder

L' objet ref1 doit être defini en tant que point et RefX, RefY, RefZ doivent être definis en  tant que point, ligne ou plan.

Mais peut être que ton script est incomplet ?

Test avec un CATIAscript or catvba avant de lancer dans excel.

voir doc ci-joint

Cordialement

Property OriginPoint( ) As Reference  

Returns or sets the geometric point which defines the origin of the axis system.
OriginPoint is and must be a reference on a geometric 3D point.

Property XAxisDirection

Reads or sets the geometric point, line or plane which defines the direction of the X axis.
AxisDirection is and must be a reference on a 3D point or 3D line or plane.

PhilippeC
timide
timide

Messages : 13
Date d'inscription : 05/04/2015
Age : 58
Localisation : toulouse

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par mike688 le Jeu 7 Mai 2015 - 19:11

un autre souci qui peut arriver aussi c'est que c'est la declaration même qui met la bordel.
essai sans definir le type
avatar
mike688
actif
actif

Messages : 255
Date d'inscription : 23/12/2009
Age : 35
Localisation : Portieux (88)

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par jbinder le Jeu 7 Mai 2015 - 19:16

Bonjour Philippe, bonjour mike!

-J'ai testé dans catvba et aucun problème, ca fonctionne parfaitement!
Mais je n'arrive pas à adapter ce bout de code sur excel...

-Je teste sans définir et si ca fonctionne toujours pas, je poste un code bien propre avec tous les objets définis.

Merci pour votre aide!

jbinder
timide
timide

Messages : 12
Date d'inscription : 23/04/2015
Localisation : Stuttgart

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par jbinder le Jeu 7 Mai 2015 - 19:30

Toujours le message d'erreur, même en zappant les définitions.

Voila le code un peu plus complet:

Code:

Sub GeometryStart(PTab() As Double, Nom As String)     'PTab() est un tableau contenant des caract. géo'

'Get CATIA and create bodies
    Dim PtDoc, MeineKoerper, HBodies, Parameter As Object
    Set PtDoc = GetCATIAPartDocument
    Set MeineKoerper = PtDoc.Part.Bodies
    Set HBodies = PtDoc.Part.HybridBodies
        
    Dim Koerper As Object
    Set Koerper = MeineKoerper.Add()
    Koerper.Name = Nom
    
'Create Abschnitte and Schnitte
    Set FA = HBodies.Add()
    FA.Name = Nom & "_Abschnitt"
        
    For i = 1 To 2 * PTab(0, 0)
            
        Set FS = FA.HybridBodies.Add()
        FS.Name = Nom & "_Schnitt_" & i

'Create the origin points
        Dim Punkt As Object
        Set Punkt = PtDoc.Part.HybridShapeFactory.AddNewPointCoord(PTab(i, 1), PTab(i, 2), PTab(i, 3))    
        Punkt.Name = "Ursprung_Schnitt_" & i
        FS.AppendHybridShape Punkt

'Create the X Lines
        Dim Ref1, Richtung, LinieX As Object
        Set Ref1 = PtDoc.Part.CreateReferenceFromObject(Punkt)
        Set Richtung = PtDoc.Part.HybridShapeFactory.AddNewDirectionByCoord(10, 0, 0)
        Set LinieX = PtDoc.Part.HybridShapeFactory.AddNewLinePtDir(Ref1, Richtung, 0, 300, False)
        LinieX.Name = Nom & "_LinieX_Schnitt_" & i
        FS.AppendHybridShape LinieX

'Create the "Winkel-Ebene" and the perpendicular-Ebene
        Dim RefX, UrsprungsElemente, EbeneXY, Ref3, Ebene2, Ref4, Ebene3 As Object
        Set RefX = PtDoc.Part.CreateReferenceFromObject(LinieX)
        Set UrsprungsElemente = PtDoc.Part.OriginElements
        Set EbeneXY = UrsprungsElemente.PlaneXY
        Set Ref3 = PtDoc.Part.CreateReferenceFromObject(EbeneXY)
        Set Ebene2 = PtDoc.Part.HybridShapeFactory.AddNewPlaneAngle(Ref3, RefX, PTab(i, 5), 0)
        FS.AppendHybridShape Ebene2
        Set Ref4 = PtDoc.Part.CreateReferenceFromObject(Ebene2)
        Set Ebene3 = PtDoc.Part.HybridShapeFactory.AddNewPlaneAngle(Ref4, RefX, 90, 0)
        FS.AppendHybridShape Ebene3

'Create the Y Lines
        Dim Richtung2, LinieY As Object
        Set Richtung2 = PtDoc.Part.HybridShapeFactory.AddNewDirection(Ebene3)
        Set LinieY = PtDoc.Part.HybridShapeFactory.AddNewLinePtDir(Ref1, Richtung2, 0, 300, -1)
        LinieY.Name = Nom & "_LinieY_Schnitt_" & i
        FS.AppendHybridShape LinieY


'Create the Z Lines
        Dim richtung3, LinieZ As Object
        Set Richtung3 = PtDoc.Part.HybridShapeFactory.AddNewDirection(Ebene2)
        Set LinieZ = PtDoc.Part.HybridShapeFactory.AddNewLinePtDir(Ref1, Richtung3, 0, 300, False)
        LinieZ.Name = Nom & "_LinieZ_Schnitt_" & i
        FS.AppendHybridShape LinieZ


'Create The AxisSystem
        Dim Axis, RefY, RefZ As Object
        Set Axis = PtDoc.Part.AxisSystems.Add
        Axis.Type = catAxisSystemStandard
        Axis.OriginType = catAxisSystemOriginByPoint '0
        Axis.OriginPoint = Ref1
        Axis.XAxisType = catAxisSystemAxisSameDirection '0
        Axis.YAxisType = catAxisSystemAxisSameDirection '0
        Axis.ZAxisType = catAxisSystemAxisSameDirection '0
        Set RefY = PtDoc.Part.CreateReferenceFromObject(LinieY)
        Set RefZ = PtDoc.Part.CreateReferenceFromObject(LinieZ)
        Axis.XAxisDirection = RefX
        Axis.YAxisDirection = RefY
        Axis.ZAxisDirection = RefZ
        
        PtDoc.Part.UpdateObject Axis



jbinder
timide
timide

Messages : 12
Date d'inscription : 23/04/2015
Localisation : Stuttgart

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par jbinder le Jeu 7 Mai 2015 - 21:06

Ok, j'ai trouvé.
Le code que j'avais testé en CatVBA n'était pas tout a fait semblable à ce que je voulais faire, il partait d'une origine et d'axes déjà crées manuellement tandis que moi je souhaitais les créer à partir de la macro.
Et en testant tout ca sur CatVBA, je me suis rendu compte que les axis system nous demande pour fonctionner, d'actualiser régulièrement le CATIA.ActiveDocument.Part

C'est la première fois que ca me fait ca avec du catvba mais du coup la solution consistait à mettre à jour la part après chaque création de nouvelles entités nécéssaire à la création de l'axis system...

Du coup le code est exactement le même que celui que j'ai posté au dessus mais avec des: PtDoc.Part.Update partout Smile

Merci pour votre aide

jbinder
timide
timide

Messages : 12
Date d'inscription : 23/04/2015
Localisation : Stuttgart

Revenir en haut Aller en bas

R?solu Re: Créer un axis system??

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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