Значения перечисления Catia при использовании Python (Оригинальное название: доступ к объекту CATIA в python) - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь автоматизировать дизайн в CATIA. Я использую python, затем записываю макросы в CATIA и транслирую код там в код python. Теперь я наткнулся на проблему.

Ниже приведен макрос из CATIA, который я хочу перевести в код Pyhton.

Language="VBSCRIPT"

Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument

Set product1 = productDocument1.Product

Set product1 = product1.ReferenceProduct

Set constraints1 = product1.Connections("CATIAConstraints")

Set reference1 = product1.CreateReferenceFromName("ContainerSchiff/Container1/!yz plane")

Set reference2 = product1.CreateReferenceFromName("ContainerSchiff/Container0/!Geometrical Set.1/Point.2")

----Here is the problem ----   Set constraint1 = constraints1.AddBiEltCst(catCstTypeDistance, reference1, reference2)

Set length1 = constraint1.Dimension

length1.Value = 300.000000

product1.Update 

End Sub

При переводе я понятия не имею, что делать с catCstTypeDistance

Если я оставлю все как есть, то python, очевидно, будет жаловаться на то, что имя не определено. Если я передаю это как строку, то жалуется. Ниже находится часть питона

else:
    add_container_skeleton(product1,i)
    product1.ReferenceProduct
    constraints1=product1.Connections("CATIAConstraints")
    Name1="ContainerSchiff/Container" + str(i-1) + "/!Container1/yz plane" 
    Name2="ContainerSchiff/Container" + str(i) + "/!Geometrical Set.1/Point.2"

    reference1= product1.CreateReferenceFromName(Name1)
    reference2 = product1.CreateReferenceFromName(Name2)

    constraint1 = constraints1.AddBiEltCst('catCstTypeDistance', reference1, reference2)

    length1 = constraint1.Dimension
    length1.Value = 300.000000

и два разных сообщения об ошибках, которые я получаю.

File "C:\Users\Mange\Documents\LIU\Catia part 2\first_draft.py", line 179, in place_containers
    constraint1 = constraints1.AddBiEltCst('catCstTypeDistance', reference1, reference2)
  File "<COMObject Connections>", line 3, in AddBiEltCst
ValueError: invalid literal for int() with base 10: 'catCstTypeDistance'
File "C:\Users\Mange\Documents\LIU\Catia part 2\first_draft.py", line 179, in place_containers
    constraint1 = constraints1.AddBiEltCst(catCstTypeDistance(), reference1, reference2)
NameError: name 'catCstTypeDistance' is not defined

Как я могу "получить доступ" к этой вещи / объекту (?) Из python?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Лучший способ IMO, а не использовать целые числа (и тратить время на их перевод), это использовать makepy для раннего связывания COM-объекта.После этого в относительных файлах .py, созданных из библиотек типов, будут перечислены константы.После этого, импортировав:

from win32com.client import constants as CATEnum

и только после получив объект Application:

CATIA = Dispatch('CATIA.Application')

, вы сможете получить к ним доступ:

CATEnum.catCstTypeDistance
0 голосов
/ 14 апреля 2019

Решил.

Если отсутствует в самой CATIA, catCstTypeDistance необходимо заменить на целое число, соответствующее типу ограничения. Какое число соответствует тому, какой тип ограничения можно найти здесь http://catiadoc.free.fr/online/interfaces/enum_CatConstraintType.htm

...