2016-01-13 2 views
-2

Je dois déplacer une sphère de type sonde entre deux parties de sorte que la sonde soit en contact avec les deux parties. Et je dois trouver le point de contact des pièces, mesurer leur distance et faire un filet sur les pièces en fonction de cette distance. J'ai réussi à déplacer la sphère entre les parties, mais la sphère se déplace à travers les parties. J'essaie donc de déplacer en respectant les contraintesEst-il possible de déplacer une pièce avec respect vers des contraintes dans Product using Catia vba?

J'essaie d'automatiser l'outil de manipulation dans Catia Product. Existe-t-il une commande ou une méthode pour déplacer une partie par rapport aux contraintes dans Catia en utilisant vba?

Ou

Est-il possible de trouver l'affrontement entre les deux parties en utilisant vba?

Dans l'attente d'une solution.

Merci!

+0

Vous pouvez déplacer les pièces avec l'API via une manipulation/position matrice, mais pas nécessairement par rapport aux contraintes (il faudra creuser plus profondément). Je n'ai pas essayé de collision, mais je soupçonne qu'il n'est pas exposé dans l'API VBA (seulement CAA) Quel est exactement le but de votre script? – GisMofx

Répondre

0

Here est un lien où vous pouvez trouver une solution pour le conflit.

OK, j'ai eu l'idée, vous voulez voir le code ici :-)

Pour calculer choc dans un CATScript:

Sub CATMain() 

    ' get root product of document 
    Dim RootProd As Product 
    Set RootProd = CATIA.ActiveDocument.Product 

    ' retrieve selection object of active document 
    Dim objSelection As Selection 
    Set objSelection = CATIA.ActiveDocument.Selection 

    ' get two selected objects 
    If (objSelection.Count2 <> 2) Then 
    MsgBox "Before running the script you must select two products to compute clash for", vbOKOnly, "No products selected" 
    Exit Sub 
    End If 

    Dim FirstProd As Product 
    Dim SecondProd As Product 

    Set FirstProd = objSelection.Item2(1).Value 
    Set SecondProd = objSelection.Item2(2).Value 

    ' create groups for clash computation 
    Dim objGroups As Groups 
    Set objGroups = RootProd.GetTechnologicalObject("Groups") 

    Dim grpFirst As Group 
    Dim grpSecond As Group 

    Set grpFirst = objGroups.Add() 
    Set grpSecond = objGroups.Add() 

    ' add selected products to groups 
    grpFirst.AddExplicit FirstProd 
    grpSecond.AddExplicit SecondProd 


    ' get access to Clashes collection 
    Dim objClashes As Clashes 
    Set objClashes = RootProd.GetTechnologicalObject("Clashes") 

    ' create new clash 
    Dim newClash As Clash 
    Set newClash = objClashes.Add() 

    ' set new clash to be computed between two groups (two selected products) 
    newClash.FirstGroup = grpFirst 
    newClash.SecondGroup = grpSecond 

    newClash.ComputationType = catClashComputationTypeBetweenTwo 

    ' compute clash 
    newClash.Compute 

    End Sub