Сообщество программистов Autodesk в СНГ
ADN Club => Inventor API => Тема начата: niksasa от 16-10-2013, 14:41:18
-
Добрый день. Появилась необходимость автоматизировать процесс включения осей координат на видах чертежа с помощью API. Я так понимаю нужно идти в этом направлении: DetailDrawingView.GetIncludeStatus Method. Кто-нибудь решал данную задачу? В справке примера кода не нашел.
-
В справке примера кода не нашел.
Не на все случаи есть примеры, разбейте задачу на этапы, в данном случае: работа с видами, получение ссылки на модель, получение объекта для отображения...
Вот рабочий пример, на виде "ВИД3" отобразим рабочую ось Y модели:Public Sub IncludeObject()
If ThisApplication.ActiveDocumentType <> kDrawingDocumentObject Then
MsgBox "Работаем только с чертежами!"
Exit Sub
End If
' Set a reference to the drawing document.
' This assumes a drawing document is active.
Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument
' Set a reference to the active sheet.
Dim oActiveSheet As Sheet
Set oActiveSheet = oDrawDoc.ActiveSheet
' Set a reference to the drawing view on the active sheet.
Dim oDrawView As DrawingView
For Each oDrawView In oActiveSheet.DrawingViews
If oDrawView.Name = "ВИД3" Then Exit For
Next
'Получаем документ модели
Dim oRefDoc As Object
Set oRefDoc = oDrawView.ReferencedDocumentDescriptor.ReferencedDocument
'Получаем объект для отображения на виде
Dim oY As WorkAxis
Set oY = oRefDoc.ComponentDefinition.WorkAxes(2)
'Отображаем объект на виде
Call oDrawView.SetIncludeStatus(oY, True)
End Sub
Это рабочий пример на VBA, в реальном коде (при необходимости) нужны дополнительные проверки...)
-
Алексей, приветствую Вас. Спасибо огромное за помощь. Попробую адаптировать код под ilogic.
PS: хочу к Вам на курсы программирования записаться. :)
-
Попробую адаптировать код под ilogic.
Приветствую Вас, Александр! Как упехи? В простейшем случае у меня вот что получилось:oY = ActiveSheet.View("ВИД3").ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View("ВИД3").View.SetIncludeStatus(oY, True)
-
Добрый день, Алексей. Пока никак, не было времени. Впринципе и код VBA работает в ilogic, если убрать Sub и Set.
Но в данном случае вообще всё просто. Спасибо за помощь.
У меня другой вопрос возник, возможно бредовый: могу ли я указывать нужный мне вид чертежа для отображения осей?
-
У меня другой вопрос возник, возможно бредовый:
Почему бредовый? Достаточно часто приходиться просить пользователя указать что-нибудь:oView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Укажите вид")
oY = ActiveSheet.View(oView.Name).ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View(oView.Name).View.SetIncludeStatus(oY, True)
-
Спасибо, Алексей. У меня почти получилось, но не знал как правильно в скобках написать указание на имя вида (oView.Name). Теперь буду знать.