def getListArrayAllObjectsScene(AttrFilter=''):
    '''
    Возвращает список массивов к3 заполненных всеми объектами сцены
    '''
    listArr = []
    ng = k3.sysvar(62)
    if ng > 0:
        nn = 32767 if ng > 32767 else int(ng)
        arr = k3.VarArray(nn)
        if len(AttrFilter) < 3:
            m = k3.scanscene(arr)
        else:
            m = k3.scan_scene(arr, AttrFilter)[0]
        # print(m)
        if m > 0:
            arr_1 = k3.VarArray(int(m))
            k3.copyarray(arr_1, 1, arr, 1, int(m))
            listArr.append(arr_1)
        m1 = 0
        i = 0
        while ng > nn:
            i = i + 1
            nt = ng - nn
            nt = 32767 if nt > 32767 else nt
            arr = k3.VarArray(int(nt))
            m1 = k3.scanscene(arr, m + 1)
            nn = nt + nn
            m = m + m1
            listArr.append(arr)
    return listArr
def invisible_list_panhole(allp, get_all_child_by_attr):
    if not allp is None:
        for panel in allp:
            # Ищем полотно панели
            k3.selbyattr('FurnType=="010000"', k3.k_child, panel)
            # Если нашли
            if k3.sysvar(61) > 0:
                polotno = k3.getselnum(1)
                n = k3.getholes(polotno)
                arr = k3.VarArray(int(n * 15), 'arr')
                n = k3.getholes(polotno, 'arr')
                # Список всех отверстий панели
                lholes = [a.value for a in arr]
                # Список всех деталей крепежа, которым принадлежат отверстия
                lfix = [lholes[i] for i in range(2, len(lholes), 15)]
                # Реальные дети панели
                # Крепеж
                child_pan_fix = []
                for e in lfix:
                    if (k3.findobjholdg(panel, e)) > 0:
                        child_pan_fix.append(e)
                if len(child_pan_fix) > 0:
                    l_hole_rem = []
                    for e in child_pan_fix:
                        # список отверстий крепежа
                        c_hole_rem = get_all_child_by_attr(e,
                                                           attrname='HoleType')
                        for h in c_hole_rem:
                            if not h in lfix:
                                l_hole_rem.append(h)

                    for e in l_hole_rem:
                        if k3.penetrate(e, polotno) == 2:
                            k3.invisible(k3.k_partly, e)
def moveadj(objlst, cordt, pcrd, v):
    objlstp = []
    arr = k3.VarArray(15)
    for obj in objlst:
        k3.initarray(arr, 0)
        k3.getobjgeo(obj, arr)
        geoinfo = [a.value for a in arr]
        typobj = k3.getobjtype(obj)
        if typobj == 2.:
            # Линия
            if cordt == 'X':
                r = (0, 3)
            elif cordt == 'Y':
                r = (1, 4)
            geoinfo[0:6] = ptransGcsToPsc(geoinfo[0:6])
        elif typobj == 4.:
            if cordt == 'X':
                r = (7, 10)
            elif cordt == 'Y':
                r = (8, 11)
            geoinfo[7:13] = ptransGcsToPsc(geoinfo[7:13])

        if not False in [(pcrd < a) for a in [geoinfo[r[0]], geoinfo[r[1]]]]:
            objlstp.append(obj)
    #print(len(objlstp))
    #print([(pcrd<a) for a in [geoinfo[r[0]],geoinfo[r[1]]]])
    #print([geoinfo[r[0]],geoinfo[r[1]]])
    if len(objlstp) > 0:
        k3.moveadjacency(k3.k_partly, objlstp, k3.k_done, v)
 def transform_list_to_array(self, lst=[]):
     idx = len(lst)
     if idx > 0:
         self.array = k3.VarArray(idx)
         self.index = idx
         for a in zip(self.array, lst):
             a[0].value = a[1]
