Python и К3

Модераторы: Лабутин Сергей Евгеньевич, Алек(андр

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 15:21

Странно!
Но если так
Код: Выделить всё
# -*- coding: utf-8 -*-
import k3
import time
Params = k3.getpar()
arr = k3.VarArray(20)
k3.setvarinst(1, "SumCost", 100)
time.sleep(1)

то работает.
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение bonduran » 18 май 2016 15:46

с этими массивами нереально странно. Я как уже писал, нашёл выход - не создавать массивы а передавать их из макроса К3 параметром и дальше таскать везде. Но с функцией NPGetByWhere это не прокатывает. Я даже пытался написать функцию в макросе К3 и вызвать её из макроса на питоне
Код: Выделить всё
getpar condition, price;
price=0;
count=NPGetByWhere(1,condition,"result");
if (count>0)
{
    id=result[1];
    price=PriceInfo(id,"Price",0);
    putmsg(price)
}

Вот так работает без ошибок. Но если закомментировать putmsg - то SumCost(2,sc) выдаёт ту же ошибку. Здесь руки опустились и я написал свою кривую реализацию NPGetByWhere на питоне
Юрий С. Интен-центр
bonduran
 
Сообщения: 63
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 16:03

Ух ты! и putmsg помогает?
Если есть putmsg то ошибки нет?
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 16:04

print не помогает
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 16:05

нет, putmsg не помог
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 16:10

Я много где VarArray использую и проблем не возникало.
Видимо тут какая то конкретная проблема в SumCost

Попробуем отловить.
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение bonduran » 18 май 2016 16:23

Иногда помогает второй параметр.
Код: Выделить всё
import k3
params = k3.getpar()
arr = k3.VarArray(20) 
k3.setvarinst(1, "SumCost", 100)

так ошибка
Код: Выделить всё
import k3
params = k3.getpar()
arr = k3.VarArray(20, "ggg") 
k3.setvarinst(1, "SumCost", 100)

так нет ошибки
Код: Выделить всё
import k3
params = k3.getpar()
arr = k3.VarArray(20, "ggggg") 
k3.setvarinst(1, "SumCost", 100)

так снова ошибка

Я всё перепробовал думал длина имени, но как-то получилось без ошибки и с длинным именем. Но NPGetByWhere всё равно с ошибкой, какое бы имя я не писал.
Юрий С. Интен-центр
bonduran
 
Сообщения: 63
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 16:52

Вот такой код

Код: Выделить всё
# -*- coding: utf-8 -*-
import k3
import random
import string

def getRandomNameK3(pref='a_'):

    nameArrK3 = pref + ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for x in range(8))
    while k3.isvardef(nameArrK3) > 0:
        nameArrK3 = 'a_' + ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for x in range(8))
    return nameArrK3

def gArr(nm):
    arr = k3.VarArray(20, nm)
    return arr

def main():
    Params = k3.getpar()
    nm = getRandomNameK3()
    arr = gArr(nm)
    e = k3.setvarinst(1, "SumCost", 100)
    k3.putmsg(nm)

if 'arr' in globals().keys():
    del(arr)
if __name__ == '__main__':
    main()


работает на расчет стоимости.
Но без putmsg не хочет :)
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение Алек(андр » 18 май 2016 17:04

Судя по всему для работы sumCost должно произойти обновление командной строки. putmsg c этим прекрасно справляется.

На счет npgetbywhere нашел такой кусок

Код: Выделить всё
     
arrcomp=k3.VarArray(10,"arrcomp")
colkomp=k3.npgetbywhere(1," [ParentID]="+str(self._lifttype),"arrcomp")


работает!

Но Вы пишете именно про SumCost.
Мне кажется надо попробовать переписать весь..\Proto\SumCostProj.mac на питон

Может поможет
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение bonduran » 18 май 2016 17:53

Спасибо за время и совет, попробую переписать SumCostProj.mac.
Да проблема только в функции SumCost. А так давно уже не было проблем с питоном. Кроме try catch finally, который в определённой вложенности не хочет обрабатывать и корректную работу макроса при отмене ввода или выбора объекта, да можно и без этого жить.
Юрий С. Интен-центр
bonduran
 
Сообщения: 63
Зарегистрирован: 14 фев 2013 15:23

Модуль связи с локальным CodeMeter

Сообщение Алек(андр » 07 окт 2016 13:51

Возникла необходимость разобраться с ключами в отделе. WebAdmin использовать не хотят.

Написал модуль, который пишет серийник и лицензии на экран. Вдруг кому пригодится!

Можно при импорте использовать в других модулях .

import CM_URL as cm
print(cm.get_serial_code())
print(cm.get_licenses())


Вызов из командной строки К3: macro protopath+"CM_URL.py";
>>>Команда:
;macro protopath+"CM_URL.py";
Найден локальный CodeMeter серйный номер 2-28xxxx
Лицензионные продукты:
------K3-Mebel PKM 6.x app
------K3-Mebel Salon 6.x app
------K3-Mebel IKM 6.x app
------K3-Mebel AMBI 7.1 app
------K3-Mebel AMBI 7.3 app
------K3-Mebel PKM 7.1 app
------K3-Mebel PKM 7.3 app
------K3-Mebel Salon 7.1 app
------K3-Mebel Salon 7.3 app
------K3-Mebel Machine 7.1 app
------K3-Mebel Cutting 2.0 app


Изображение

:arrow: Сылка для скачивания
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение bonduran » 07 ноя 2016 10:25

Вопрос следующий: при каждом вызове макроса на Python растет список os.sys.path, это нормально? Это так у всех?
Вот код для проверки, вызываю из макропрограммы .mac
Код: Выделить всё
import os
print(os.sys.path)
print(len(os.sys.path))
Юрий С. Интен-центр
bonduran
 
Сообщения: 63
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

Сообщение Алек(андр » 07 ноя 2016 14:15

Глянул, действительно так !
Добавляется +1 '.....\\Data\\PKM\\Proto',
Код: Выделить всё
# -*- coding: utf-8 -*-
#import k3
import re
import os

for e in sorted(os.sys.path):
    print(e)
print('------------------')
print('Всего {0} в том числе путей к папке Proto {1}'.format(len(os.sys.path), len(list(filter(lambda x: re.findall ('Proto[\\\]?$', x,  re.I), os.sys.path)))))
print('------------------')


з.ы. Спасибо за замечание! поправим.
Аватара пользователя
Алек(андр
 
Сообщения: 1153
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Пред.

Вернуться в К3-Мебель. Программа для производства и продажи мебели.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2