Script VBA deffectueux

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

Script VBA deffectueux

Message par Snoop92i le Ven 2 Mar 2012 - 3:29

Bonjour à tous,

Plus que débutant en Prog VBA, mais "expert" Catia V5, je cherche à automatiser des conceptions...
Pour ce faire, et m'entrainer sur quelque chose de "simple", j'ai créé un Product (luminaire) dans lequel se trouve une part (squelette) et une autre dans laquelle je vais construire l'objet (lampe) !

J'enregistre une macro :
- activation de la part (Lampe)
- un cercle qui s'appui sur le point de la part (squelette)
- puis un balayage qui s'appui sur la courbe de la part (squelette)

Voila le script sortant :

Sub CATMain()

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument1 As PartDocument
Set partDocument1 = documents1.Item("Lampe.CATPart")

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim hybridShapePointExplicit1 As HybridShapePointExplicit
Set hybridShapePointExplicit1 = parameters1.Item("Point.1")

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointExplicit1)

Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements

Dim hybridShapePlaneExplicit1 As HybridShapePlaneExplicit
Set hybridShapePlaneExplicit1 = originElements1.PlaneXY

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)

Dim hybridShapeCircleCtrRad1 As HybridShapeCircleCtrRad
Set hybridShapeCircleCtrRad1 = hybridShapeFactory1.AddNewCircleCtrRad(reference1, reference2, False, 20#)

hybridShapeCircleCtrRad1.DiameterMode = True

hybridShapeCircleCtrRad1.SetLimitation 1

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Construction")

hybridBody1.AppendHybridShape hybridShapeCircleCtrRad1

part1.InWorkObject = hybridShapeCircleCtrRad1

part1.Update

Dim reference3 As Reference
Set reference3 = part1.CreateReferenceFromObject(hybridShapeCircleCtrRad1)

Dim parameters2 As Parameters
Set parameters2 = part1.Parameters

Dim hybridShapeCurveExplicit1 As HybridShapeCurveExplicit
Set hybridShapeCurveExplicit1 = parameters2.Item("Curve.1")

Dim reference4 As Reference
Set reference4 = part1.CreateReferenceFromObject(hybridShapeCurveExplicit1)

Dim hybridShapeSweepExplicit1 As HybridShapeSweepExplicit
Set hybridShapeSweepExplicit1 = hybridShapeFactory1.AddNewSweepExplicit(reference3, reference4)

hybridShapeSweepExplicit1.SubType = 1

hybridShapeSweepExplicit1.SetAngleRef 1, 0#

hybridShapeSweepExplicit1.SolutionNo = 0

hybridShapeSweepExplicit1.SmoothActivity = False

hybridShapeSweepExplicit1.GuideDeviationActivity = False

hybridShapeSweepExplicit1.SetbackValue = 0.02

hybridShapeSweepExplicit1.FillTwistedAreas = 1

hybridBody1.AppendHybridShape hybridShapeSweepExplicit1

part1.InWorkObject = hybridShapeSweepExplicit1

part1.Update

part1.Update

End Sub


Mais quand je le relance, il ne se rejoue pas et bloque dès la ligne surlignée en BLEU ! :calim2:

Et je ne comprends pas pourquoi la macro créée des noms tel que "Part1" alors que j'ai renommé ces fameuse part (squelette, lampe,...) !?

En gros des que je veux m'appuyer sur un élément externe de la part dans laquelle je travaille, cela ne fonctionne pas ExclamationExclamation!

Si l'un d'entre vous peux m'apporter son aide, je serais ravis....Embarassed

Merci d'avance....


Dernière édition par Threedots le Ven 2 Mar 2012 - 4:52, édité 1 fois (Raison : Threedots : Passage en bleu ^^')

Snoop92i
timide
timide

Messages : 3
Date d'inscription : 02/03/2012
Localisation : 78160

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par Threedots le Ven 2 Mar 2012 - 4:49

Si tu surlignes ta ligne en bleu, on la repèrera mieux... ^^'

Je croyais que l'enregistrement d'une macro enregistrait uniquement un fichier CATScript, et non un VBA...
Ces deux codes ne sont pas compatibles, si ?

Bon courage en tout cas !
avatar
Threedots
Fédérateur
Fédérateur

Messages : 617
Date d'inscription : 16/09/2010
Age : 29
Localisation : Toulouse

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par flo le Ven 2 Mar 2012 - 6:07

l'enregistrement d'une macro peut enregistré en vbscript aussi. Quand tu relance ta macro, tu a bien sélectionner le point 1 ? (mais pour être honnête, je pense que le problème vient d'autre par).
De plus, lorsque catia écris "Set part1 = partDocument1.Part", les part1 sont des variables qui pourrait tout aussi bien être "toto". Sinon, je pense qu'en moitié moins de ligne tu peut faire la même chose (moins de ligne = meilleur compréhension et moins d'erreur). Si tu édite ta macro avec VBA (alt F11) tu peut utiliser l'aide VBA sur catia (F1) en mettant ton curseur sur un mot.

_________________
i52500K-GTX560TI-8Go
Windows 7 pro x64 - Solidworks 2013 (CATIA V5R20)
avatar
flo
Fédérateur
Fédérateur

Messages : 455
Date d'inscription : 22/01/2011
Age : 27
Localisation : Angers

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par flo le Ven 2 Mar 2012 - 6:16

par contre, ce qui m'ettone, c'est que ça marche pour moi.
Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("Set géométrique.1")

Set hybridShapes1 = hybridBody1.HybridShapes

Set hybridShapePointCoord1 = hybridShapes1.Item("Point_initial")

Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)

Set originElements1 = part1.OriginElements

Set hybridShapePlaneExplicit1 = originElements1.PlaneXY

Set reference2 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)

Set hybridShapeCircleCtrRad1 = hybridShapeFactory1.AddNewCircleCtrRad(reference1, reference2, False, 5.000000)

hybridShapeCircleCtrRad1.SetLimitation 1

hybridBody1.AppendHybridShape hybridShapeCircleCtrRad1

part1.InWorkObject = hybridShapeCircleCtrRad1

part1.Update

Set reference3 = part1.CreateReferenceFromObject(hybridShapeCircleCtrRad1)

Set sketches1 = hybridBody1.HybridSketches

Set sketch1 = sketches1.Item("Courbe")

Set reference4 = part1.CreateReferenceFromObject(sketch1)

Set hybridShapeSweepExplicit1 = hybridShapeFactory1.AddNewSweepExplicit(reference3, reference4)

hybridShapeSweepExplicit1.SubType = 1

hybridShapeSweepExplicit1.SetAngleRef 1, 0.000000

hybridShapeSweepExplicit1.SolutionNo = 0

hybridShapeSweepExplicit1.SmoothActivity = False

hybridShapeSweepExplicit1.GuideDeviationActivity = False

hybridShapeSweepExplicit1.SetbackValue = 0.020000

hybridShapeSweepExplicit1.FillTwistedAreas = 1

hybridBody1.AppendHybridShape hybridShapeSweepExplicit1

part1.InWorkObject = hybridShapeSweepExplicit1

part1.Update

part1.Update

End Sub
avec "point_initial" mon point initial et "courbe", ma courbe

_________________
i52500K-GTX560TI-8Go
Windows 7 pro x64 - Solidworks 2013 (CATIA V5R20)
avatar
flo
Fédérateur
Fédérateur

Messages : 455
Date d'inscription : 22/01/2011
Age : 27
Localisation : Angers

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par Guss_ le Mer 7 Mar 2012 - 21:35


Mais quand je le relance, il ne se rejoue pas et bloque dès la ligne surlignée en BLEU ! :calim2:

c'est pas très explicite, donne nous le message d'erreur

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par Snoop92i le Jeu 8 Mar 2012 - 6:48

Merci à tous pour vos premières réponses ExclamationExclamation je plussoie

En gros je n'arrive pas en VBsript à m'appuyer sur un élément d'une autre part qui se trouve dans le même Product ....

Snoop92i
timide
timide

Messages : 3
Date d'inscription : 02/03/2012
Localisation : 78160

Revenir en haut Aller en bas

Re: Script VBA deffectueux

Message par Guss_ le Jeu 8 Mar 2012 - 20:25

Tu fais du vbscript ou du VBA?

Ce n'est pas tout à fait là même chose, le VBScript est bien plus limité que le VBA, la syntaxe parfois difère légèrement.

donne nous l'erreur qui t'est renvoyer lors de l'exectution de ton script

Dans le code que tu donne il n'est nulle part defini le produit, luminaire, je pense, dans lequel tu veut travailler, donc il te sera impossible d'y faire quelque chose Wink

ça doit etre un truc du genre

Code:

Dim porduit_luminaire as product
set porduit_luminaire = Catia.documents.item("luminaire")

definie la variable "porduit_luminaire" comme étant un produit.
asocie le produit "Catia.documents.item("luminaire")" à la variable "porduit_luminaire".


Dernière édition par Threedots le Jeu 8 Mar 2012 - 20:41, édité 1 fois (Raison : Correction d'orthographe, pour la compréhension (et j'ai tourné la phrase dans tous les sens pour la trouver celle là ! XD))

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: Script VBA deffectueux

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