Заранее параметризованные переменные

Автор Dentr, 24.01.24, 14:07:22

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

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

Dentr

Здравствуйте! Столкнулся с такой проблемой: есть чертеж, он заранее параметризован и надо только изменить значения переменных. С первой переменной по списку никаких проблем, подключаюсь к ней и могу делать все что угодно. А вот с остальными интереснее. Если ни одной из них не задать как внешнюю переменную то будет выдавать ошибку. Если же например мы вторую переменную обозначаем, как внешняя, и пытаемся получить значение 2 и 3 переменных ,то почему-то выдает одно и то же значение. Для более хорошего понимая, прикрепляю чертеж с переменными и код.прямоугольник.cdmПрямоугольник (экспер).cdw

Dentr

Сама суть задач: есть параметризованные чертежи, в которых ты изменяешь переменные и копируешь объект уже с нужными размерами. Объектом служит чертеж секции перильного ограждения. Я же пишу программу, чтобы создавался автоматически чертеж Перильного ограждения, то есть заходит в чертеж секции, изменяет переменные, обновляет чертеж и вставляет эту секции на чертеж по тем координатам которые я передам ей. Вот и столкнулся с проблемой на этапе присвоения переменной нового значения. Прикрепленные файлы служат примером, тк чертежи секций прикреплять не могу. :sun:

IgorT

Впервые слышу о таком подходе к рисованию чертежей. Параметризация в 2D...
Вы с трехмером работаете?


СВ

 Укажите в своём профиль свою версию Компаса.
Присылайте также файлы, сохранённые в К18...20.

IgorT

Цитата: Dentr от 24.01.24, 15:02:11Нет, все в 2D
О переходе к трехмеру может быть разговор?

Dentr

#6
Цитата: IgorT от 24.01.24, 15:12:45О переходе к трехмеру может быть разговор?
Нет, к трехмеру не сможем перейти. Слишком большая база чертежей уже сделана в 2D, которую постоянно используют. Когда было принято решение уйти от 3D. Видел много примеров с параметризацией в компасе 3D и все работает. А вот в 2D ...
Новенький на форуме, не разобрался еще как показать версию компаса. Прикрепляю пример чертежа сохраненный в 20 версии.Прямоугольник (экспер).cdwпрямоугольник.cdm

IgorT

Цитата: Dentr от 24.01.24, 15:17:01.. Когда было принято решение уйти от 3D.
C 2D помочь не смогу...
 А можно спросить, что за причины мотивировали вашу контору уйти от трехмера?

Петрович-47

Цитата: IgorT от 24.01.24, 15:24:21...А можно спросить, что за причины мотивировали вашу контору уйти от трехмера?
Предположу, что легализация...

СВ

#9
 Тотализатор, говорите?
Ставлю на: конкретного человека, который показал/объяснил, что в 2Д - лучше. (А вот почему лучше ... - ?)

Dentr

Цитата: IgorT от 24.01.24, 15:24:21C 2D помочь не смогу...
 А можно спросить, что за причины мотивировали вашу контору уйти от трехмера?
Раньше работали в солиде в трехмере, но с пустя какое-то время перешли в компас 2d ,тк просто оказалось ,что так быстрее можно отдавать чертежи и тогда же начали параметризовывать отдельные секции, чтобы еще быстрее увеличить производительность) По итогу почти все за вас делает компас, тебе остается только копировать, вставлять и иногда чуть-чуть редактировать. Но зародилась идея еще больше внести автоматизации в этот процесс) Так что если кто-то знает, как решить проблему, прошу помочь и не будем устраивать тут дебаты.
+ Благодарностей: 2

Nipal

Ошибка какая?
Файл с кодом на телефоне открыл, смотрю меняете переменную обновляете документ, дальше меняете переменные и ничего не обновляете.

Dentr

К первой переменной могу обратиться без проблем и даже поменять ее значение, после обновления чертежа переменная обновится. А вот когда пытаюсь узнать, хотя бы значение 2 или 3 переменной, выдает ошибку. Screenshot_1.png

Dentr

Самое интересное, если хотя бы одну переменную сделать внешней, то все остальные переменные будут определяться как та единственная внешняя переменная,кроме первой. То есть ниже пример. Вторую переменную сделал внешней (через компас), и по итогу и третья и вторая начали выдавать одно и тоже значение. Даже если вбить рандомный индекс в свойство Variable(35), то выдаст тоже значение ,что и у второй переменной. Screenshot_2.pngScreenshot_3.png

Nipal

Вместо индекса по имени переменной не пробовали получать?

Dentr

Пробовал. Так вообще не работает, даже к первой переменной не хочет обращаться.Screenshot_4.png

Kirilius83

Цитата: IgorT от 24.01.24, 15:12:45О переходе к трехмеру может быть разговор?
А что это поменяет? Что так что этак это переменная, которая меняется, причем даже в трехмерка она всеравно как правило находится в 2Д эскизе! Т.е. всеравно пляшем то от эскиза, а он плоский.

IgorT

Цитата: Kirilius83 от 25.01.24, 09:28:15А что это поменяет? ...
Меняет то, что возможно можно будет без кодинга обойтись.
Но! ТС просил не разводить тут дебаты. Если есть у Вас желание, то может быть можно поговорить в отдельной теме. Только у меня нет знаний SDK Компаса.

Михаил88

Screenshot_1.png

iKompasDocument2D = KAPI7.IKompasDocument2D(Prym)
iKompasDocument2D1 = KAPI7.IKompasDocument2D1(iKompasDocument2D)
iVariable_A = iKompasDocument2D1.Variable(False, 'A')
iVariable_A.Value = 66
print(iVariable_A.Value)
iVariable_B = iKompasDocument2D1.Variable(False, 'B')
iVariable_B.Value = 105
print(iVariable_B.Value)
iVariable_C = iKompasDocument2D1.Variable(False, 'C')
iVariable_C.Value = 59
print(iVariable_C.Value)

iKompasDocument2D1.RebuildDocument()

Screenshot_2.png

Screenshot_3.png
+ Благодарностей: 2

Dentr