Aller au contenu

Problème de référence aprés selection dans une macro


Messages recommandés

Posté(e)

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.

 

Posté(e)

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]

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é