Exemple #1
0
def test():
    pan = k3.Var()
    k3.objident(k3.k_prompt, 'Укажите панель', k3.k_interact, pan)
    pat = k3.Var()
    k3.objident(k3.k_prompt, 'Укажите контур выреза', k3.k_interact, pat)    
    putcutrex(Panel=pan.value, Pat=pat, Dept=12)
    k3.mbpanel(k3.k_execute,pan.value )
def ptransGcsToPsc(args=[]):
    '''
    Принимает на вход список кратный 3 и преобразует точки из ГСК системы в ПСК.
        
    ::
    
    ...point = ptransGcsToPsc(args)
        
    ,где
    
    На входе
    
    args - список вида [Real,Real,Real,Real,Real,Real,....,Real,Real,Real,]
    
    На выходе
    
    args - список вида [Real,Real,Real,Real,Real,Real,....,Real,Real,Real,]   
    '''
    result = []
    Xc, Yc, Zc = k3.Var(), k3.Var(), k3.Var()
    while len(args) > 0:
        point, args = PointOutListPoint(args)
        k3.ptranscs(3, 0, point, Xc, Yc, Zc)
        result.append(Xc.value)
        result.append(Yc.value)
        result.append(Zc.value)
    return list(map(f_round, result))
Exemple #3
0
 def udgetinfo(self, pos):
     '''Получить информацию о категории или свойствею
     Возвращает: Имя, Идентификатор, Тип'''
     Name, Variable, ValType = k3.Var(), k3.Var(), k3.Var()
     Name.value, Variable.value, ValType.value = '', '', 0
     result = _udgetinfo(pos, Name, Variable, ValType)
     return Name.value, Variable.value, ValType.value
def g(nm):
    ValType = k3.Var()
    PrM = k3.Var()
    PrM.value = 0
    sVal = k3.Var()
    k3.udgetentity(nm[0], ValType, PrM, sVal)
    # print(PrM.value)
    nm[2] = PrM.value
 def getExistsLayerAll(self):
     '''Возвращает словарь , где ключом является имя существующего слоя, а значением является кортеж состояний погашен, блокирован'''
     layer_c=self.getNameLayersAll()
     layer_d = {}
     keyOFF, keyLOCK = k3.Var(), k3.Var()
     f = lambda name: int(k3.existslayer(name, keyOFF, keyLOCK))
     fIB = lambda I: False if abs(I-0.01) > 0.02 else True
     for l in  layer_c[0]:
         if f(l) > 0:
             layer_d[l] = (fIB(keyOFF.value), fIB(keyLOCK.value))
     return layer_d
Exemple #6
0
 def ud_get(self):
     try:
         vType = k3.Var()
         sVal = k3.Var()
         rVal = k3.Var()
         res = k3.udgetentity("u69_CRTPan_1", vType, rVal, sVal)
         self.mask = int(rVal.value)
     except Exception as inst:
         print(type(inst))  # the exception instance
         print(inst.args)  # arguments stored in .args
         print(inst)
Exemple #7
0
    def udgetentity(self, pos):
        '''Получить значение свойства по переменной или по позиции'''
        def _isint(val):
            if isinstance(val, float):
                if abs(val - int(val)) < 0.0001:
                    return int(val)
            return val

        ValType, dVal, sVal = k3.Var(), k3.Var(), k3.Var()
        ValType.value, sVal.value, dVal.value = '', '', 0
        if pos > 0:
            _udgetentity(pos, ValType, dVal, sVal)
        return sVal.value if ValType.value in (4, 11) else _isint(dVal.value)
def start_object_raster():
    obj = k3.Var()
    k3.objident(k3.k_interact, obj)
    start_time = time.time()
    p = Raster(obj.value)
    end_time = time.time() - start_time
    print(str(datetime.timedelta(seconds=end_time)))
 def PropInfo(self,ID,Name, defVal=0, Typ=1):
     '''возвращает значение свойство Name изделия с ID из базы'''
     result=None
     #try:
     result=k3.Var()
     result=k3.priceinfo(ID,Name,defVal,Typ)
     #except KeyError, ID,Name:
         #raise AttributeError, ID
     return result
def findgabscene(params=[]):
    """
    :param params: Список указателей на объекты сцены.

    :return: Возвращает массив из 6-ти элементов или 6 координат минимальных и максимальных габаритов сцены.

    .. hint:: **Варианты вызова из K3Mebel:**

        ::

        ...macro protopath+"Utilites_K3.py" "FindGabScene" byref x1 byref y1 byref z1 byref x2 byref y2 byref z2 done ;

        или

        ::

        ...defarr xm[6];
        ...macro protopath+"Utilites_K3.py" "FindGabScene" byref xm done;
    """
    if len(params) not in [1, 6]:
        raise BaseException(
            '\nНеверное число аргументов\nТребуется передать массив из 6-ти элементов или 6 переменных в качестве аргументов'
            + str(len(params)))
    maxPoint = [k3.Var() for i in range(6)]
    for i in range(6):
        maxPoint[i].value = 999999999 if i < 3 else -999999999
    xm = k3.VarArray(6)
    nobj = k3.sysvar(62)
    m = getListArrayAllObjectsScene()
    tobj = []
    for mi in m:
        try:
            for a in mi:
                tobj.append(a.value)
        except:
            k3.putmsg('Число ' + str(len(tobj)) + ' из ' + str(int(nobj)))
            pass
    for i in tobj:
        try:
            err = k3.objgab3(i, xm)
            for j in range(6):
                maxPoint[j].value = min(maxPoint[j].value,
                                        xm[j].value) if j < 3 else max(
                                            maxPoint[j].value, xm[j].value)
        except:
            pass
    if type(params[0]) == k3.VarArray:
        for i in range(6):
            params[0][i].value = maxPoint[i].value
    elif type(params[0]) == k3.Var:
        for i in range(6):
            params[i].value = maxPoint[i].value
    else:
        for i in range(6):
            params[i] = maxPoint[i].value
    return params
def sortapanelstocommonpos(params):
    '''
    Cортирует массив содержащий ссылки на полотно панели по возрастанию атрибута CommonPos.
    
    Параметр: params - кортеж
        + Число панелей params[0] - k3.VarArray().
        + Cсылки на полотно панели params[1] - k3.Var()
    '''
    nEl = params[0]  # Передаем переменную К3 внутрь Python
    aPanels = params[1]
    cp_save = params[2] if len(params) > 2 else -1
    lPanels = [aPanels[a].value for a in range(int(nEl))]
    dPan = {}
    for pan in lPanels:
        i = 0
        err = 1.0
        h = k3.Var()
        hd = k3.Var()
        h.value = pan
        while err == 1.0 and i < 10:
            i += 1
            err = k3.getobjhold(h, hd)
            cp = k3.getattr(hd.value, "FurnType", '010000')

            if cp != '010000':

                break
            h = k3.Var()
            h.value = hd.value

        cp = k3.getattr(hd.value, "Commonpos", -99)
        if cp != -99:
            if (cp not in list(dPan.keys())):
                dPan[cp] = []
            dPan[cp].append(pan)
    keys_dPan = list(dPan.keys())
    keys_dPan.sort()
    i = 0
    for pan in keys_dPan:
        for s in dPan[pan]:
            aPanels[i].value = s
            i += 1
Exemple #12
0
def get_pnt_interact():
    """Возвращает указатель на мебельную панель в интерактиве"""
    try:
        pnt = k3.Var()
        k3.fltrparamobj(1, 61)
        k3.objident(k3.k_partly, k3.k_interact, pnt)
        pan = pnt.value
    except:
        pan = None
    k3.fltrparamobj(0)
    return pan
 def GetData(ScrMod, ParGroup):
     # Чтение скрэйтча
     Data='';
     CurIDM=k3.Var('CurIDM');
     numpar=k3.cntvarscr(ScrMod,ParGroup)
     if numpar>0:
         DSArr = k3.VarArray(int(numpar))
         numP = k3.namevarscr(ScrMod,ParGroup,DSArr)
         for ScrPar in DSArr:
             nullout=k3.getscratch(ScrMod,ParGroup,ScrPar,CurIDM,psc);
             Data += "#"+str(CurIDM.value)
     
     return Data