Exemple #5
0
def allnoteed():
    """"""
    try:
        nl = k3.fltrtype('Note')
        k3.select(k3.k_partly, k3.k_all, k3.k_done)
        n = k3.sysvar(61)
        note = Note()
        lsobj = []
        info = k3.VarArray(54)
        if n > 0:
            for i in range(int(n)):
                lsobj.append(k3.getselnum(i + 1))
            for i in lsobj:
                note.holder = i
                note.getinfo()
                #lr = sf(note)
                #note.info[19] = '(' + str(lr) + ') ' + str(note.info[12])
                #for j in range(len(note.info)):
                #info[j].value = note.info[j]
                #k3.putnoteinfo(note.holder, info)
                gi = 0
                while revisor(note) and gi < 3:
                    note.info[12] = abs(note.info[12] - 1.0)
                    for j in range(len(note.info)):
                        info[j].value = note.info[j]
                    k3.putnoteinfo(note.holder, info)
                    note.getinfo()
                    gi += 1
    except:
        nl = k3.fltrtype(0)
    finally:
        nl = k3.fltrtype(0)
 def Open(self, SQLStr):
     if isinstance(SQLStr, str):
         sSQLStr = []
         sSQLStr.append(SQLStr)
         SQLStr = sSQLStr
     self._split_stringSQL(SQLStr)
     N_str = len(SQLStr)
     isPROC = SQLStr[0].split(' ')
     is_proc = isPROC[0] == 'CREATE' and isPROC[1] == 'PROC'
     if self.IdCon > 0 and N_str > 0:
         aTEMP = k3.VarArray(N_str)
         for i in range(N_str):
             aTEMP[i].value = SQLStr[i]
         if is_proc:
             k3.adbdiagnoz(0)            
         self.idRS= k3.adbopen(self.IdCon,aTEMP,N_str)
         if is_proc:
             k3.adbdiagnoz(1)
         if is_proc:
             self.Close()
             self.idRS= k3.adbopen(self.IdCon,'SELECT * FROM '+isPROC[2])
         f1 = k3.adbmovefirst(self.idRS)
         if k3.adbiseof(self.idRS) < 1:
             l1 = k3.adbmovelast(self.idRS)
             f2 = k3.adbmovefirst(self.idRS)
         self.count = self.getRecCount()
         self.fldcount = self.getFldCount()
         self.getFldStructure()
Exemple #7
0
def start():
    global ARRGAB
    ARRGAB = k3.VarArray(6)
    global llbasis
    llbasis = []
    t = get_lbasis_allpanel()
    if t:
        dialog()
Exemple #8
0
def sf(note):
    ava = k3.VarArray(3)
    f = lambda a, b: a - b
    l = list(map(f, note.info[7:10], note.info[4:7]))
    for i, a in enumerate(l):
        ava[i].value = a
    k3.normalv(ava)
    lrev = [round(a.value, 1) for a in ava]
    return lrev
 def getStructure(self, nmbase=''):
     nm = self.str_random_name()
     if len(nmbase) == 0 :
         nmbase = self.tab_place
     n = int(k3.adblisttable(nmbase, nm)) # Получаем список таблиц базы заказа
     aTable = k3.VarArray(n, nm)
     list_table = [aTable[j].value for j in list(range(n)) ] # превращаем массив к3 в список
     self.table = list_table
     return list_table
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 Modify(self, SQLStr):
     if isinstance(SQLStr, str):
         sSQLStr = []
         sSQLStr.append(SQLStr)
         SQLStr = sSQLStr
     self._split_stringSQL(SQLStr)
     N_str = len(SQLStr)
     if self.IdCon > 0 and N_str > 0:
         aTEMP = k3.VarArray(N_str)
         for i in range(N_str):
             aTEMP[i].value = SQLStr[i]
         self.idRS= k3.adbmodify(self.IdCon,aTEMP,N_str)
         self.Close()
 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
def GetRectText(Obj):
    """Вычислить координаты в ГСК 3-х вершин прямоугольника текста в объекте выноска с примечанием Obj
    с учетом текущего и общего граф.коэффициентов.

    :param Obj: Объект выноска с примечанием

    :return: Возвращает массив к3.VarArray из 9-ти элементов:

        + Arr - массив размерности 9 задающий координаты трех точек прямоугольника в ГСК:
        + Arr[1..3] - первая задает нижний левый угол прямоугольника
        + Arr[4..6] - вторая задает верхний левый угол прямоугольника
        + Arr[7..9] - третья задает нижний правый угол прямоугольника
    """
    Arr = k3.VarArray(9)
    nEl = k3.getrecttext(Obj, Arr)
    return Arr
Exemple #14
0
 def _drill_holder(self, _drill_fabrick, Panel):
     '''Определяем отверстия принадлежащие панели'''
     keyvisible = True
     pan_holes = []
     if not bool(k3.getobjvisual(self.holder)):
         k3.visible(self.holder)
         keyvisible = False
         nPanHole = int(k3.getholes(self.holder))
         aPanHoles = k3.VarArray(nPanHole * 15, 'aPanHoles')
         k3.getholes(self.holder, 'aPanHoles')
         pan_holes = []
         gs = 0
         for i in range(int(nPanHole)):
             tmp = _drill_fabrick(gs, aPanHoles, Panel)
             pan_holes.append(tmp)
             gs = gs + 15
     if not keyvisible:
         k3.invisible(self.holder)
     return pan_holes
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
def getParamsTextK3():
    """

    :rtype : list

    :return: Возвращает список текущие параметры текста:

     #. Имя шрифта STRING
     #. Высота символа DOUBLE
     #. Отношение ширины к высоте (в процентах) DOUBLE
     #. Угол наклона шрифта (в градусах) DOUBLE
     #. Разрядка  между  символами  по  горизонтали(в процентах)DOUBLE
     #. Разрядка  между  символами  по  вертикали  (впроцентах)DOUBLE
     #. Количество строк в объекте типа «Текст» INT
     #. Содержимое первой строки текста STRING
     """
    t = k3.text('a', k3.k_done, 0, 0, 0, k3.k_normal, 0, 0, 1, 1, 0, 0)
    ainfo = k3.VarArray(8)
    err = k3.gettextinfo(t[0], ainfo)
    k3.delete(t[0], k3.k_done)
    result = [a.value for a in ainfo]
    return result
Exemple #17
0
 for var in dDecors:
     strv = ">0" if var in dPans[side] else " is null"
     lstr.append("[{}]{}".format(dDecors[var], strv))
 if Shpon: lstr.append("[Shpon]>0")
 if isMDF: lstr.append("[MDF]>0")
 if isDSP: lstr.append("[DSP]>0")
 # print(lstr)
 # print("Shpon=",Shpon,",isMDF=",isMDF,",isDSP=",isDSP)
 tmpv = " and ".join(lstr)
 nG = k3.npgetbywhere(2, tmpv, "ARR")
 if nG > 0:
     if nG > 1:
         print(
             "ВНИМАНИЕ: {} -> Кол-во найденных доступных записей вариаций отделок"
             .format(nG))
     aK3 = k3.VarArray(int(nG), 'ARR')
     # Должна находиться одна, но на всякий
     for i in aK3:
         IDGood = int(i.value)
         mName = PropInfo(IDGood, "NAME", 2, "")
     # Для шпона сверка на соответствие материала
     if Shpon:
         # print("IDGood=",IDGood)
         nG = k3.priceinfo(IDGood, 'ListMat', "", 2,
                           "tA")
         # print(nG)
         tAK3 = k3.VarArray(2 * int(nG), 'tA')
         # print(tAK3)
         if k3.findinarray(tAK3, pid, 1, nG) == 0:
             KeyMenu = menu_append(
                 PropInfo(priceid, "MATNAME", 1, "") +
Exemple #18
0
def putcutrex(Panel=0, Pat=None, CutType=1, Dept=0, Map=5, ShiftX=0, ShiftY=0, Ang=0):
    """
    
    #-- Добавить вырез на панель с параметрами положения
    
    #-- Входные параметры:
    
    #-- Panel - объект "Панель"
    #--         или 0 - если панель не надо инициализировать
    
    #-- Pat - объект "Контур выреза"
    
    *-- CutType - тип выреза:
    
    *--           0 - линия маркировки
    
    *--           1 - вырез
    
    *--           8 - нарост
    
    *--           2 - симметрия относительно оси X
    
    *--           4 - симметрия относительно оси Y)
    
    #-- Dept - глубина выреза:
    
    #--           0 - если вырез сквозной
    
    #--           > 0 - не сквозной со стороны пласти A
    
    #--           < 0 - не сквозной со стороны пласти F
    
    #-- Map - секция раскрашивания
    
    #-- Параметры положения:
    
    #-- ShiftX - сдвиг вдольоси Х
    
    #-- ShiftY - сдвиг вдольоси Y
    
    #-- Ang - угол поворота
    
    #-- Зачастую приходится добавлять по многу вырезов в панель. Если при этом
    #-- перестраивать панель после каждого выреза, то получится очень долго
    #-- Поэтому инициализируем панель в вызывающем макросе и там же ее перестраиваем.
    #-- А вырезы добавляем здесь.
    
>>> 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 )    
    
    """
    ifVar = lambda v: v.value if isinstance(v, k3.Var) else v
    (Panel, Pat, CutType, Dept, Map, ShiftX, ShiftY, Ang) = map(ifVar, (Panel, Pat, CutType, Dept, Map, ShiftX, ShiftY, Ang))
    str_err = ("Неожиданная ошибка:", sys.exc_info()[0])
    try:
        arr = k3.VarArray(24)
        #-- Если панель задана, то ее инициализируем.
        if isinstance(Panel,k3.Group ):
            arr[0].value=Panel
            if k3.getpan6par(1,arr) == -1.0:
                str_err = ('Ошибка! Несмогли инициализировать мебельную панель!')
                raise TypeError()
        
        if Pat is None:
            str_err = ('Контур выреза неопределен!')
            raise TypeError()
        
        ty_pat = k3.getobjtype(Pat)
        if ty_pat == 5 :
            #-- Контур, превращаем в полилинию
            Pat = k3.pline( k3.k_path, Pat)[0]
        elif ty_pat == -12 :
            #-- полилиния
            pass
        else:
            str_err = ('Ошибка! [%i] Недопустимый тип контура выреза! Допустимы замкнутые контур или полилиния [5] [-12]' %ty_pat)
            raise TypeError()
            
        #-- Параметры формы выреза
        k3.initarray(arr,0)
        arr[0].value=CutType #-- Тип выреза
        arr[1].value=1       #-- Форма выреза
        arr[2].value=Pat     #-- Полилиния
        k3.setpan6par(7,arr)
        #-- Параметры положения выреза
        k3.initarray(arr,0)
        arr[0].value=9    #-- Привязка выреза к одному из торцев (1,3,5,7) или свободная привязка (9)
        arr[1].value=ShiftX#-- Если привязка к торцу, то сдвиг вдоль торца, иначе - абсолютная координата X в ЛСК панели
        arr[2].value=ShiftY  #-- Если привязка к торцу, то сдвиг вглубь панели, иначе - абсолютная координата Y в ЛСК панели
        arr[3].value=Ang    #-- Угол поворота выреза в градусах
        arr[4].value=Dept  #-- Глубина выреза: 0, если вырез сквозной > 0 - не сквозной со стороны пласти A < 0 - не сквозной со стороны пласти F
        
        k3.setpan6par(8,arr)
        arr[0].value=Map     #-- Секция раскрашивания
        g_OutPar = k3.GlobalVar('g_OutPar')
        g_OutPar.value=k3.setpan6par(9,arr)  #-- Добавить вырез, параметры которого определены кодами 7 и 8

    except TypeError:
        print(str_err)
    except:
        print(str_err)    
    def get_raster_domain(self):
        try:
            a = k3.VarArray(10)
            n = k3.sysvar(60)
            delta_raster_k = 300
            result = False
            nnn = k3.getsnap()
            for i in range(2):
                a[0].value = (i + 1) * delta_raster_k  # Размер растра
                a[1].value = self.handle  # Объект
                a[2].value = 5  # глубина расчета

                k3.setucs(k3.k_vcs)
                self.raster_procent = k3.rasterdomain(1, a) # Процент видимости
                # print('Процент видимости =', self.raster_procent)
                if self.raster_procent > 0:
                    a[0].value = 2  #
                    self.num_pixeles_in_zone_visible = k3.rasterdomain(3, a)  # узнать число пикселей внутри зоны видимости с расстоянием от границы больше равному  a[0]
                    # print('число пикселей внутри зоны видимости =', self.num_pixeles_in_zone_visible)
                    if self.num_pixeles_in_zone_visible > 0:
                        for j in range(10):
                            a[0].value = 10-j  # расстояние от границы в пикселях
                            # print('расстояние от границы в пикселях  ',a[0].value)
                            a[1].value = 0  # 1-В гск 0-вск
                            a[2].value = 1  # 1 - только граница 0 - все
                            lpoint = []
                            while k3.rasterdomain(4, a) > 0:  # Получить очередную видимую точку
                                lpoint.append(Based_point_label(a[3].value, a[4].value, a[5].value))
                            if len(lpoint) > 3:
                                s = [i for i in range(0, len(lpoint), int(len(lpoint)/3))]
                                for i in s:
                                    self.lpoint.append(lpoint[i])
                            else:
                                self.lpoint = lpoint
                            if len(lpoint)>0:
                                self.visible = True
                                break
                        break
                    else:
                        pass
                    nv = k3.rasterdomain(2, a)
                    # print("---- Попытка ------- ", i)
                    self.keyzoom = True
                    self.fo_zoom()

                else:
                    if self.keyzoom:
                        print('Панель невидна, выходим.')
                        self.visible = False
                        break
                    else:
                        self.keyzoom = True
                        self.fo_zoom()
                nv = k3.rasterdomain(2, a)  #
            self.fo_zoom()
            nnn = k3.resnap()

        except:
            self.fo_zoom()
            nnn = k3.resnap()
            nv = k3.rasterdomain(2, a)  #
 def _array(self, n):
     '''Возвращает VarArray в n элементов'''
     return k3.VarArray(n)
 def getNameLayersAll(self):
     '''Возвращает кортеж список имен слоев и их состояний Вкл/Выкл '''
     arrname, arrprop = k3.VarArray(self.countLayers()), k3.VarArray(self.countLayers())
     result = k3.namelayers(arrname, arrprop)
     return ([a.value for a in arrname], [i.value for i in arrprop])
Exemple #22
0
#
# Author:      Aleksandr Dragunkin
#
# Created:     16.06.2015
# Copyright:   (c) GEOS 2012-15
# Licence:     FREE
#-------------------------------------------------------------------------------
# import wingdbstub
import k3
from DrawingSupp import GetListAllPanel

if 'ARRGAB' in globals():
    del (ARRGAB)
if 'llbasis' in globals():
    del (llbasis)
ARRGAB = k3.VarArray(6)
llbasis = []


def get_list_panel():
    """Возвращает список всех панелей сцены"""
    return [a for a in GetListAllPanel()]


def get_basis_lsc(p):
    """Возвращает результат проверки левого базиса панели"""
    try:
        cp = k3.getattr(p, 'commonpos', 0)
        k3.getsnap()
        k3.setucs(k3.k_lcs, k3.k_partly, p)
        k3.initarray(ARRGAB, 0)
    def __init__(self, e):
        self.unxcentr = None
        self.unycentr = None
        self.unradius = None
        self.unorient = None
        self.unstangle = None
        self.unendangle = None
        self.unrstagle = None
        self.xmax = None
        self.ymax = None
        self.xmin = None
        self.ymin = None

        if e.__class__.__name__ == 'ElemsInfo':
            if e.TypeElem == 2:
                arr = VarArray()
                un = self.add_unobj(arr,
                                    typeun=2,
                                    lst=[
                                        e.GeoInfo[0], e.GeoInfo[1],
                                        e.GeoInfo[6], e.GeoInfo[7],
                                        e.GeoInfo[3], e.GeoInfo[4]
                                    ])
                rs = k3.getacunobj2d(un, arr.array)
                if rs > 0:
                    self.unxcentr = arr.array[0].value
                    self.unycentr = arr.array[1].value
                    self.unradius = arr.array[2].value
                    self.unorient = arr.array[3].value
                    self.unstangle = self.norm_angle(arr.array[4].value)

                    self.unrstagle = 2 * k3.asin(
                        k3.sqrt((e.GeoInfo[6] - e.GeoInfo[0])**2 +
                                (e.GeoInfo[7] - e.GeoInfo[1])**2) /
                        (round(self.unradius, 2) * 2))
                    self.unendangle = self.norm_angle(
                        arr.array[4].value +
                        self.unrstagle)  #arr.array[5].value
                    # Угол раствора меньше Pi/2
                    qst = self.getnumqadrant(self.unstangle)
                    qend = self.getnumqadrant(self.unendangle)
                    qrst = self.getnumqadrant(self.unrstagle)

                    unx = self.add_unobj(
                        arr,
                        typeun=1,
                        lst=[
                            self.unxcentr - 1.2 * self.unradius, self.unycentr,
                            self.unxcentr + 1.2 * self.unradius, self.unycentr
                        ])
                    uny = self.add_unobj(
                        arr,
                        typeun=1,
                        lst=[
                            self.unxcentr, self.unycentr - 1.2 * self.unradius,
                            self.unxcentr, self.unycentr + 1.2 * self.unradius
                        ])
                    nm1 = str_random_name()
                    nm2 = str_random_name()
                    res1 = k3.interunobj2d(un, 1, unx, 1, nm1)
                    res2 = k3.interunobj2d(un, 1, uny, 1, nm2)
                    arr1, arr2 = k3.VarArray(4, nm1), k3.VarArray(4, nm2)

                    lstx = [e.GeoInfo[0], e.GeoInfo[6]]
                    if res1 > 0:
                        n1 = int(k3.getdimarray(arr1))
                        arr1 = k3.VarArray(n1, nm1)
                        lstx.append(arr1[0].value)
                        if n1 > 2:
                            lstx.append(arr1[2].value)
                    lstx.sort()

                    lsty = [e.GeoInfo[1], e.GeoInfo[7]]
                    if res1 > 0:
                        n2 = int(k3.getdimarray(arr2))
                        arr2 = k3.VarArray(n2, nm2)
                        lsty.append(arr2[1].value)
                        if n2 > 2:
                            lsty.append(arr2[3].value)
                    lsty.sort()
                    k3.freeunobj2d(unx)
                    k3.freeunobj2d(uny)
                    self.xmax = lstx[-1]
                    self.ymax = lsty[-1]
                    self.xmin = lstx[0]
                    self.ymin = lsty[0]
                    self.length = self.unradius * self.unrstagle
                k3.freeunobj2d(un)
Exemple #24
0
Panel.panelInit(pan)
Panel.getPanelProperty(pan)
Panel.getPanelPathInfo(pan)
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'}
    # 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(
    "Фасад сплошной",
 def __init__(self, Size=1, Name=None):
     size = Size if type(Size) == int else int(Size)
     self.array = k3.VarArray(size)
     self.index = 0
# -*- 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 #28
0
# -*- coding: cp1251 -*-
import k3
import uuid
# str(uuid.uuid4())
# import wingdbstub

params = k3.getpar()

LayName='OrderUUID'
countr=int(k3.countlayers())

arrname = k3.VarArray(countr,'Lay')
arrprop = k3.VarArray(countr,'OnOff')
result = k3.namelayers(arrname, arrprop)

KeyOnLay = False

for i in range(countr):
    if arrname[i].value == LayName:
        #print LayName
        KeyOnLay = True
        if arrprop[i].value==1:
            k3.layers(k3.k_on, LayName)
            break

if KeyOnLay == False:           
    k3.layers(k3.k_new, LayName)
    k3.layers(k3.k_on, LayName)

lObj = {}
k3.selbyattr('Posit==999',k3.k_partly,k3.k_all,k3.k_done)
                    if ScrNum>0:
                        i += 1
                        PriceID = k3.getattr(elem.value,'PriceID',0)
                        NameElemTmp[i] = k3.getattr(elem.value,'ElemName',"")
                        #lArr1.append(PriceID) # добавляем в массив
                        Name = k3.getattr(elem.value,'ElemName','не удалось прочитать')
                        # k3.putmsg(Name)
                        
                        # print "i=",i
                        ParG[i] = []
                        
                        num=k3.cntgroupscr(ScrNum)
                        # print('num=',num)
                        j = 0
                        if num>0:
                            Arr = k3.VarArray(int(num))
                            k3.namegroupscr(ScrNum,Arr);

                            for ParGroup in Arr:
                                j += 1
                                # print "j=",j
                                
                                Cost.value = 0
                                Size.value = 0
                                SumCostMat.value = 0
                                Curline.value = '-'
                                #NomID.value = 0
                                MatName.value = Name

                                numpar=k3.cntvarscr(ScrNum,ParGroup)