• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Автоматом не отображается измененное значение атрибута в дереве конструирования.

Автор lavgirb, 30.10.23, 12:58:23

« назад - далее »

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

lavgirb

Значение атрибута(свойства) компонента (Позиция) выведено для контроля в дерево конструирования.
После программного изменения значения "Позиции" новое значение не появляется в дереве конструирования, а остается старое.
Но если после этого вручную просто зайти в "Свойства компонента" и выйти по зеленой галке, то в дереве конструирования начинает отображаться новое правильное значение.
"Перестроение" сборки не влияет на результат.
Как можно автоматом показывать новое значение атрибута в дереве конструирования?
Что можно предпринять?
КОМПАС-3D V19
Спасибо.

Nipal

По зелёной галке, выйти невозможно, Вы подтверждаете изменения.

lavgirb

Цитата: Nipal от 30.10.23, 13:01:42По зелёной галке, выйти невозможно, Вы подтверждаете изменения.
Спасибо.
Имеется ввиду выйти из показа Свойств компонента.
Да, вручную подтверждаются, а вставлено было программно.
Вопрос остается. Как программно показать значение измененного атрибута в дереве конструирования?


lavgirb

Цитата: Nipal от 30.10.23, 13:08:57Думаю, оптимальный вариант - ExecuteKompasCommand.
Да, команда ksCMSelectedCompanentProperties открывает панель свойств, теперь не понятно как нажать на зеленую галку.
В перечне команд ничего подходящего не нашел.
Стандартное SendKeys {ENTER} не срабатывает, но может, надо еще пробовать...

Nipal

Команда может быть не задокументирована, хотя надо справку лопатить, можно выполнить команду ещё раз и посмотреть результат.

lavgirb

Цитата: Nipal от 30.10.23, 14:41:27Команда может быть не задокументирована, хотя надо справку лопатить, можно выполнить команду ещё раз и посмотреть результат.
В SDK не нашел что-то подходящее.
Действительно, повторный вызов команды закрывает "Свойства компонента", но в дереве значение атрибута не обновляется и остается прежним.
Можно попробовать послать в окно нажатие на колесо мыши. Но это мне надо еще искать как сделать с помощью Win API.

Nipal

Можно и так, но я думаю есть процесс, но его нужно найти, методом научного тыка.

midreyk

Можно попробовать поискать метод Update для какого-то из интерфейсов, который вы используете. Например Part.Update() или Parts.Update() ... Вставить после изменения свойства.
У меня, например, без этого не срабатывает изменение наименования.

Nipal

Цитата: midreyk от 30.10.23, 15:32:41Можно попробовать поискать метод Update для какого-то из интерфейсов, который вы используете. Например Part.Update() или Parts.Update() ... Вставить после изменения свойства.
Не подойдёт, тут запущен процесс и его нужно завершить подтверждением.
Для Update без кода, не о чем говорить.

lavgirb

Цитата: midreyk от 30.10.23, 15:32:41Можно попробовать поискать метод Update для какого-то из интерфейсов, который вы используете. Например Part.Update() или Parts.Update() ... Вставить после изменения свойства.
У меня, например, без этого не срабатывает изменение наименования.
Ну да, без Update свойство не изменит своего значения.
к Prop.Update добавил и Part.Update
Это было с самого начала.
Значение свойства меняется. У меня оно автоматом не показывается новым в дереве конструирования. Там остается прежнее значение.


midreyk

Цитата: lavgirb от 30.10.23, 15:40:02Значение свойства меняется. У меня оно автоматом не показывается новым в дереве конструирования. Там остается прежнее значение.
А где в дереве конструирования свойство "Позиция"? Что это за "дерево конструирования"? Скрин в студию! Где что должно появиться непонятно.

lavgirb

Терзайте )

Private Function SetPoziNumber(ByRef oPart7 As KompasAPI7.Part7, _
                                  ByVal sPozi As String) As Long

  Dim vValue        As Variant
  Dim oPropKeeper  As KompasAPI7.IPropertyKeeper
  Dim oProp        As KompasAPI7.IProperty
  Dim oPropMng      As KompasAPI7.IPropertyMng
  Dim sCurrPoziNumb As String
 
  On Error GoTo 1
 
  SetPoziNumber = -1
  If Len(sPozi) = 0 Then Exit Function
  If oPart7 Is Nothing Then Exit Function
 
  Set oPropMng = moKO7
  Set oProp = oPropMng.GetProperty(Empty, miPoziPropNumber)
  Set oPropKeeper = oPart7
  If oPropKeeper.GetPropertyValue(oProp, vValue, False, False) Then
      sCurrPoziNumb = CStr(vValue)
  End If
  If (StrComp(sCurrPoziNumb, sPozi) = 0) Then
      SetPoziNumber = 0
  Else
      If oPropKeeper.SetPropertyValue(oProp, CVar(sPozi), False) Then
        oProp.Update
        'oPart7.Update
        SetPoziNumber = 1
      End If
  End If
 
  Exit Function
1:
End Function

lavgirb

Цитата: midreyk от 30.10.23, 15:45:48А где в дереве конструирования свойство "Позиция"? Что это за "дерево конструирования"? Скрин в студию! Где что должно появиться непонятно.
Свойство "Позиция" можно отобразить в дереве конструирования, если нажать на шестеренку вверху дерева.
Ну если Вы с этим не работали, тогда оно конечно...

Позиция.jpg

lavgirb


Nipal

Цитата: lavgirb от 30.10.23, 15:52:12Свойство "Позиция" можно отобразить в дереве конструирования, если нажать на шестеренку вверху дерева.
Ну если Вы с этим не работали, тогда оно конечно...

Позиция.jpg
Это настройка и её просто нужно настроить для новых документов, а для старых нужно подумать.
Можете тут поискать - https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/isystemsettings_props.html
+ Благодарностей: 1

midreyk

Цитата: lavgirb от 30.10.23, 15:52:12Свойство "Позиция" можно отобразить в дереве конструирования, если нажать на шестеренку вверху дерева.
Ну если Вы с этим не работали, тогда оно конечно...
С таким не работал, врать не буду. У меня такой настройки даже нет ))) Компас 18.1.

lavgirb

Цитата: Nipal от 30.10.23, 15:56:19Это настройка и её просто нужно настроить для новых документов, а для старых нужно подумать.
Можете тут поискать - https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/isystemsettings_props.html
У меня КОМПАС-3D V19 пока.
Думаю, что пока лучший вариант с ExecuteKompasCommand.
Только решить проблему зеленой галки.
Правда, время занимает, но все не вручную )

Да, про новые документ сразу не подумал еще. Настроил.