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) k3.selbyattr('FurnType==\"010000\"', k3.k_child, p) ps = k3.getselnum(1) k3.objgab3(ps, ARRGAB) h_difference = lambda v1, v2: (max(v1, v2) - min(v1, v2)) / 2.0 + min( v1, v2) log_minus = lambda v: v < 0 agab = [a.value for a in ARRGAB] lpcen = list(map(h_difference, agab[:3], agab[3:])) result = True in map(log_minus, lpcen) if result: k3.putmsg(str(cp) + ' Это номер с левой базой', 0) llbasis.append(p) k3.resnap() except: result = False k3.putmsg(str(cp) + ' Это номер скорее всего погашен.') return result
def adbCon(self, tab_place): '''Создает подключение к базе данных MS ACCESS tab_place - полный путь к базе данных или 2 <NGuides.mdb>, 3<M73Main.mdb> index - внутренний индекс соединения ''' try: if str(tab_place).isdigit(): if tab_place in [2, 3]: szSrc = int(tab_place) if tab_place == 2: ind = k3.adbcon(3) sqlstr = """SELECT CorePaths.Path FROM CorePaths WHERE (((CorePaths.Name)='Proto'));""" indrs = k3.adbopen(ind, sqlstr) self.tab_place = k3.adbgetvalue(indrs, 0, '0') indrs = k3.adbclose(indrs) result = k3.adbdiscon(ind) elif tab_place == 3: self.tab_place = k3.mpathexpand('<commonappdata>') + '\\M73Main.mdb' else: szSrc="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+tab_place self.tab_place = tab_place self.index = k3.adbcon(szSrc) except : if (k3.fileexist(str(tab_place))==0): k3.putmsg("База по адресу "+str(tab_place)+" не обнаружена",0) return self.index
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 ref_pictures(subname, nm_file, j_name): if subname in nm_file: abs_ph = k3.sysvar(2).split('\\' + subname + '\\')[0] + j_name abs_nm = k3.sysvar(2).split('\\' + subname + '\\')[-1].split('.')[:-1][0] full_nm = abs_ph + abs_nm + ".jpg" if k3.fileexist(full_nm) > 0: k3.removefile(full_nm) e = k3.exp2d(k3.k_jpeg, k3.k_mono, k3.k_inscribe, k3.k_yes, k3.k_vport, 3, k3.k_size, 2500, 1500, k3.k_continue, full_nm, k3.k_overwrite) else: k3.putmsg( 'Ошибка размещения файла! Доступно только для файлов чертежей в папке ' + subname, 0)
def FindProjectsFolder(self): self.projectFolder = '' D = self.LoaderPickle() if len(D) > 0: if os.path.exists(D[0]): lf = getsubs(D[0]) if len(lf[0]) > 0: self.projectFolder = D[0] if len(self.projectFolder) < 5: listdirs = getsubdirs(self.USERPROFILE) for l in listdirs: if '\Blum\Dynaplan\Kommissionen\Pool' in l: index = l.find('\Blum\Dynaplan\Kommissionen\Pool') self.projectFolder = l[:index] + '\Blum\Dynaplan\Kommissionen\Pool\\' key = False break if len(self.projectFolder) < 5: k3.putmsg( str('Отсутствует дирректория ..\Blum\Dynaplan\Kommissionen\Pool\\' ), 0) else: self.DumperPickle([self.projectFolder])