Exemple #14
0
def dialog():
    vFailColor = k3.Var()
    k3.getvarinst(2, "FailColor", vFailColor, 12)
    FailColor = vFailColor.value
    k3.select(k3.k_stayblink, k3.k_partly, llbasis, k3.k_done)
    ok_flag = k3.alternative(
        "Поиск панелей с левой базой", k3.k_msgbox, k3.k_picture, 1, k3.k_beep,
        1, k3.k_text, k3.k_left, "Панели с левой базой выделены мерцанием", "",
        "Отключить мерцание найденных объектов?", k3.k_done, "Да", "Нет",
        "Изменить цвет", k3.k_done)
    if (ok_flag[0] == 1):
        k3.select(k3.k_all, k3.k_done)
    elif (ok_flag[0] == 3):
        k3.chprop(k3.k_color, k3.k_partly, k3.k_previous, k3.k_done, FailColor)
Exemple #15
0
 def _lset(v):
     t = k3.Var()
     # print(type(v))
     if type(v) in [str, int, float]:
         t.value = v
         return (k3.k_byref, t)
     elif type(v) == k3.VarArray:
         t = v
         #return t
         return (k3.k_byref, t)
     elif isinstance(v, k3.K3Obj):
         t.value = v
         return (k3.k_byref, t)
     elif type(v) == k3.Var:
         t = v
         return (k3.k_byref, t)
     else:
         return None
def get_all_child_by_attr(obj, attrname=None):
    pnt = k3.Var()
    lchild = []
    n_list = k3.getcntobjga(obj)
    a_list = k3.VarArray(int(n_list))
    k3.scang(obj, a_list)
    for e in a_list:
        lchild.append(e.value)
    for e in lchild:
        if k3.getobjhold(e, pnt) > 0:
            if k3.compareobj(panel, obj) > 0:
                pass
            elif e not in lchild:
                lchild.append(e)
    lresult = []
    if not attrname is None:
        for e in lchild:
            if k3.isassign(attrname, e) > 0:
                lresult.append(e)
    else:
        lresult = lchild
    return lresult
