Ejemplo n.º 1
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)    
Ejemplo n.º 2
0
def _ProtoPath():
    '''Возвращает значение глобальной переменной ProtoPath'''
    return k3.GlobalVar('ProtoPath').value
def CheckVar(NameVar, ir):

    return (str(int(k3.GlobalVar(NameVar + str(ir)).value))
            if k3.isvardef(NameVar + str(ir)) > 0 else "0")
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)
lNfasad = list(range(gs_Nfasad))
lNfasad.reverse()
aDecor = k3.VarArray(n_scrFas * gs_Nfasad)
fDecor = k3.VarArray(n_scrFas * gs_Nfasad)
listtst = []
for ir in lNfasad:
    listtst.append((
        k3.k_logical,
def getscrparam(s, m, i):
    si = str(int(i)) if i > 0 else ''
    v = k3.GlobalVar(s + si).value
    vm = k3.GlobalVar(m + si).value
    return str(v) + "#" + str(int(vm)) if vm > 10 else ''
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 '')
Ejemplo n.º 7
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