예제 #1
0
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
예제 #2
0
 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
예제 #3
0
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
예제 #4
0
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)
예제 #5
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])