Créer un axis system??
2 participants
Page 1 sur 1
Créer un axis system??
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...
Merci pour votre aide,
Jérémy
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...
Merci pour votre aide,
Jérémy
Dernière édition par jbinder le Jeu 7 Mai 2015 - 11:07, édité 2 fois
jbinder- timide
- Messages : 12
Date d'inscription : 22/04/2015
Localisation : Stuttgart
Re: Créer un axis system??
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
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
- Messages : 12
Date d'inscription : 22/04/2015
Localisation : Stuttgart
Re: Créer un axis system??
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.
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.
Invité- Invité
Re: Créer un axis system??
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
essai sans definir le type
mike688- actif
- Messages : 257
Date d'inscription : 23/12/2009
Age : 43
Localisation : Portieux (88)
Re: Créer un axis system??
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!
-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
- Messages : 12
Date d'inscription : 22/04/2015
Localisation : Stuttgart
Re: Créer un axis system??
Toujours le message d'erreur, même en zappant les définitions.
Voila le code un peu plus complet:
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
- Messages : 12
Date d'inscription : 22/04/2015
Localisation : Stuttgart
Re: Créer un axis system??
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
Merci pour votre aide
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
Merci pour votre aide
jbinder- timide
- Messages : 12
Date d'inscription : 22/04/2015
Localisation : Stuttgart
Sujets similaires
» Créer un parametre de sensor
» "CREER A PARTIR DE"
» creer une esquisse sur un cylindre
» Creer une esquisse sur un cylindre.
» Créer icone automatiquement
» "CREER A PARTIR DE"
» creer une esquisse sur un cylindre
» Creer une esquisse sur un cylindre.
» Créer icone automatiquement
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum