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

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

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

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

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

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

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

Масштабирование вида в чертеже

Автор Михаил88, 08.04.25, 21:09:05

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

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

Михаил88

В чертежи есть вид. Есть задача изменить его масштаб.
Меняю так.
application.HideMessage = 1
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
kompas_document_2d_1 = kompas_api7_module.IKompasDocument2D1(kompas_document_2d)
views_and_layers_manager = kompas_document_2d.ViewsAndLayersManager
views = views_and_layers_manager.Views
view = views.View(1)
view.Scale = 0.5
print(view.Update())
print(kompas_document_2d_1.RebuildDocument())
application.HideMessage = 0

Все отрабатывает нормально и масштаб вида изменяется, но есть проблема. Обновление происходит как бы не до конца. Например пытаюсь выделить какой ни будь отрезок на виде и часть отрезков нет возможности выделить и по самой границе видно, что она не обновилась.
До масштабирования.
Screenshot_2.png
После масштабирования.
Screenshot_3.png

Такие же проблемы и с ассоциативными видами.

Чтобы вылечить данную проблему приходится закрыть документ и снова его открыть или запустить параметры вида.
Что можно еще сделать?

UU

application.HideMessage = 0
Хорошая вещь, но стоит неправильно.

Михаил88

#2
Цитата: UU от 09.04.25, 06:46:03application.HideMessage = 0
Хорошая вещь, но стоит неправильно.

Как правильно?
Если вообще убрать application.HideMessage = 1 и application.HideMessage = 0
Все равно проблема не уходит. В данном случае с разрушенным видов это вообще не нужно. Просто пробовал разные варианты осталось от работы с ассоциативными видами.
Вообще мне нужно масштабировать ассоциативные виды. С ними получалась выше описанная проблема. Потом решил пробовать с разрушенными видами и по факту итог тот же.
Если все тоже самое сделать с помощью API5 такие же проблемы.

UU

application.HideMessage = 0
print(kompas_document_2d_1.RebuildDocument())
Раз Вы говорите ничего не меняется, то выполнить:
 - ksCMRefresh - 32417 - Обновить изображение.
+ Благодарностей: 1

Михаил88

Цитата: UU от 09.04.25, 07:46:59application.HideMessage = 0
print(kompas_document_2d_1.RebuildDocument())
Раз Вы говорите ничего не меняется, то выполнить:
 - ksCMRefresh - 32417 - Обновить изображение.

Спасибо, попробую. Мне кажется я этот вариант уже пробовал по крайней мере с ассоциативными видами, но сейчас попробую еще. За последнее время уже кучу всего перепробовал.

Михаил88

Цитата: UU от 09.04.25, 07:46:59- ksCMRefresh - 32417 - Обновить изображение.

тоже не помогло

print(view.Update())
print(kompas_document_2d_1.RebuildDocument())
print(application.ExecuteKompasCommand(32417, False))

везде возвращается True, но итог тот же

UU

Можно PumpWaitingMessages добавить, как бы дать отработать все события, но view.Update должен был менять всё.
Можно попробовать сделать текущим нулевой вид и вернуть фокус обратно, на первый.

print(view.Update())
print(kompas_document_2d_1.RebuildDocument())
PumpWaitingMessages
print(application.ExecuteKompasCommand(32417, False))
+ Благодарностей: 1

Михаил88

Кстати я это все пробовал, читал одну из тем на форуме, где Вы тоже давали совет на счет ksPumpWaitingMessages()

views = views_and_layers_manager.Views
view = views.View(1)
view.Current = True
view.Scale = 1.1
print(view.Update())
print(kompas_document_2d_1.RebuildDocument())
print(kompas_object.ksPumpWaitingMessages())
print(application.ExecuteKompasCommand(32417, False))

попробовал еще раз не помогло

Михаил88

Беру за рамку и сдвигаю ручками вид и все обновляется. Похоже на ошибку.

UU

Я имел в виду, так сделать.
view = views.View(0)
view.Current = True
view = views.View(1)
view.Current = True

Михаил88

не помогло
я в принципе так и делал просто ручками ставил активный вид 0 и потом уже в коде переключал на 1.

UU

Я на v23 проверил, чудесный глюк, вид масштабирует, а потом рамка меняется только на новые построения, старые не видит.
Я думаю, что данный глюк уверено шагнёт с v18 в v24.
PS. Если он в визуальном режиме, ручками не реагирует, то программно можно, не пытаться.
+ Благодарностей: 1

lavgirb

Цитата: Михаил88 от 09.04.25, 09:10:09не помогло
А если программно сдвинуть вид на 0,1 мм, например?
Если сработает, можно и вернуть обратно.
На работе не имею возможности попробовать
+ Благодарностей: 1

Михаил88

Цитата: UU от 09.04.25, 09:33:46Я на v23 проверил, чудесный глюк, вид масштабирует, а потом рамка меняется только на новые построения, старые не видит.
Я думаю, что данный глюк уверено шагнёт с v18 в v24.

Я на v24 beta пробовал ранее с ассоциативными видами, там такое же поведение и на v21 аналогично.
В 18.1 там есть еще и другие проблемы, но в 21 часть из них уже не повторялась.

UU

Сколько мало нужно коду, чтобы Компас ушёл в полный улёт.
Но если добавить обработку исключений, он даже не падает и даже рамку правильно масштабирует.
PS. Новые функции добавляют, а их кто-то тестирует?

+ Благодарностей: 1

Михаил88

Цитата: lavgirb от 09.04.25, 09:47:41А если программно сдвинуть вид на 0,1 мм, например?
Если сработает, можно и вернуть обратно.
На работе не имею возможности попробовать

Это я пробовал не помогало.
Еще немного предыстории. Заметил случайно на виде у меня были позиции и хотел их подправить, но не мог. Жмешь на них а они не выделяются. Ну думаю ладно какой то косяк, я просо брал и немного изменял длину выносной линии и все оживало. Но оказалась проблема глубже, когда обнаружил, что не могу и отрезки например выделять и размеры проставлять т.к. они не цепляются к геометрии.

p3452

v20 - баг, имеет место быть!
Причем, на его наличие или отсутствие не влияют ни HideMessage, ни RebuildDocument.
К ошибке приводит обновление вида после изменение масштаба.
И еще пара фактов по поводу "выбора"(выделения) элементов вида:
- выбрать можно, но после 4-6 кликов,
- выбрать можно сразу, но "зеленой рамкой".

p/s: Для себя взял за правило не работать интерактивно с 2D документами... (сейчас уже не помню, но, возможно, и из-за этого бага)
+ Благодарностей: 1