Обновление значения текстового поля

Автор Тема: Обновление значения текстового поля  (Прочитано 4666 раз)

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

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

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Добрый день. Как практически реализуется инициатор событий: изменение свойств inventor.
Хочу, чтобы значение материала на пользовательском элементе addin менялось после изменения значения материала в прочих свойствах инвентора. Что то нигде не нашел примера, может плохо искал.
« Последнее редактирование: 02-02-2014, 22:43:54 от niksasa »

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
Утилита EventWatcher из состава Inventor SDK позволяет отследить последовательность событий Inventor, которыми сопровождается изменение тех или иных свойств документа.  Утилита при установке DeveloperTools  по умолчанию ставится в следующую папку:
C:\Users\Public\Documents\Autodesk\Inventor 2014\SDK\DeveloperTools\Tools\EventWatcher\bin\Release


Если изменяется материал на вкладке Physical (Физические свойства), то последовательность событий выглядит так:

Открывается диалог редактирования iProperties
UserInputEvents.OnActivateCommand
     CommandName: "PartiPropertiesCmd"
     Context: No context information

Изменяем физический материал
StyleEvents.OnActivateStyle
     DocumentObject: Filename.ipt (PartDocument)
     Style: Silver (Material)
     Context is Nothing
     BeforeOrAfter: kBefore
     HandlingCode: kEventNotHandled

Жмем Применить
TransactionEvents.OnCommit
     TransactionObject: Properties (Transaction)
     Context: No context information
     BeforeOrAfter: kBefore
     HandlingCode: kEventHandled

TransactionEvents.OnCommit
     TransactionObject: Properties (Transaction)
     Context: No context information
     BeforeOrAfter: kAfter
     HandlingCode: kEventHandled

Жмем Close (Закрыть)
StyleEvents.OnActivateStyle
     DocumentObject: Filename.ipt (PartDocument)
     Style: Silver (Material)
     Context is Nothing
     BeforeOrAfter: kAfter
     HandlingCode: kEventNotHandled

ApplicationEvents.OnActivateView
     ViewObject: Filename.ipt (View)
     Context: No context information
     BeforeOrAfter: kAfter
     HandlingCode: kEventNotHandled

UserInputEvents.OnTerminateCommand
     CommandName: "PartiPropertiesCmd"
     Context: No context information




Если изменяются пользовательские свойства, то специального события нет. При старте команды "PartiPropertiesCmd" (событие OnActivateCommand ) придется свойства запоминать и затем сравнением искать изменения после завершения команды (событие OnTerminateCommand).

UserInputEvents.OnActivateCommand
     CommandName: "PartiPropertiesCmd"

     Context: No context information

TransactionEvents.OnCommit
     TransactionObject: Properties (Transaction)
     Context: No context information
     BeforeOrAfter: kBefore
     HandlingCode: kEventHandled

TransactionEvents.OnCommit
     TransactionObject: Properties (Transaction)
     Context: No context information
     BeforeOrAfter: kAfter
     HandlingCode: kEventHandled

ApplicationEvents.OnActivateView
     ViewObject: Filename.ipt (View)
     Context: No context information
     BeforeOrAfter: kAfter
     HandlingCode: kEventNotHandled

UserInputEvents.OnTerminateCommand
     CommandName: "PartiPropertiesCmd"

     Context: No context information


Если файл был сохранен непосредственно перед входом в диалог редактирования свойств, тогда на изменение свойств среагирует событие  FileAccessEvents.OnFileDirty:

FileAccessEvents.OnFileDirty
     RelativeFileName: "Filename.ipt"
     LibraryName: ""
     CustomLogicalName: No data
     FullFileName: "C:\TEMP\Filename.ipt"
     DocumentObject: Filename.ipt (PartDocument)
     Context:
          ReasonsForChange = kFilePropertyEditCmdType, kQueryOnlyCmdType
          AffectedFiles
               "C:\TEMP\Filename.ipt"
          DirtyByRecompute = False
     BeforeOrAfter: kBefore
     HandlingCode: kEventNotHandled


Надеюсь, какой-нибудь из этих вариантов окажется подходящим.

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

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Надеюсь, какой-нибудь из этих вариантов окажется подходящим.
Нашел по этой теме статью
http://modthemachine.typepad.com/my_weblog/2009/03/running-commands-using-the-api.html
Но пока до конца не понял. С конкретным примером было бы намного проще.