Exemplo n.º 1
0
def dialog():
    vFailColor = k3.Var()
    k3.getvarinst(2, "FailColor", vFailColor, 12)
    FailColor = vFailColor.value
    k3.select(k3.k_stayblink, k3.k_partly, llbasis, k3.k_done)
    ok_flag = k3.alternative(
        "Поиск панелей с левой базой", k3.k_msgbox, k3.k_picture, 1, k3.k_beep,
        1, k3.k_text, k3.k_left, "Панели с левой базой выделены мерцанием", "",
        "Отключить мерцание найденных объектов?", k3.k_done, "Да", "Нет",
        "Изменить цвет", k3.k_done)
    if (ok_flag[0] == 1):
        k3.select(k3.k_all, k3.k_done)
    elif (ok_flag[0] == 3):
        k3.chprop(k3.k_color, k3.k_partly, k3.k_previous, k3.k_done, FailColor)
Exemplo n.º 2
0
def Central(xc1, yc1, zc1, xc2, yc2, zc2):
    '''-- Процедура построения осевой линии
     //-- Входные параметры:
     //-- xc1, yc1, zc1, xc2, yc2, zc2 - координаты концов линии
     //-- colcen - цвет линии
     '''
    userproperty = Userproperty()
    from DrawingSupp import Drawing
    drawing = Drawing()
    if (xc1, yc1, zc1) != (xc2, yc2, zc2) and (
        (xc1, yc1, zc1) not in drawing.gab and
        (xc2, yc2, zc2) not in drawing.gab):
        lineObj = k3.line(xc1, yc1, zc1, xc2, yc2, zc2, k3.k_done)[0]
        if userproperty.colorCentralLine is not None:
            k3.chprop(k3.k_color, k3.k_last, 1, k3.k_done,
                      userproperty.colorCentralLine)
        #k3.chprop(k3.k_lwidth,k3.k_last,1,k33.k_done,TilOs)
        k3.chprop(k3.k_ltype, k3.k_last, 1, k3.k_done, 5)
        #k3.chprop(k3.k_grfcoeff,k3.k_last,1,k3.k_done,1)
        return lineObj
    else:
        return None
Exemplo n.º 3
0
def start_scene_raster():
    start_time = time.time()
    s = Scene(fun=GetListAllPanel)
    s.draw_rectangle_scene()
    print('Число панелей = ', len(s.lstobj))
    l_commonpos=[]
    list_not_vis = []
    list_vis = []
    objects_scene = [Object_scene(obj,l_commonpos) for obj in s.lstobj]
    for obj in objects_scene:
        if ((not obj.raster.visible)
                and not (obj.commonpos in list_vis)
                and not (obj.commonpos in list_not_vis)):
            list_not_vis.append(obj.commonpos)
        elif obj.raster.visible:
            if not (obj.commonpos in list_vis):
                list_vis.append(obj.commonpos)
                if obj.commonpos in list_not_vis:
                    list_not_vis.remove(obj.commonpos)
    s.list_not_vis=list_not_vis
    s.list_vis=list_vis
    # Сначала надо взять те у которых меньше всего точек
    # Сортируем по возрастанию obj.raster_procent при условии , что в obj.lpoint есть хотя бы одна точка
    key_fun = lambda v: len(v.raster.lpoint) if v.raster.raster_procent>0 else -1
    sqr_fun = lambda v1, v2: (v1 - v2) ** 2
    sqrt_fun = lambda a, b: k3.sqrt(sum(map(sqr_fun, a, b)))
    objects_scene.sort(key=key_fun)

    while objects_scene[0].raster.raster_procent<0:
            objects_scene.pop(0)
    for obj in objects_scene:
        # Ищем положение точек
        # Найти ближайшую
        psn = None
        for iv, v in enumerate(obj.raster.lpoint):
            for ipb, pb in enumerate(s.based_label.childobjects):
                #ps=k3.distance(v.basedpoint, pb.basedpoint)
                ps = sqrt_fun(v.basedpoint, pb.basedpoint)
                if psn is None:
                    psn = ps
                elif ps < psn:
                    obj.ds = (ps, iv, ipb, s.based_label.childobjects[ipb])
                    psn = ps
        try:
            if len(obj.ds) > 0:
                s.based_label.childobjects.pop(obj.ds[2])
                # print(obj.ds, objects_scene.index(obj), len(objects_scene))
        except:
            pass
    end_time = time.time() - start_time
    print(str(datetime.timedelta(seconds=end_time)))
    k3.getsnap()
    ffun = lambda v1, v2: v2 - v1
    k3.setucs(k3.k_vcs)
    for obj in objects_scene:
        try:
            if obj.raster.visible:
                tp = [list(obj.raster.lpoint[obj.ds[1]].basedpoint), list(obj.ds[3].basedpoint)]
                tp[0][2] = max(tp[0][2], tp[1][2])
                tp[1][2] = tp[0][2]
                dd = list(map(ffun, tp[0], tp[1]))
                dx_2 = -1 if dd[0] < 0 else + 1
                #k3.line(tp)
                #n =  Note(Text1=str(obj.commonpos))
                note = Note(normal=(0, 0, 1), Text1= str(delZero(round(obj.commonpos, 1))), Text2="",
                                        point1=tp[0], relativ1=dd, relativ2=(dx_2, 0, 0))
                note.flip=False
                note.draw()
                nmac='\\complexlabeldraw\\complexlabel.py'
                CurrVi = int(k3.sysvar(51))
                CV = "VidDim_"+str(CurrVi)
                k3.attrobj( k3.k_attach,  "AutoPlace",  k3.k_done, note.holder, 1)
                k3.attrobj( k3.k_attach,  "VidDimPlace",  k3.k_done, note.holder, CurrVi)
                if obj.karkasnumb!=-1 :
                    k3.attrobj( k3.k_attach, "KarkasNumb", k3.k_done, note.holder, obj.karkasnumb)
                k3.chprop( k3.k_layer, note.holder,k3.k_done, CV)
                k3.attrobj( k3.k_attach, "NumType", "NumHolder", "NmMacNums", "FT_Holder", k3.k_done, note.holder, 1, obj.unicid, nmac, obj.ft)
                s.l_note.append(note)
        except:
            print("Ошибка данных:", sys.exc_info()[0])
    k3.resnap()
    return s
