Включение видимости осей координат вида чертежа

Автор Тема: Включение видимости осей координат вида чертежа  (Прочитано 9122 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Добрый день. Появилась необходимость автоматизировать процесс включения осей координат на видах чертежа с помощью API. Я так понимаю нужно идти в этом направлении: DetailDrawingView.GetIncludeStatus Method. Кто-нибудь решал данную задачу? В справке примера кода не нашел.

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
В справке примера кода не нашел.
Не на все случаи есть примеры, разбейте задачу на этапы, в данном случае: работа с видами, получение ссылки на модель, получение объекта для отображения...
Вот рабочий пример, на виде "ВИД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, в реальном коде (при необходимости) нужны дополнительные проверки...)

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Алексей, приветствую Вас. Спасибо огромное за помощь. Попробую адаптировать код под ilogic.
PS: хочу к Вам на курсы программирования записаться. :)

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Попробую адаптировать код под ilogic.
Приветствую Вас, Александр! Как упехи? В простейшем случае у меня вот что получилось:oY = ActiveSheet.View("ВИД3").ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View("ВИД3").View.SetIncludeStatus(oY, True)

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Добрый день, Алексей. Пока никак, не было времени. Впринципе и код VBA работает в ilogic, если убрать Sub и Set.
Но в данном случае вообще всё просто. Спасибо за помощь.
У меня другой вопрос возник, возможно бредовый: могу ли я указывать нужный мне вид чертежа для отображения осей?

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
У меня другой вопрос возник, возможно бредовый:
Почему бредовый? Достаточно часто приходиться просить пользователя указать что-нибудь:oView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Укажите вид")
oY = ActiveSheet.View(oView.Name).ModelDocument.ComponentDefinition.WorkAxes(2)
ActiveSheet.View(oView.Name).View.SetIncludeStatus(oY, True)

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Спасибо, Алексей. У меня почти получилось, но не знал как правильно в скобках написать указание на имя вида (oView.Name). Теперь буду знать.
« Последнее редактирование: 19-10-2013, 12:27:06 от niksasa »