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 _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 '')
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