Ресурсы Vericut.

 

Тип  Unigraphics  Формулы построения в Vericut
Параметры:  type=2 subtype=0
UF_CUTTER_TYPE_DRILL
/*
UF_CUTTER_SUBTYPE_DRILL_STD
UF_CUTTER_SUBTYPE_DRILL_CENTER_BELL
UF_CUTTER_SUBTYPE_DRILL_COUNTERSINK
UF_CUTTER_SUBTYPE_DRILL_SPOT_FACE
UF_CUTTER_SUBTYPE_DRILL_SPOT_DRILL
UF_CUTTER_SUBTYPE_DRILL_BORE
UF_CUTTER_SUBTYPE_DRILL_REAM
UF_CUTTER_SUBTYPE_DRILL_COUNTERBORE
UF_CUTTER_SUBTYPE_DRILL_TAP
UF_CUTTER_SUBTYPE_DRILL_THREAD_MILL
UF_CUTTER_SUBTYPE_DRILL_STEP
*/

 

   FLUTE_LENGTH  FL
   SHANK_DIAMETER 0
   ASSEMBLY {
      CUTTER_TYPE "DRILL"
      STANDARD ( D, 0, 0, 0, (90-PA°/2) , 0 , L )
   }

 

Параметры:  type=1 subtype=1
UF_CUTTER_TYPE_MILL

Параметры: type=1 subtype=4
UF_CUTTER_SUBTYPE_MILL_BALL

Если A≠0 или  B≠0  описываем инструмент как UF_CUTTER_SUBTYPE_MILL_7 (APT7) - см ниже.

Если R1==0 B==0 A==0 - создаем "Flat Bottom End Mill

 FLUTE_LENGTH  FL
 SHANK_DIAMETER 0
 ASSEMBLY {
    CUTTER_TYPE "FLAT END"
    STANDARD ( D, 0, 0 , 0 , 0 , 0 , L )
  }

 Если D==2*R1 B==0 A==0 - создаем "BALL END"

  FLUTE_LENGTH  FL
  SHANK_DIAMETER 0
  ASSEMBLY {
    CUTTER_TYPE "BALL END"
     STANDARD ( D , r1 ,
0 , r1 , 0 , 0 , L )
  }

 Если R10 B=0 A=0 - создаем "Bull Nose End Mill"

  FLUTE_LENGTH  FL
  SHANK_DIAMETER 0
  ASSEMBLY {
    CUTTER_TYPE "BULL NOSE"
      STANDARD ( D, r1 ,
D/2-r1 , r1 , 0 , 0 , L )
  }

Параметры:  type=1 subtype=2
UF_CUTTER_TYPE_MILL
UF_CUTTER_SUBTYPE_MILL_7

 FLUTE_LENGTH  FL
 SHANK_DIAMETER 0
   ASSEMBLY {
      STANDARD ( D, r1 , x1 , y1 , A , B , L )
  }

 

Параметры:  type=1 subtype=3
UF_CUTTER_TYPE_MILL
UF_CUTTER_SUBTYPE_MILL_10

  FLUTE_LENGTH  FL
  SHANK_DIAMETER  0
  ASSEMBLY {
    CUTTER_TYPE "APT 10"
    STANDARD ( D, r1, x1, y1, A , B , L , r2 , x2 , y2 )
  }
 

Параметры: type=8 subtype=0
UF_CUTTER_TYPE_T

 необходимо строить по точкам.


Параметры: type=7 subtype=0
UF_CUTTER_TYPE_BARREL

 необходимо строить по точкам


 Алгоритм построения (для тех, кто хочет разобраться предстоит посидеть как  рассчитывал, схему я набросал ):

/*xc - центр большой окружности - R*/
xc=D/2-R;

Если r1==0 , то строим точки {
     (0,0) (D/2-(R-sqrt(R*R-Y*Y)),0)
} иначе {
      /*x01 - центр нижней окружности = x0p1 - точке пересечения нижн окр и y=0*/
      x01=sqrt((R-r1)*(R-r1)-(r1-Y)*(r1-Y));
      if (R>=r1) {
          x0p1=xc+x01;
      } else {
          x0p1=xc-x01;
      }
      /* ( x01p2, y01p2 ) - пересечение нижней окружности с R*/
      y01p2=Y-((Y-r1)/(R-r1))*R;
      x01p2=x0p1+r1*cos(asin((Y-y01p2)/R));
     
       PTS (0,0) (x0p1,0)
      ARC (x0p1,r1,r1)
      PTS (x01p2,y01p2)

}

Если r2==0 , то строим точки {
      ARC (xc,Y,R)
      PTS (D/2-(R-sqrt(R*R-(FL-Y)*(FL-Y))),FL)
} иначе {

       /* x02p2,y02p2 - центр окружности верхней окружности */
       y02p2=FL-r2;
       x02p2=sqrt((R-r2)*(R-r2)-(y02p2-Y)*(y02p2-Y));
       if (R>=r2) {
            x02p2=xc+x02p2;
       } else {
            x02p2=xc-x02p2;
       }
       /* x03p3,y03p3 - верхней окружности с R пересечения верх окр и y=FL*/
       y03p3=Y+((y02p2-Y)/(R-r2))*R;
       x03p3=x02p2+r2*cos(arcsin((y03p3-Y)/R));
      
        ARC (xc,Y,R)
        PTS (x03p3,y03p3)
        ARC (x02p2,y02p2,r2)
        PTS (x02p2,FL)
       
}

// строим shank
if (SD!=0) {
     PTS (SD/2,FL) (SD/2,L)
}
   PTS  (0,L)
 

 

Copyright © 2001—2009 че

Hosted by uCoz