Python и К3

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

Re: Python и К3

Сообщение Алек(андр » 14 май 2015 09:37

Moroz писал(а):Это больше для собственного развития и для завтрашнего дня, чем для решения сегодняшних задач!

win32api говорите? У меня окно работает если запустить с командной строки винды, не работает только если с к3 запустить!


Ну так вы читайте, что Вам Qt пишет. А пишет он , что не тот у вас плагин Qt для винды. К3 приложение 32-разрядное учтите это! И все должно быть 32-х разрядное. В sys.path должны быть все правильные пути для поиска подключаемых библиотек. Используемые приложениями dll не должны конфликтовать с dll используемыми mebel.exe . Смотрите в процессменеджере, какие процессы кто порождает. Не должно быть конфликтов! если есть конфликты надо искать сборку Qt удовлетворяющую ваш компьютер .

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

Re: Python и К3

Сообщение bonduran » 15 май 2015 10:17

Здравствуйте, Александр, подскажите как проще решить следующую проблему: есть 2 моих макроса модуль1.py и модуль2.py, в модуль1.py написано from модуль2.py import *. Если я изменяю модуль2.py К3 видит эти изменения только после перезапуска. Как сделать чтобы К3 видела изменения сразу?
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

Сообщение Алек(андр » 15 май 2015 11:24

К сожалению никак отлаживайте модуль, а затем им пользуйтесь .
Это требуется только разработчикам.


вот это -> from модуль2.py import *
не pythonic http://docs.python-guide.org/en/latest/writing/style/

не советую пользоваться. Или конкретный список импортируемых классов и функций
или import DlinnoeImyaModulyaPython as DMP

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

Re: Python и К3

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

Александру...Старая проблема дала знать. Больше года назад, я писал, что функция SumCost(2,sc) выдаёт ошибку "Нет такой команды" если расчёт стоимости идёт по макросу на питоне И в этом макросе объявить массив К3 например так, arr=k3.VarArray(20). Теперь эта же проблема не даёт использовать функцию NPGetByWhere в макросе расчёта стоимости на питоне - та же ошибка. Может эту ошибку можно как-то исправить?
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

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

Дайте вашу программу расчета.
Что именно не идет?
Аватара пользователя
Алек(андр
 
Сообщения: 1168
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Python и К3

Сообщение bonduran » 18 май 2016 09:49

В умолчаниях ставим расчёт панелей по макро. Пишем имя макроса вот код:
Код: Выделить всё
global ProtoPath;
getpar obj;
macro ProtoPath+"//iProto//sum//sumcostTest.py" byref obj;

Это код макроса расчёта стоимости, который вызывает макрос расчёта стоимости на питоне вот код:
Код: Выделить всё
import k3
arr = k3.VarArray(20)   #если это убрать ошибки не будет
k3.setvarinst(1, "SumCost", 100)

Кстати, иногда ошибки не появляется, например, вот
Код: Выделить всё
import k3
arr = k3.VarArray(20,"ggg")   #так вроде нет ошибки
k3.setvarinst(1, "SumCost", 100)

Но закономерности я не нашёл, например, вот тут снова ошибка
Код: Выделить всё
import k3
arr = k3.VarArray(20,"gggggg")   #так есть ошибка
k3.setvarinst(1, "SumCost", 100)
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

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

k3.sumcost(2, sc)

Учтите! питон регистрозависим!

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

Re: Python и К3

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

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

Re: Python и К3

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

Вот этой строкой
arr = k3.VarArray(20,"gggggg") #так есть ошибка

Вы определили объект типа VarArray в глобальном пространстве имен.
При попытке определить его еще раз Вы получите по м... Ой ! Ошибку :) поскольку пытаетесь определить массив с тем же именем в глобальном пространстве.

arr = k3.VarArray(20)
такой вариант создает массив с рандомным именем. Это избавит вас от ошибки, но "засрет" память поскольку Вы его создаете в глобальном пространстве.

Используйте функции

типа
Код: Выделить всё
def ffun():
   arr = k3.VarArray(20) 
   k3.setvarinst(1, "SumCost", 100)

ffun()


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

Re: Python и К3

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

Хорошо. Я объявил для простоты примера. На самом деле у меня всё в классе. Ошибка осталась. Вот новый макрос расчёта цены на панель вместо старого
Код: Выделить всё
import k3
def ffun():
   arr = k3.VarArray(20) 
   k3.setvarinst(1, "SumCost", 100)
ffun()
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

Сообщение bonduran » 18 май 2016 10:58

И кстати, такой код в макро расчёта стоимости работает без ошибок если его вызывать хоть 10 раз (вызываю через кнопку рассчитать стоимость)
Код: Выделить всё
import k3
arr = k3.VarArray(20, "ggg") 
k3.setvarinst(1, "SumCost", 100)

Хотя вы говорите, я объявляют массив с тем же именем ggg в глобальном пространстве имён и должен получить ошибку
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

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

>>>>На самом деле у меня всё в классе. Ошибка осталась...

Поздравляю!

Продолжать говорить абстрактно бесполезно.
Вы бы ошибку то показали.

Вообщето да! переопределение массива у меня ошибку не вызвало. Хотя массив сидит глобально.
Изображение
написал вот такой примерчик

Код: Выделить всё
# -*- coding: utf-8 -*-
import k3
arr = k3.VarArray(20,"ggg") 
k3.setvarinst(1, "SumCost", 100)


arr = k3.VarArray(20,"gggggg")
k3.setvarinst(1, "SumCost", 100)


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

Re: Python и К3

Сообщение bonduran » 18 май 2016 13:24

Я дал код. Сказал как его вызывать, ошибка может не всегда появляется..
Код: Выделить всё
import k3
arr = k3.VarArray(20) 
k3.setvarinst(1, "SumCost", 100)

Вот этот код даёт ошибку только если вызывается из функции SumCost(2,sc).
Что я ещё могу, я записал ролик, в котором, как мне кажется я показал все свои действия и код
https://yadi.sk/d/KtSo9P2NroRZ5
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Re: Python и К3

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

...\Data\PKM\Proto\SumCostProj.mac
дайте Ваш
и этот дайте
в ...\Data\PKM\Tests\sumcostTest.py
не заметил Params = k3.getpar()

вроде Вы его вызываете с передачей параметра.

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

Re: Python и К3

Сообщение bonduran » 18 май 2016 14:55

Вот все макросы. Все лежат в Proto для простоты. params = k3.getpar() тоже для упрощения примера не писал.
https://yadi.sk/d/RF7h633mroaWM
Юрий С. Интен-центр
bonduran
 
Сообщения: 66
Зарегистрирован: 14 фев 2013 15:23

Пред.След.

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

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

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