Aller au contenu

Macro extrusion


RemyT

Messages recommandés

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 :)

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité