Matthias31 Posté(e) le 3 avril 2007 Posté(e) le 3 avril 2007 Bonjour, j'ai un petit problème. J'essai de faire marcher une macro qui a pour but de créé des droites suivant un point et une direction (en l'occurrence, une autre droite). Je suis dans un product où j’ai une part, dans laquelle je crée ma droite (dans un set géométrique appelé « Std ») et qui contient mes points de référence et dans ce product j’ai un autre product ou se trouve une autre part dans laquelle j’ai mes droites de référence. Product1 -------- Part1(point de ref.).............--------- Product2 ------Part2(Droites de ref.) J’ai trouvé comment faire la sélection de mon point puis de ma droite pendant que ma macro tourne. Voici une partie du code de ma macro : Set documents1 = CATIA.Documents Set partDocument1 = documents1.Item("Part1.CATPart") Set part1 = partDocument1.Part Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Add() hybridBody1.Name = "Std" part1.InWorkObject = hybridBody1 CATIA.ActiveDocument.Selection.Clear Set partDocument1 = CATIA.ActiveDocument Dim mySel As Selection Set mySel = partDocument1.Selection '------------------------------------------------------------------ 'Selection du point. ReDim SelectionAtBeginning(mySel.Count) For SelectionObjectIndex = 0 To mySel.Count - 1 Set SelectionAtBeginning(SelectionObjectIndex) = mySel.Item(1).Value Next SelectionAtBeginningLength = mySel.Count InputObjectType(0) = "Point" Status = mySel.SelectElement2(InputObjectType, "Selectionner un Point", True) If ((Status = "Cancel") Or (Status = "Undo")) Then mySel.Clear For SelectionObjectIndex = 0 To SelectionAtBeginningLength - 1 mySel.Add SelectionAtBeginning(SelectionObjectIndex) Next Exit Sub ElseIf (Status = "Redo" And Not PointHasBeenAcquiredAtLeastOnce) Then Else If (Status <> "Redo") Then Set PointForhybridShapeLinePtDir = mySel.Item(1).Value PointHasBeenAcquiredAtLeastOnce = True '------------------------------------------------------------------- 'Création de la référence1 Set hybridShapes1 = hybridBody1.HybridShapes Set reference1 = part1.CreateReferenceFromObject(PointForhybridShapeLinePtDir) '------------------------------------------------------------------- Set partDocument1 = documents1.Item("Part2.CATPart") Dim part2 As Part Set part2 = partDocument1.Part 'Selection de la ligne. ReDim SelectionAtBeginning(Selection.Count) For SelectionObjectIndex = 0 To Selection.Count - 1 Set SelectionAtBeginning(SelectionObjectIndex) = Selection.Item(1).Value Next SelectionAtBeginningLength = Selection.Count InputObjectType(0) = "Line" Status = Selection.SelectElement2(InputObjectType, "Selectionner la direction", True) If ((Status = "Cancel") Or (Status = "Undo")) Then Selection.Clear For SelectionObjectIndex = 0 To SelectionAtBeginningLength - 1 Selection.Add SelectionAtBeginning(SelectionObjectIndex) Next Exit Sub ElseIf (Status = "Redo" And Not LineHasBeenAcquiredAtLeastOnce) Then Else If (Status <> "Redo") Then Set LineForhybridShapeLinePtDir = Selection.Item(1).Value LineHasBeenAcquiredAtLeastOnce = True '------------------------------------------------------------------ 'Création de la référence2 Set hybridShapeFactory1 = part2.HybridShapeFactory Set reference2 = part2.CreateReferenceFromObject(LineForhybridShapeLinePtDir) Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference2) '------------------------------------------------------------------ 'Création de la Droite Set hybridShapeFactory2 = part1.HybridShapeFactory Set hybridShapeLinePtDir2 = hybridShapeFactory2.AddNewLinePtDir(reference1, hybridShapeDirection1, -50#, 50#, False) hybridBody1.AppendHybridShape hybridShapeLinePtDir2 part1.InWorkObject = hybridShapeLinePtDir2 part1.Update End If End If End Sub Mon problème est que si je lance cette macro, ma droite se crée mais la référence2 (Droite, direction) n’est pas prise en compte. J’ai donc changé la fin de mon code pour celui-ci ("actication de la part2" en esperant que la référence2 soit prise en compte): ‘Création de la Droite Set partDocument2 = documents1.Item("Part2.CATPart") Dim part2 As Part Set part2 = partDocument2.Part Set hybridShapeFactory2 = part1.HybridShapeFactory Set hybridShapeLinePtDir2 = hybridShapeFactory2.AddNewLinePtDir(reference1, hybridShapeDirection1, -50#, 50#, False) hybridBody1.AppendHybridShape hybridShapeLinePtDir2 part1.InWorkObject = hybridShapeLinePtDir2 part1.Update End If End If End Sub Mais là le problème est inverse, la droite se crée bien dans le set géométrique « Std » de la Part1 mais maintenant la référence1 (point) n’est pas prise en compte. Quelqu’un aurait-il une solution pour que mes deux référence soient bien prises en compte ??? Merci d’avance pour vos réponse.
Matthias31 Posté(e) le 4 avril 2007 Auteur Posté(e) le 4 avril 2007 Salut tout le monde,Plus besoin de répondre a ce post. J'ai résolu tt mes problèmes. Merci V5Automation.chm....!!!!:cool: Donc si quelqu'un a besoin de conseil sur comment selectionner une droite, un point une esquisse, ..., lors de la macro et de les utilisés dans cette macro pour réalisé point, droite, plan, extrusion, ...Je peu aider également pour faire une pause dans une macro avec des UserForms pour pouvoir manipuler la pièce. [Edité le 4/4/2007 par Matthias31]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant