Как, имея чертежный размер, найти переменную, со значением этого размера?

Автор lavgirb, 14.12.23, 21:07:33

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

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

lavgirb

Как, имея чертежный размер, найти переменную со значением этого размера?
Размер получаю из выделения на виде. Могу получить массив переменных из вида.
Не понятно, как выйти через размер на переменную или через переменную на размер.
Где покопать?
Спасибо.

Михаил88

Цитата: lavgirb от 14.12.23, 21:07:33Где покопать?

Например для линейного параметрического размера.

ILineDimension -> IDrawingObject1 -> Constraints -> Variable

А можно еще проще.

variable = kompas_document_2d_1.Variable(False, selected_object)

где selected_object это например ILineDimension

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

lavgirb

Цитата: Михаил88 от 15.12.23, 06:27:55Например для линейного параметрического размера.

ILineDimension -> IDrawingObject1 -> Constraints -> Variable

А можно еще проще.

variable = kompas_document_2d_1.Variable(False, selected_object)

где selected_object это например ILineDimension

Спасибо, Михаил88

По второму варианту как-то получилось, но только первый один раз. Потом сколько не пробовал в переменную variable ничего не выдавалось
Подставлял в аргументы и размер и текст размера. Может, компьютер устал? ))))
В выходные еще буду пробовать.
По первому варианту пока не разобрался, как получить переменную по схеме Constraints -> Variable.
Constraints это массив, но в нем переменной в явном виде нет.
Время, правда, было ограничено, но и перспективу не увидел.


Михаил88

Цитата: lavgirb от 15.12.23, 11:23:03Constraints это массив, но в нем переменной в явном виде нет.
Время, правда, было ограничено, но и перспективу не увидел
Я думал Вам нужно получить имя переменной относящейся к выделенному размеру. Для Вашей задачи тогда так не подойдет.

Цитата: lavgirb от 15.12.23, 11:23:03По второму варианту как-то получилось, но только первый один раз. Потом сколько не пробовал в переменную variable ничего не выдавалось
Подставлял в аргументы и размер и текст размера.
Это рабочий вариант.

kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
kompas_document_2d_1 = kompas_api7_module.IKompasDocument2D1(kompas_document_2d)
selection_manager = kompas_document_2d_1.SelectionManager
selected_object = selection_manager.SelectedObjects
print(selected_object)

variable = kompas_document_2d_1.Variable(False, selected_object)
print(f'{variable.Name} = {variable.Value}')

Размер_2.gif

lavgirb

Михаил88, программирую на VB6
Это у меня так и не работает (
variable = kompas_document_2d_1.Variable(False, selected_object)
Видимо, ошибся, когда написал, что один раз сработало. Показалось )

Но получилось так.
С помощью Вашей подсказки
ILineDimension -> IDrawingObject1 -> Constraints
нашел имя переменной размера
Потом получил массив переменных
ILineDimension -> IView -> Variables
Потом, зная имя переменной и имея массив переменных, нашел саму переменную.
Михаил88, спасибо за наводку.  :beer:

Валерий Изранов


Михаил88

Цитата: lavgirb от 16.12.23, 07:28:10Это у меня так и не работает (

У меня кстати он в последствии экспериментов тоже как то один раз не сработал. Потом все нормально было. Я сейчас попробую на VBA перепишу и посмотрю будет у меня работать или нет.

Михаил88

Цитата: lavgirb от 16.12.23, 07:28:10Михаил88, программирую на VB6

Размер.gif

тоже работает

Цитата: Михаил88 от 16.12.23, 08:41:47У меня кстати он в последствии экспериментов тоже как то один раз не сработал. Потом все нормально было.

Может у меня 1 раз не сработало из-за ошибки в коде, точно не помню причину.

lavgirb

Михаил88, что-то загорелся, решил добавить в программку.
Такие чертежи делаю очень редко, а тут пришлось )
Размер-с-обрывом2.gif

Михаил88

Чтобы gif нормально отображались, а не так

Screenshot_3.bmp

Нужно при вставке прописать ширину и высоту

Screenshot_4.bmp

По экспериментируйте с размерами.
+ Благодарностей: 1

lavgirb

Цитата: Михаил88 от 16.12.23, 10:05:26Нужно при вставке прописать ширину и высоту

По экспериментируйте с размерами.
Добавил размеры из свойств файла. Получилось!
Спасибо.