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

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

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

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

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

17.07.17, 21:12:49 #1 Последнее редактирование: 17.07.17, 21:51:38 от Vitalij Lysanov
Код ниже обновляет значение переменной.
Сохранение играет роль обновления, или перестройки чертежа.
Без сохранения приходится перестраивать чертеж вручную.
Может можно просто обновить документ. 

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





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