Exemple #17
0
                                if k3.findinarray(tAK3, pid, 1, nG) == 0:
                                    KeyMenu = menu_append(
                                        PropInfo(priceid, "MATNAME", 1, "") +
                                        " нельзя использовать для данной вариации отделок"
                                    )
                        else:
                            KeyMenu = menu_append(
                                "Данная вариация отсутствует в списке допустимых"
                            )

                        if KeyMenu:
                            if Shpon: type = "ШПОН"
                            if isMDF: type = "МДФ"
                            if isDSP: type = "ДСП"

                            vFailColor = k3.Var()
                            k3.getvarinst(2, "FailColor", vFailColor, 12)
                            FailColor = vFailColor.value
                            k3.select(k3.k_stayblink, k3.k_partly, obj,
                                      k3.k_done)
                            ok_flag = k3.alternative(
                                "Предупреждение", k3.k_msgbox, k3.k_picture, 1,
                                k3.k_beep, 1, k3.k_text, k3.k_left,
                                "Панель выделена мерцанием",
                                "Тип проверки: " + type,
                                "У выделенной панели на пласти <'{}'> назначены группы:"
                                .format(side), ', '.join(
                                    map(lambda x: nGroups[x],
                                        dPans[side])), "", ', '.join(lMenu),
                                "", "Отключить мерцание найденных объектов?",
                                k3.k_done, "Да", "Нет", "Изменить цвет",
# -*- coding: cp1251 -*-
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
import k3
#import wingdbstub

from tkinter import *
from tkinter.ttk import *
import Utilites_K3 as Ut

NULL=k3.renumerate()
sy = k3.sysvar(62)

obj_k3 = k3.Var()
k3.switch(k3.k_autosingle,k3.k_on)
#k3.selbyattr('left(FurnType,2)==\"10\"&&Posit!=10',k3.k_prompt,str('Выберите изделие'),k3.k_interact)
#3.selbyattr('Posit!=10',k3.k_prompt,str('Выберите изделие'),k3.k_interact)
k3.selbyattr('IsAssign(\"FurnType\")',k3.k_prompt,str('Выберите изделие'),k3.k_stayblink,k3.k_interact,k3.k_done)
sel = k3.sysvar(61)
if sel==0:
    Arr = Ut.getListArrayAllObjectsScene(AttrFilter='IsAssign(\"FurnType\")')
    # k3.cancel

listUP = []
listUN = [] 
for i in range(int(sel)):
    obj_k3.value = k3.getselnum(i+1)
    # UnitPosObj = k3.getattr(obj_k3,'UnitPos',0)
    listUP.append(int(k3.getattr(obj_k3,'UnitPos',0)))
    UnitName = k3.getattr(obj_k3,'UnitName','')
    # listUN.append(k3.getattr(obj_k3,'UnitPos',0))
Exemple #19
0
    def Draw(self,
             Side="F",
             PathIn=1,
             IsOBJDXF=True,
             LAYERTODXF=False,
             OBJ_DXF=None):
        '''Изображение отверстия'''
        userproperty = Userproperty()
        cir = k3.Var()
        list_objs = []
        g_upr = k3.GlobalVar('g_upr')
        gupr = g_upr.value
        #-- Нормируем вектор направления
        #self.getNormal()
        result = False
        issign = lambda S: 1 if S == 'A' else -1

        if self.Side == Side or self.Through == True:
            holesPath = k3.mpathexpand("<k3files>") + '\Holes\\'
            nm = holesPath + str(self.Diameter) + (
                '_' + str(self.Hohe) if not self.Through else '') + '.k3'
            cir = k3.circle(self.Xc, self.Yc, 0., k3.k_normal, (0., 0., 1.),
                            self.Diameter / 2.0)[0]
            ct = cir
            # ставим особый символ для идентификации отверстий
            try:
                if IsOBJDXF:
                    if LAYERTODXF:
                        self.Change(cir, self.set_name_layer_drill())
                    OBJ_DXF.addCounterHandle(cir)
                    if gupr != 1.0:
                        print(gupr)
                        ct = k3.scale(k3.k_copy, cir, k3.k_done, self.Xc,
                                      self.Yc, 0., gupr)
                else:
                    if gupr != 1.0:
                        print(gupr)
                        k3.scale(k3.k_nocopy, cir, k3.k_done, self.Xc, self.Yc,
                                 0., gupr)

                if k3.fileexist(nm) > 0:
                    tt = k3.append(nm, self.Xc, self.Yc, 0.)
                    if len(tt) > 0:
                        tt = k3.group(tt)
                        if gupr != 1.0:
                            k3.scale(k3.k_nocopy, tt[0], k3.k_done, self.Xc,
                                     self.Yc, 0., gupr)
                        self.objs.append(tt[0])
            except:
                pass
            result = True
            self.objs.append(cir)
            #k3.objident(k3.k_last,1,cir)
            k3.chprop(k3.k_lwidth, cir, k3.k_done, userproperty.DrawLineS)
            if self.Through:
                dss = ''
            else:
                dss = "x" + str(self.Hohe)
        elif self.Side in ['B', 'C', 'D', 'E', 'X']:  # Торцевые отверстия
            #-- Внутренняя линия отверстия
            chkn = 0
            xc1 = self.Xc
            yc1 = self.Yc
            xc2, yc2 = self.getEndPointTHole()
            colcen = 60
            lineCen = Central(xc1, yc1, 0, xc2, yc2, 0)
            #k3.chprop(k3.k_grfcoeff,k3.k_last,1,k3.k_done,1)
            k3.setucs(xc1, yc1, 0, xc2, yc2, 0, xc2 * 1.5, yc2 * 1.5, 0)
            recObj = k3.rectangle(k3.k_3points, 0, self.Diameter / 2.0, 0,
                                  self.Hohe, self.Diameter / 2.0, 0, 0,
                                  -self.Diameter / 2.0)[0]
            k3.setucs(k3.k_previous)
            self.objs.extend([lineCen, recObj])
            if IsOBJDXF:
                if LAYERTODXF:
                    self.Change(recObj, self.set_name_layer_drill())
                OBJ_DXF.addCounterHandle(recObj)
                OBJ_DXF.addCounterHandle(lineCen)
            result = True

        return result
Exemple #20
0
            k3.k_text,
            k3.k_left,
            "В процессе создания отчета произошла ошибка",
            "Отчет '{0}' не создан!".format(rep_name),
            k3.k_done,
            "  OK  ",
            k3.k_done,
        )


