Beispiel #1
0
 def Drilling(self, d):
   '''Сверловка. Пласти и торцы. Заполняем списки структурами для пластей и торцев'''
   if (self.Selobj == 0):  # Если это не выбранная панель, то не фиг ее обрабатывать
     return
   self.drills.append(d)
   Side=Utiles.GetDrillPlane(d)
   if (Side=="F"):
     self.isBlindHoleF=True
   return
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
    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