Bonjour à tous, Je me suis lancé dans la programmation VBA de Catia en raison d'une reconstitution de maillage. :huh: En donnée d'entrée j'ai 2 fichiers excel : -L'un contenant des points avec leur coordonnées et leur identifiant : Point A : 0.0 0.0 0.0 Point B : 1.0 2.0 3.0 etc -L'autre contenant les barres avec leur identifiant et les points reliés : Barre1 : PointA PointB Barre2 : PointA PointC Avec l'aide de macro excel, j'ai traité le fichier excel pour pouvoir utilisé le fichier : GSD_PointSplineLoftFromExcel (voir lien) https://d2t1xqejof9utc.cloudfront.net/files/23155/Excel_to_CATIA.pdf?1371318453 J'ai donc une part avec dans l'arborescense : Point1 point2 Spline1 Point3 Point4 Spline2 etc J'ai donc créer un programme pour : -créer sur chacun des points un plan orthogonal à la spline -créer un cercle sur les points dans un des plans de rayon radius -créer une extrusion de ce cercle jusqu'au prochain plan Le BLABLA d'entrée Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("GeometryFromExcel")
Set hybridShapes1 = hybridBody1.HybridShapes Déclaration des variables Radius =20
NombreBarre = 3 Créations des plans sur chacun des points I=1
For N= 3 to 3*NombreBarre Step 3
Set hybridShapeSpline1 = hybridShapes1.Item(N)
Set Spline1 = part1.CreateReferenceFromObject(hybridShapeSpline1)
Set hybridShapePointCoord1 = hybridShapes1.Item(I)
Set Point1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
Set hybridShapePlaneNormal1 = hybridShapeFactory1.AddNewPlaneNormal(Spline1, Point1)
hybridBody1.AppendHybridShape hybridShapePlaneNormal1
part1.InWorkObject = hybridShapePlaneNormal1
Set hybridShapePointCoord2 = hybridShapes1.Item(I+1)
Set Point2 = part1.CreateReferenceFromObject(hybridShapePointCoord2)
Set hybridShapePlaneNormal2 = hybridShapeFactory1.AddNewPlaneNormal(Spline1, Point2)
hybridBody1.AppendHybridShape hybridShapePlaneNormal2
part1.InWorkObject = hybridShapePlaneNormal2
I=I+3
Next part1.Update Création de l'esquisse du cercle For K=NombreBarre*3+1 to NombreBarre*5 Step 2
Set sketches1 = hybridBody1.HybridSketches
Set hybridShapes1 = hybridBody1.HybridShapes
Set reference1 = hybridShapes1.Item(K)
Set sketch1 = sketches1.Add(reference1)
part1.InWorkObject = sketch1
Set factory2D1 = sketch1.OpenEdition()
Set circle2D =factory2D1.CreateClosedCircle(0,0, radius)
sketch1.CloseEdition
part1.InWorkObject = hybridBody1
Next
part1.Update Créations des extrusions pour chacunes des esquisses P=NombreBarre*3+2
For J= 1 to NombreBarre
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Corps principal")
part1.InWorkObject = body1
part1.InWorkObject = body1
Set shapeFactory1 = part1.ShapeFactory
Set Ref8 = part1.CreateReferenceFromName("")
Set pad1 = shapeFactory1.AddNewPadFromRef(Ref8, 20.000000)
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("GeometryFromExcel")
Set sketches2 = hybridBody1.HybridSketches
Set sketch2 = sketches1.Item(J)
Set reference9 = part1.CreateReferenceFromObject(sketch2)
pad1.SetProfileElement reference9
Set limit1 = pad1.FirstLimit
limit1.LimitMode = catUpToPlaneLimit
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapePlaneNormal1 = hybridShapes1.Item(P)
Set reference10 = part1.CreateReferenceFromObject(hybridShapePlaneNormal1)
limit1.LimitingElement = reference10
P=P+2
Next part1.Update End Sub j'ai globalement construit mon raisonnement sur la place des items dans l'arborescence. -Spline -Point -Point etc -Plan etc -Esquisse etc Voila en gros mon programme, il fonctionne !!! je voulais donc avoir des suggestions sur l'amélioration de mon programme, rapidité etc Et également comment intégrer une toolbox pour entrer en lancement du programme les paramètres nombre de barre / radius (rayon du cylindre d'extrusion) Merci d'avance :)