Script VBA deffectueux
4 participants
Page 1 sur 1
Script VBA deffectueux
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 !
Si l'un d'entre vous peux m'apporter son aide, je serais ravis....
Merci d'avance....
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 !
Si l'un d'entre vous peux m'apporter son aide, je serais ravis....
Merci d'avance....
Dernière édition par Threedots le Jeu 1 Mar 2012 - 17:52, édité 1 fois (Raison : Threedots : Passage en bleu ^^')
Snoop92i- timide
- Messages : 3
Date d'inscription : 01/03/2012
Localisation : 78160
Re: Script VBA deffectueux
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 !
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 !
Threedots- Fédérateur
- Messages : 617
Date d'inscription : 16/09/2010
Age : 36
Localisation : Toulouse
Re: Script VBA deffectueux
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.
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.
flo- Fédérateur
- Messages : 455
Date d'inscription : 21/01/2011
Age : 34
Localisation : Angers
Re: Script VBA deffectueux
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
flo- Fédérateur
- Messages : 455
Date d'inscription : 21/01/2011
Age : 34
Localisation : Angers
Re: Script VBA deffectueux
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_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Script VBA deffectueux
Merci à tous pour vos premières réponses
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 ....
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
- Messages : 3
Date d'inscription : 01/03/2012
Localisation : 78160
Re: Script VBA deffectueux
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
ça doit etre un truc du genre
definie la variable "porduit_luminaire" comme étant un produit.
asocie le produit "Catia.documents.item("luminaire")" à la variable "porduit_luminaire".
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
ç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 - 9: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_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Sujets similaires
» Section programmation CatScript, VBA, VB.NET...
» Script de sauvegarde d'arbre produit non totalement déplié
» macro/script pour sauvegarder les CATDrawing d'un dossier en pdf
» Script de sauvegarde d'arbre produit non totalement déplié
» macro/script pour sauvegarder les CATDrawing d'un dossier en pdf
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum