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]
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()
def start(): global ARRGAB ARRGAB = k3.VarArray(6) global llbasis llbasis = [] t = get_lbasis_allpanel() if t: dialog()
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
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
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, "") +
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])
# # 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)
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)
# -*- 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)