2016-01-13 5 views
-2

Мне нужно перемещать зонд как сферу между двумя частями, так что зонд находится в контакте с обеими частями. И я должен найти точку соприкосновения деталей, измерить их расстояние и сделать филе на частях на основе этого расстояния. Я достиг в перемещении сферы между частями, но сфера перемещается по частям. Поэтому попытка перемещения по ограничениямВозможно ли переместить часть с учетом ограничений в продукте с помощью Catia vba?

Я пытаюсь автоматизировать инструмент манипуляции в продукте Catia. Есть ли какая-либо команда или метод для перемещения части по отношению к ограничениям в Catia с помощью vba?

Или

Есть ли способ, чтобы найти столкновение между двумя частями с помощью VBA?

В ожидании решения.

спасибо !!!

+0

Вы можете перемещать части с API через манипуляции/позиции но не обязательно в отношении ограничений (мне придется копать глубже). Я не пробовал столкновения, но я подозреваю, что он не отображается в VBA API (только CAA). Какова цель вашего скрипта? – GisMofx

ответ

0

Here - это ссылка, где вы можете найти решение для столкновения.

ОК, у меня появилась идея, вы хотите увидеть код здесь :-)

Чтобы вычислить столкновение в 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 

 Смежные вопросы

  • Нет связанных вопросов^_^