xingyue* 发表于 2016-12-29 08:40:26

PM2016宏应用之二:生成垂直面等高边界

本帖最后由 xingyue 于 2016-12-29 09:57 编辑

PM加工垂直面是一个很郁闷的事情,不过在很多前辈的努力下,发现了找到了很多种方法!这里我介绍一种,是用宏写出来的!
下面是我运行宏产生边界的过程!后面当然有宏的源码,希望大家多多指教!一、选择要生成边界的垂直面,也可以是陡峭面,但是不能为倒扣面;

二、运行宏;

三、输入余量。径向余量和轴向余量用空格隔开,单独输入一个数字,而不使用空格。默认为关闭轴向余量;

四、输入底部偏置的距离;

五、选择刀具!

六、宏可以计算……这是计算后的边界;

七、这是等高的效果!等高的刀具是你一开始选择的刀具,余量也是你设置的余量!



OK!不多废话了!下面是源码!免得有人说我只发图不发源码!无意苦争春,只把春来报!奈何零落成泥碾作尘,扔遭群芳妒!用不好代码框!不好意思!修改了下!注意代码不全:到后面找<有字数限制>!
//注意:
//      0)运行宏之前选好要加工的面(虽然是多算,最好自选一个垂直面);
//      1)径向余量与轴向余量用空格隔开,单独输入数字默认是关闭轴向余量;
//      2)由于更改了开始点和结束点,刀路安全自己注意 ;
//      3)容错公差默认为1MM;
//      4)等高刀路自己设置;
FUNCTION MAIN() {
    GRAPHICS LOCK
    DIALOGS MESSAGE OFF
    DIALOGS ERROR OFF
    DELETE TOOLPATH FOLDER "Toolpath\MyFolderTop"
    DELETE TOOLPATH FOLDER "Toolpath\MyFolderBottom"
    STRING $str=input "请输入余量:"
    Real $offset=input "请输入底部位置偏置距离:"
    STRING ToolName = INPUT ENTITY TOOL "选择刀具"
    ACTIVATE TOOL $ToolName
    CALL SetBlock()
    //生成顶部参考线
    CREATE FOLDER "Toolpath" "MyFolderTop"
    ACTIVATE FOLDER #
    STRING THName=""
    CALL Swarf(str,0,'top',THName)
    STRING PName=new_entity_name('Pattern')
    CREATE PATTERN ;
    EDIT PATTERN ; INSERT TOOLPATH ;
    EDIT TOOLPATH DIVIDE TYPE RETRACT
    PROCESS TPDIVIDE
    DELETE TOOLPATH $THName
    //生成底部部参考线
    CREATE FOLDER "Toolpath" "MyFolderBottom"
    ACTIVATE FOLDER #
    CALL Swarf(str,offset,'bottom',THName)
    EDIT PATTERN $PName INSERT TOOLPATH ;
    EDIT TOOLPATH DIVIDE TYPE RETRACT
    PROCESS TPDIVIDE
    DELETE TOOLPATH $THName
    //取刀路参数
    FOREACH TH1 IN FOLDER('Toolpath\MyFolderTop') {
      REAL X1=ENTITY('Toolpath',TH1.Name).StartPoint.Position.X
      REAL Y1=ENTITY('Toolpath',TH1.Name).StartPoint.Position.Y
      REAL Z1=ENTITY('Toolpath',TH1.Name).StartPoint.Position.Z-ENTITY('Toolpath',TH1.Name).StartPoint.Distance
      REAL X11=ENTITY('Toolpath',TH1.Name).EndPoint.Position.X
      REAL Y11=ENTITY('Toolpath',TH1.Name).EndPoint.Position.Y
      REAL Z11=ENTITY('Toolpath',TH1.Name).EndPoint.Position.Z-ENTITY('Toolpath',TH1.Name).EndPoint.Distance
      FOREACH TH2 IN FOLDER('Toolpath\MyFolderBottom') {
            REAL X2=ENTITY('Toolpath',TH2.Name).StartPoint.Position.X
            REAL Y2=ENTITY('Toolpath',TH2.Name).StartPoint.Position.Y
            REAL Z2=ENTITY('Toolpath',TH2.Name).StartPoint.Position.Z-ENTITY('Toolpath',TH2.Name).StartPoint.Distance
            REAL X22=ENTITY('Toolpath',TH2.Name).EndPoint.Position.X
            REAL Y22=ENTITY('Toolpath',TH2.Name).EndPoint.Position.Y
            REAL Z22=ENTITY('Toolpath',TH2.Name).EndPoint.Position.Z-ENTITY('Toolpath',TH2.Name).EndPoint.Distance
            IF ABS(X1-X2)<1 AND ABS(Y1-Y2)<1 {
               EDIT PATTERN $PName INSERT SKETCH
               ABSOLUTE
               XYPLANE
               X $X1
               Y $Y1
               Z $Z1
               ADD
               X $X2
               Y $Y2
               Z $Z2
               ADD
               END
               X $X11
               Y $Y11
               Z $Z11
               ADD
               X $X22
               Y $Y22
               Z $Z22
               ADD
               END
               QUIT SSKETCHER ACCEPT
            CONTINUE
            } ELSEIF ABS(X1-X22)<1 AND ABS(Y1-Y22)<1 {
               EDIT PATTERN $PName INSERT SKETCH
               ABSOLUTE
               XYPLANE
               X $X1
               Y $Y1
               Z $Z1
               ADD
               X $X22
               Y $Y22
               Z $Z22
               ADD
               END
               X $X11
               Y $Y11
               Z $Z11
               ADD
               X $X2
               Y $Y2
               Z $Z2
               ADD
               END
               QUIT SSKETCHER ACCEPT
            CONTINUE
            } ELSE {
            CONTINUE
            }
      }
    }
    EDIT PATTERN $PName MERGE
    CREATE BOUNDARY ; SKETCH \r EDIT BOUNDARY ; INSERT PATTERN ;
    DELETE TOOLPATH FOLDER "Toolpath\MyFolderTop"
    DELETE TOOLPATH FOLDER "Toolpath\MyFolderBottom"
    EDIT RECYCLER DELETE Toolpath ALL
    DIALOGS MESSAGE ON
    DIALOGS ERROR ON
    GRAPHICS UNLOCK   
}





乄牵灬佐手 发表于 2019-4-15 16:19:16

做成宏在pm2017运行参数可以输入~!但不见有边界生成~!

伪装の冷漠 发表于 2017-3-15 21:17:37

生成垂直面等高边界 [修改]

JAMES_HZG 发表于 2025-4-7 18:14:27

谢楼主,学习

坐看风起云动 发表于 2025-3-26 14:33:51

谢谢分享

wan860316 发表于 2025-3-26 13:55:36

pm2017运行参数可行不

坐看风起云动 发表于 2025-3-24 15:35:24

谢谢分享

郁闷中* 发表于 2025-1-21 11:53:14

谢谢分享

梦炫歌 发表于 2021-11-4 16:19:38

用不了啊,后面代码在哪

HMMM 发表于 2021-9-6 16:33:42

感谢楼主的无私奉献

心雨666666 发表于 2021-1-20 19:50:47

楼主你真是太厉害了

hao* 发表于 2021-1-20 14:19:54

ZENMESHIYONG
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: PM2016宏应用之二:生成垂直面等高边界