def Drilling(self, d): '''Сверловка. Пласти и торцы. Заполняем списки структурами для пластей и торцев''' if (self.Selobj == 0): # Если это не выбранная панель, то не фиг ее обрабатывать return self.drills.append(d) Side=Utiles.GetDrillPlane(d) if (Side=="F"): self.isBlindHoleF=True return
def writerDrillingCommand(self, drillTuple): '''Подоготавливает к выводу отверстия drillTuple - список отверстий в данной панели''' for d in drillTuple: SideS=Utiles.GetDrillPlane(d) SideNum=self.GetBiesseSideNum(SideS) if (SideNum<0 or SideNum==5): # Если сторона не определена,или это стороны F, отверстие не выводим continue self.writer.DrillingCommand(drillTuple.index(d),d) return
def DrillingCommand(self, num, drill): '''Вывод информации об отверстии в файл num - порядковый номер отверстия drill - отверстие ''' # x,y,z - координаты отверстия в системе координат панели x=drill.position.x y=drill.position.y z=drill.position.z # d, h - диаметр и глубина отверстия, соответтсвенно d=drill.diameter h=drill.depth # alpha - угол между Ox и проекцией направляющей на Oxy (угол отверстия в проекции пласти панели) alpha=drill.alfa # beta - угол между Oz и направляющей (угол оси отверстия к пласти панели) beta=drill.beta thicknessPanel=drill.panel.thickness ## Здесь задаем координаты в зависимости от стороны панели b=Boa() side=Utiles.GetDrillPlane(drill) siden=b.GetBiesseSideNum(side) bb = drill.panel.bounding_box Xpanel=bb.max.x-bb.min.x Ypanel=bb.max.y-bb.min.y crn=4 thr=0 if (siden==0): crn=4 if (h>=thicknessPanel): thr=1 if (siden==5): # Типа, низовой сверзовки нет crn=1 if (siden==1): crn=2 x=y y=z if (siden==2): crn=4 y=z if (siden==3): crn=3 x=y y=z if (siden==4): crn=1 y=z z=0 self._Drill(x,y,z,siden,h,d,crn,thr) return
def EndPanel(self): '''Функция вызывается в конце обработки каждой панели''' if (self.Selobj == 0): # Если это не выбранная панель, то не фиг ее обрабатывать return b = self.panel.bounding_box Ypanel=b.max.y-b.min.y Xpanel=b.max.x-b.min.x # Если необходимо, проверка на габариты # Utiles.CheckGabs(self,panel,xmin,xmax,ymin,ymax,zmin,zmax) # Запоминаем пропилы и отверстия. Они нам потребуются #slotsave=self.slots drillsave=self.drills self.writeOutputFile('_AE') # Создаем файл вывода и пишем в него накопленную информацию. ## Если есть пропилы вдоль Y по стороне A, поворачиваем панель if (self.isSlotsAY==True): # Поворачиваем относительно правого дальнего угла self.panel.Rotate(vpi/2,machine.Point2d(0,Ypanel)) b = self.panel.bounding_box Xpanel,Ypanel=Ypanel,Xpanel self.panel.Translate(machine.Vector2d(-b.min.x,-b.min.y)) self.panelWidth = self.panel.panel_length self.panelLength = self.panel.panel_width self.workingsides=[] self.workingsides.append(1) # Убираем фрезеровки self.millingTech=[] self.writeOutputFile("_AC") # Возвращаем поворот взад self.panel.Translate(machine.Vector2d(b.min.x,b.min.y)) self.panel.Rotate(-vpi/2,machine.Point2d(0,Xpanel)) Xpanel,Ypanel=Ypanel,Xpanel self.panelWidth = self.panel.panel_width self.panelLength = self.panel.panel_length # Если есть глухие отверстия или пропилы с обратной стороны, надо еще перевернуть панель if (self.isBlindHoleF==True or self.isSlotsFX==True or self.isSlotsFY== True): drlist=[] # Удаляем все отверстия, кроме глухих по F for d in self.drills: if (Utiles.GetDrillPlane(d)=="F"): drlist.append(d) self.drills=drlist # Убираем фрезеровки self.millingTech=[] # Переворачиваем относительно оси X b = self.panel.bounding_box self.panel.Overturn(0) self.panel.Rotate(-vpi,machine.Point2d(0,Xpanel)) self.panel.Translate(machine.Vector2d(Xpanel-b.min.x,0)) if (self.isBlindHoleF==True or self.isSlotsFX==True): self.writeOutputFile("_FD") ## B последнее - пропилы по F вдоль Y if (self.isSlotsFY==True): # Поворачиваем относительно правого дальнего угла self.panel.Rotate(vpi/2,machine.Point2d(0,Ypanel)) Xpanel,Ypanel=Ypanel,Xpanel b = self.panel.bounding_box self.panel.Translate(machine.Vector2d(-b.min.x,-b.min.y)) self.panelWidth = self.panel.panel_length self.panelLength = self.panel.panel_width self.writeOutputFile("_FC") return