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

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

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

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

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

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

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

Внешние переменные в 2D. Чтение есть. Обновление?

Автор Vitalij Lysanov, 17.07.17, 10:39:15

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

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

Vitalij Lysanov

Для управления чертежами хочется программно управлять внешними переменными на чертеже.

Пока получается только чтение внешних переменных.

Исходное:
Чертеж, 4 отрезка.
Размеры отрезков.
Появились v1,v2,v3,v4.
Назначаем внешние с другими именами.
Включаем программу.
  >>>
sss.ksGetArrayCount()=     4
par.value=                 64.0
par.name=                  gg
sss.ksSetArrayItem(2,par)= 1
 
Получили количество переменных, значение и имя одной из переменных.
Изменять программно?




import Kompas6API5, LDefin2D

Kompas, doc2d = start2d()
par = Kompas.GetParamStruct(85)
sss=doc2d.ksGetDocVariableArray(0)
print
print "sss.ksGetArrayCount()=    ",sss.ksGetArrayCount()


sss.ksGetArrayItem(2,par)
print "par.value=                ",par.value

print "par.name=                 ",par.name

par.value=111
print "sss.ksSetArrayItem(2,par)=",sss.ksSetArrayItem(2,par)

#__________________________
#t = doc2d.ksGetObjParam( p, par, LDefin2D.ALLPARAM )         # Взять параметры точки
#    doc2d.ksSetObjParam( p, par, LDefin2D.ALLPARAM )         # Заменить параметры точки

Vitalij Lysanov

#1
Код ниже обновляет значение переменной.
Сохранение играет роль обновления, или перестройки чертежа.
Без сохранения приходится перестраивать чертеж вручную.
Может можно просто обновить документ. 

Без сохранения все перестраивается, только цифра в таблице переменных не обновляется.





import Kompas6API5, LDefin2D

Kompas, doc2d = start2d()
par = Kompas.GetParamStruct(85)
sss=doc2d.ksGetDocVariableArray(0)
print
print "sss.ksGetArrayCount()=    ",sss.ksGetArrayCount()


sss.ksGetArrayItem(2,par)
print "par.value=                ",par.value

print "par.name=                 ",par.name

par.value=111
print "sss.ksSetArrayItem(2,par)=",sss.ksSetArrayItem(2,par)

sss.ksGetArrayItem(2,par)
print "par.value=                ",par.value

doc2d.ksSetDocVariableArray(0,sss,False)
doc2d.ksSaveDocument ("")       #  Сохраним документ




import Kompas6API5, LDefin2D

Kompas, doc2d = start2d()
par = Kompas.GetParamStruct(85)

for i in range(1,121,1):

    sss=doc2d.ksGetDocVariableArray(0)
    sss.ksGetArrayItem(2,par)
    par.value=i
    sss.ksSetArrayItem(2,par)
   

    doc2d.ksSetDocVariableArray(0,sss,False)
doc2d.ksSaveDocument ("")       #  Сохраним документ


Для перестроения, есть отдельная функция IKompasDocument2D1.RebuildDocument.
+ Благодарностей: 1