Как перевести деталь, используя CATscript в CATIA?

Я работаю с CATscript в CATIA для создания макросов. Я пытаюсь создать CATscript для перевода функции в CATIA.

Когда я запускаю CATscript, я должен выбрать функцию, которая должна быть переведена, и эта функция будет переведена.

Но я получаю ошибку времени выполнения Несоответствие типов:'part1.CreateReferenceFromObject'

Я не мог найти решение этой проблемы. Ждем вашей помощи.

Заранее спасибо.

   Sub CATMain()

  Set partDocument1 = CATIA.ActiveDocument
  Set part1 = partDocument1.Part

  Set hybridShapeFactory1 = part1.HybridShapeFactory
  Set hybridShapeDirection1 =        hybridShapeFactory1.AddNewDirectionByCoord(1.000000, 0.000000, 0.000000)
  Set hybridShapeTranslate1 = hybridShapeFactory1.AddNewEmptyTranslate()


Set UserSel = partDocument1.Selection
Dim type1(0)
    type1(0) = "HybridShape"
    '--------------------------------------

    'Dim input As Object
    input = UserSel.SelectElement2(type1, "select input.", False)

 Set reference1 = part1.CreateReferenceFromObject(input)
 hybridShapeTranslate1.ElemToTranslate = reference1

  hybridShapeTranslate1.Direction = hybridShapeDirection1
   hybridShapeTranslate1.DistanceValue = 1.000000
   Set hybridBody2 = hybridBodies1.Item("Geometrical Set.3")

hybridBody2.AppendHybridShape hybridShapeTranslate1

part1.InWorkObject = hybridShapeTranslate1

part1.Update 

End Sub

1 ответ

Решение

Ваша проблема в том, что вы пытаетесь создать ссылку из объекта Selection.

input = UserSel.SelectElement2 (type1, "select input.", False)

Это возвращает тип выбора. Вы можете копаться во входных данных и получить фактический объект, который вы выбрали.

пытаться:

Dim myReference as Reference
Dim myExpectedObject as HybridShape 'or use variant
Set mySelectedObject = input.Item2(1).Value 'this will grab the first item from the selection collection
set myReference = part1.CreateReferenceFromObject(mySelectedObject)
'continue the rest of your code

Кроме того, вы всегда должны очистить выбор, прежде чем использовать выбор пользователя в качестве хорошей привычки.

UserSel.Clear 'call this before you call a SelectElement selection function
Другие вопросы по тегам