Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: niksasa от 16-10-2013, 14:41:18

Название: Включение видимости осей координат вида чертежа
Отправлено: niksasa от 16-10-2013, 14:41:18
Добрый день. Появилась необходимость автоматизировать процесс включения осей координат на видах чертежа с помощью API. Я так понимаю нужно идти в этом направлении: DetailDrawingView.GetIncludeStatus Method. Кто-нибудь решал данную задачу? В справке примера кода не нашел.
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: Алексей Романов от 16-10-2013, 20:51:51
В справке примера кода не нашел.
Не на все случаи есть примеры, разбейте задачу на этапы, в данном случае: работа с видами, получение ссылки на модель, получение объекта для отображения...
Вот рабочий пример, на виде "ВИД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, в реальном коде (при необходимости) нужны дополнительные проверки...)
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: niksasa от 17-10-2013, 09:21:24
Алексей, приветствую Вас. Спасибо огромное за помощь. Попробую адаптировать код под ilogic.
PS: хочу к Вам на курсы программирования записаться. :)
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: Алексей Романов от 18-10-2013, 05:20:08
Попробую адаптировать код под ilogic.
Приветствую Вас, Александр! Как упехи? В простейшем случае у меня вот что получилось:oY = ActiveSheet.View("ВИД3").ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View("ВИД3").View.SetIncludeStatus(oY, True)
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: niksasa от 18-10-2013, 10:10:33
Добрый день, Алексей. Пока никак, не было времени. Впринципе и код VBA работает в ilogic, если убрать Sub и Set.
Но в данном случае вообще всё просто. Спасибо за помощь.
У меня другой вопрос возник, возможно бредовый: могу ли я указывать нужный мне вид чертежа для отображения осей?
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: Алексей Романов от 18-10-2013, 13:02:50
У меня другой вопрос возник, возможно бредовый:
Почему бредовый? Достаточно часто приходиться просить пользователя указать что-нибудь:oView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Укажите вид")
oY = ActiveSheet.View(oView.Name).ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View(oView.Name).View.SetIncludeStatus(oY, True)
Название: Re: Включение видимости осей координат вида чертежа
Отправлено: niksasa от 18-10-2013, 13:16:34
Спасибо, Алексей. У меня почти получилось, но не знал как правильно в скобках написать указание на имя вида (oView.Name). Теперь буду знать.