if __name__ == "__main__":

    import k3

    pic_dir = k3.mpathexpand("<Pictures>")
    cnt_scrap = k3.Var()
    scrap_rate = k3.Var()
    margin = k3.Var()
    block_res = k3.Var()
    client = k3.Var()
    joiners = k3.Var()

    cnt_scrap.value = 50
    scrap_rate.value = 2
    margin.value = 3.0
    block_res.value = False
    client.value = False
    joiners.value = False
    over_percent = 10

    ParList = []
# -*- coding: utf-8 -*-
import k3

n_scrFas = k3.Var()  # Количество групп отделок
nullout = k3.getvarinst(2, "n_scrFas", n_scrFas, 0)
n_scrFas = int(n_scrFas.value)
SrcFasGroup = k3.VarArray(n_scrFas)  # ID группы отделки
nullout = k3.getarrinst(2, "SrcFasGroup", SrcFasGroup)
SrcFasName = k3.VarArray(n_scrFas)  # Название группы отделки
nullout = k3.getarrinst(2, "SrcFasName", SrcFasName)
SrcFasEntF = k3.VarArray(n_scrFas)  # Названия переменных для Тыла
nullout = k3.getarrinst(2, "SrcFasEntF", SrcFasEntF)
SrcFasEntA = k3.VarArray(n_scrFas)  # Названия переменных для Лица
nullout = k3.getarrinst(2, "SrcFasEntA", SrcFasEntA)


def CheckVar(NameVar, ir):

    return (str(int(k3.GlobalVar(NameVar + str(ir)).value))
            if k3.isvardef(NameVar + str(ir)) > 0 else "0")


Namescr = "FasadPar"
g_Scratch = k3.GlobalVar('g_Scratch')
params = k3.getpar()
pnt, FasCode = params

res = k3.calcvarscr(g_Scratch.value, FasCode.value)  # Читаем из скретча

nulldf, nulldf1 = k3.Var(), k3.Var()
gs_Nfasad = int(k3.GlobalVar('Nfas').value)
Exemple #22
0
def getprotoval(h, name):
    v = k3.Var()
    if k3.getprotoval(h, name, v) > 0:
        return v.value
    else:
        return None
         for ScrPar in DSArr:
             nullout=k3.getscratch(ScrMod,ParGroup,ScrPar,CurIDM,psc);
             Data += "#"+str(CurIDM.value)
     
     return Data
 
 NameAtrPos="CommonPos"
 
 Pans = {}
 Dsys = {}
 ArrPans = Ut.getListArrayAllObjectsScene(AttrFilter='left(furntype,2)==\"01\"')
 ArrBoxs = Ut.getListArrayAllObjectsScene(AttrFilter='left(furntype,4)==\"3101\"')
 ArrDsys = Ut.getListArrayAllObjectsScene(AttrFilter='furntype==\"210000\"')
 ArrRubb = Ut.getListArrayAllObjectsScene(AttrFilter='left(furntype,5)==\"10001\"')
 
 psc=k3.Var('psc')
 num = 0
 
 # Панели
 for obj in [elem.value for Arr in ArrPans for elem in Arr if isinstance(elem.value, k3.K3Obj)]:
     if k3.isassign("FurnType", obj):
         tt = k3.getattr(obj, "FurnType", "")
     else:
         tt = 'xxxxxx'
     # находим панели, но не полотна панелей
     if tt[:2] == '01' and tt[2:] in ['0000', '1000']:
         continue
     Number = k3.getattr(obj, "Number", "")
     if Number in Pans:
         Pans[Number].append(obj)
     else:
 def udGetEntity(self, Name=None):
     '''читает свойство из пользовательских умолчаний'''
     ValType, sVal, rVal = k3.Var(), k3.Var(), k3.Var()
     ValType.value, sVal.value, rVal.value = 0, '', 0
     err = k3.udgetentity(Name, ValType, rVal, sVal)
     return err, ValType.value, rVal.value, sVal.value
