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

ADN Club => Inventor API => Тема начата: filat от 06-11-2020, 10:54:21

Название: Использование AutomatedCenterlineSettings в чертежах
Отправлено: filat от 06-11-2020, 10:54:21
Я решил реализовать нанесение осевых линий на вид чертежа с использованием AutomatedCenterlineSettings.
Повесил код на кнопку и все сработало как надо:
Код - Visual Basic [Выбрать]
  1.                         Dim oDoc As DrawingDocument
  2.                         oDoc = m_inventorApplication.ActiveDocument
  3.                         Dim oView As DrawingView
  4.                         Dim oViews As DrawingViews
  5.                         Dim oSheet As Sheet
  6.                         oSheet = oDoc.ActiveSheet
  7.                         oViews = oSheet.DrawingViews
  8.                         Dim oCenterline As AutomatedCenterlineSettings
  9.                         For Each oView In oViews
  10.                             If oView.ReferencedDocumentDescriptor.ReferencedDocumentType = DocumentTypeEnum.kPartDocumentObject Then
  11.                                 'MsgBox(oView.Name)
  12.                                Call oView.GetAutomatedCenterlineSettings(oCenterline)
  13.                                 oCenterline.ApplyToBends = True
  14.                                 oCenterline.ApplyToCircularPatterns = True
  15.                                 oCenterline.ApplyToCylinders = True
  16.                                 oCenterline.ApplyToFillets = True
  17.                                 oCenterline.ApplyToHoles = True
  18.                                 oCenterline.ApplyToPunches = True
  19.                                 oCenterline.ApplyToRectangularPatterns = True
  20.                                 oCenterline.ApplyToRevolutions = True
  21.                                 oCenterline.ApplyToSketches = True
  22.                                 oCenterline.ApplyToWorkFeatures = True
  23.                                 oCenterline.ProjectionNormalAxis = True
  24.                                 oCenterline.ProjectionParallelAxis = True
  25.                                 Call oView.SetAutomatedCenterlineSettings(oCenterline)
  26.                             End If
  27.                         Next

Для большей автоматизации захотел повесить его на событие после нажатия кнопки "Создание нового вида":
Код - Visual Basic [Выбрать]
  1. Private Sub m_UserInputEvents_OnTerminateCommand(ByVal CommandName As String, ByVal Context As Inventor.NameValueMap) Handles m_UserInputEvents.OnTerminateCommand
  2.            If CommandName = "DrawingBaseViewCmd" Then ' Команда создания нового вида на чертеже
  3.            ...
И вот тут незадача - отслеживание кода, показывает, что создаваемые виды проходят через код, но результатов его работы не появляется на чертеже - с чем это может быть связано?
Название: Re: Использование AutomatedCenterlineSettings в чертежах
Отправлено: mikazakov от 06-11-2020, 12:06:47
может Document.Update попробовать?
Название: Re: Использование AutomatedCenterlineSettings в чертежах
Отправлено: filat от 06-11-2020, 12:21:06
Не, не помогло. Да и на кнопке без апдейта работает.

P.S. Ты куда из скайпа пропал!?  :-X :D
Название: Re: Использование AutomatedCenterlineSettings в чертежах
Отправлено: mikazakov от 06-11-2020, 13:10:22
Влад, там в утилитах в SDK в АПИ есть эвент-вотчер, запусти его и посмотри какие события вызываются при создании вида.
Может не только к событию OnTerminateCommand можно привязаться будет.
Название: Re: Использование AutomatedCenterlineSettings в чертежах
Отправлено: mikazakov от 09-11-2020, 18:07:59
Ну посмотрел эвэнт вотчер? Если ничего подходящего не найдешь, то готовь тестовый код причесаный и файлы модели и чертежа я отправлю в тех поддержку твой вопрос.
Название: Re: Использование AutomatedCenterlineSettings в чертежах
Отправлено: filat от 16-11-2020, 09:56:51
Я подумал-подумал над применением этой функции и решил, что мне хватит(а может даже и удобнее!) использования кнопки. - для себя вопрос пока закрыл и дальше копать не буду.