Exemplo n.º 4
0
 def Change(self, obj, Name):
     '''Изменяет слой объекта <obj>'''
     self.New(Name)
     k3.chprop(k3.k_layer, obj, k3.k_done, Name)
Exemplo n.º 5
0
        #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)
n = int(k3.sysvar(61))
print(n)

if n == 0:
    bx = k3.box(0,0,0,10,10,10)
    GUID = str(uuid.uuid4())
    k3.attrobj(k3.k_attach, 'ElemName', k3.k_done, k3.k_partly, bx, GUID)
    k3.attrobj(k3.k_attach, 'Posit', k3.k_done, k3.k_partly, bx, 999)
    k3.chprop(k3.k_layer, k3.k_partly, bx, k3.k_done, LayName)
    bx = bx[0] # k3.box возвращает tuple
    
if n > 0:
    bx = k3.getselnum(1)
    GUID = k3.getattr(bx,"ElemName",'')

k3.layers(k3.k_off, LayName) 

params[0].value = GUID
params[1].value = bx
Exemplo n.º 6
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
Exemplo n.º 7
0
                                "Данная вариация отсутствует в списке допустимых"
                            )

                        if KeyMenu:
                            if Shpon: type = "ШПОН"
                            if isMDF: type = "МДФ"
                            if isDSP: type = "ДСП"

                            vFailColor = k3.Var()
                            k3.getvarinst(2, "FailColor", vFailColor, 12)
                            FailColor = vFailColor.value
                            k3.select(k3.k_stayblink, k3.k_partly, obj,
                                      k3.k_done)
                            ok_flag = k3.alternative(
                                "Предупреждение", k3.k_msgbox, k3.k_picture, 1,
                                k3.k_beep, 1, k3.k_text, k3.k_left,
                                "Панель выделена мерцанием",
                                "Тип проверки: " + type,
                                "У выделенной панели на пласти <'{}'> назначены группы:"
                                .format(side), ', '.join(
                                    map(lambda x: nGroups[x],
                                        dPans[side])), "", ', '.join(lMenu),
                                "", "Отключить мерцание найденных объектов?",
                                k3.k_done, "Да", "Нет", "Изменить цвет",
                                k3.k_done)
                            if (ok_flag[0] == 1):
                                k3.select(k3.k_all, k3.k_done)
                            elif (ok_flag[0] == 3):
                                k3.chprop(k3.k_color, k3.k_partly,
                                          k3.k_previous, k3.k_done, FailColor)