Exemple #25
0
def getObj():
    k3.selbyattr('dsview',k3.k_partly,k3.k_all,k3.k_done)
    if k3.sysvar(61)>0:
        obj=k3.getselnum(1)
        return True, obj
    return False, None
    

Params = k3.getpar()
vnumWmf = Params[0] #k3.Var('vnumWmf')
k3.select(k3.k_all)
lobj=[]
for i in range(int(k3.sysvar(61))):
    lobj.append(k3.getselnum(i+1))
rs = getObj()
if rs[0]:
    hold=k3.Var()
    err=k3.getobjhold(rs[1],hold)
    holdo = hold.value
    k3.line(0., 0., 0., 100., 0., 0., k3.k_done)
    ls = k3.Var()
    k3.objident(k3.k_last, 1, ls)
    k3.add(k3.k_partly, holdo, ls.value)
    k3.extract(k3.k_partly, holdo, rs[1])
    k3.invisible(k3.k_wholly, lobj)
    k3.zoom(k3.k_oneview,k3.k_extents) 
    k3.exp2d(k3.k_wmf, k3.k_yes, k3.k_optimized, k3.k_yes, k3.k_fit, k3.k_yes, k3.k_height, 9500, k3.k_width,9500, k3.k_inscribe, k3.k_yes, vnumWmf.value, k3.k_overwrite ) 
    k3.visible(k3.k_wholly, lobj)
    rs = getObj()
    k3.add(k3.k_partly, holdo, rs[1])
    k3.delete(k3.k_partly, ls.value)
Exemple #26
0
FrontF, NeedEskisA, NeedEskisF = isFront.isfront(
    Panel)  # Является ли пласть F лицом

if NeedEskisA:
    k3.setvarinst(1, "NeedEskisA", 1)
if NeedEskisF:
    k3.setvarinst(1, "NeedEskisF", 1)

k3.selbyattr('furntype==\"010000\"', k3.k_child, Panel.holder)
p = k3.getselnum(1)
nH = k3.getholes(p)
if nH > 0:
    k3.VarArray(int(nH * 15), 'aHoles')
    nHH = k3.getholes(p, 'aHoles')
    aHoles = k3.VarArray(int(nHH), 'aHoles')
    nh = k3.Var()
    nh.value = int(nH)
    drs.drill_finder([aHoles, nh], Panel)

result = (Panel.rectangle_forma, max(len(Panel.slots),
                                     len(Panel.pSlots)), 'holes'
          in Panel.__dict__.keys())

isEskis.value = 1
if result == (True, 0, False):
    isEskis.value = 0

dictSlot = {1: 'D', 3: 'C', 5: 'E', 7: 'B', 9: 'X', 0: 'X'}

# FrontF = False # True - Лицо по пласти F
# if Panel.cover_count > 0:
# Licence:     FREE
#-------------------------------------------------------------------------------
'''
Возвращает строку pl_pnt полученную в результате выполнения операций с первыми nElStr элементами массива aNAtr
Выполняет expression для строки с разделителями ;
Например: '{a=getattr(0,"priceid",0);priceinfo(a,"MATTYPENAM",1)+" "+STR(priceinfo(a,"THICKNESS",1))+" мм"'

'''
#import wingdbstub
import k3 # Подключаем модуль k3

params=k3.getpar()
pl_pnt,nElStr,aNAtr = params[0],params[1],params[2]

S_val = ''
v_result,v_error = k3.Var(), k3.Var()
for i in range(int(nElStr)):
    elem = aNAtr[i]
    vv = elem.value if type(elem.value)==float else k3.getattr(0,elem.value,elem.value)
    if type(vv) in [int, float]:
        if abs(vv-int(vv))<0.0001:
            vv = int(vv)
    else:         
        pos = k3.instr(1,vv,"{",1)
        if pos>0:
            l_vv=len(vv)
            cod = k3.right(vv,l_vv-pos)            
            lcod=cod.split(';')
            if len(lcod)>0:
                for cod in lcod:
                    k3.expression(cod,v_result,v_error) 
    NameAtrPos = "CommonPos"

    Pans = {}
    # Boxs = {}
    Dsys = {}
    # Rubb = {}
    ArrPans = Ut.getListArrayAllObjectsScene(
        AttrFilter='left(furntype,2)==\"01\"')
    ArrBoxs = Ut.getListArrayAllObjectsScene(
        AttrFilter='left(furntype,4)==\"3101\"')
    ArrDsys = Ut.getListArrayAllObjectsScene(AttrFilter='furntype==\"210000\"')
    ArrRubb = Ut.getListArrayAllObjectsScene(
        AttrFilter='left(furntype,5)==\"10001\"')

    psc = k3.Var('psc')

    # Панели
    for elem in [elem for Arr in ArrPans for elem in Arr]:
        obj = elem.value
        if isinstance(obj, k3.K3Obj):
            if k3.isassign("FurnType", obj):
                tt = k3.getattr(obj, "FurnType", "")
            else:
                tt = 'xxxxxx'
            # находим панели, но не полотна панелей
            if tt[:2] == '01' and tt[2:] in ['0000', '1000']:
                continue
            Number = k3.getattr(obj, "Number", "")
            # Pans[obj] = Number
            if Number in Pans:
def CheckVar(NameVar, ir):
    # print(str(int(k3.GlobalVar(NameVar+str(ir+1)).value)))
    return (str(int(k3.GlobalVar(NameVar + str(ir)).value))
            if k3.isvardef(NameVar + str(ir)) > 0 else '')


Namescr = "FasadPar"
g_Scratch = k3.GlobalVar('g_Scratch')
params = k3.getpar()
pnt = params[0]
FasCode = params[1]
res = k3.calcvarscr(g_Scratch.value, FasCode.value)  # Читаем из скретча
# print(res)
# print(FasCode.value)
n = 7
nulldf, nulldf1 = k3.Var(), k3.Var()
aDecor1, aDecor2, aDecor3, aDecor4, aDecor5 = k3.VarArray(n), k3.VarArray(
    n), k3.VarArray(n), k3.VarArray(n), k3.VarArray(n)
fDecor1, fDecor2, fDecor3, fDecor4, fDecor5 = k3.VarArray(n), k3.VarArray(
    n), k3.VarArray(n), k3.VarArray(n), k3.VarArray(n)
aDecor6, aDecor7, aDecor8, aDecor9 = k3.VarArray(n), k3.VarArray(
    n), k3.VarArray(n), k3.VarArray(n)
fDecor6, fDecor7, fDecor8, fDecor9 = k3.VarArray(n), k3.VarArray(
    n), k3.VarArray(n), k3.VarArray(n)
#KCur=0;

gs_Nfasad = int(k3.GlobalVar('Nfas').value)
# print('scrDialog.py',gs_Nfasad)
lNfasad = list(range(gs_Nfasad))
lNfasad.reverse()
ok_flag = k3.setvar(