Polyworks脚本开发学习笔记(十)-互动式开发及出错控制

Polyworks脚本开发学习笔记(十)-互动式开发及出错控制

第八章组合的各种命令,完成了一个对所选的测点名称进行命名的任务。但是,由于任务中没有交互环节,只能机械地将
曲面点 - 包边点改为Flush,以及包边点改为Gap。本次将通过交互式控制,灵活的完成重命名。
另外,在程序中加入对可能出错的位置检查,并提前控制,防止错误执行。

原始脚本及任务分析

version "5.0"
#定义变量数组获取所有比较点名称
DECLARE vArrPts
TREEVIEW COMPARISON_POINT NAME SELECTED GET ( vArrPts )
#循环改名
DECLARE i 1
WHILE $i<= SIZE (vArrPts)
    DECLARE vStr $vArrPts[$i]
    DECLARE vNewName
    MACRO ECHO ($vArrPts[$i])
    DECLARE vPos1
    DECLARE vPos2
    DECLARE vPtType1 "曲面点 - 包边点"
    DECLARE vPtType2 "包边点"
    
    #获取当前名称对应的索引号,获取不到则跳过本次循环
    DECLARE vPtInd
    TREEVIEW COMPARISON_POINT INDEX GET ($vStr,vPtInd)
    IF $vPtInd==0 
        CONTINUE
    ENDIF
    #在名称中查找有没有"曲面点 - 包边点",有则返回位置vPos1大于0
    MACRO STRING FIND_FIRST ( $vStr,$vPtType1,,vPos1 )
    #在名称中查找有没有"曲面点",有则返回位置vPos2大于0
    MACRO STRING FIND_FIRST ( $vStr,$vPtType2,,vPos2 )
    IF $vPos1>0
        #"曲面点 - 包边点"替换为"Gap"并重命名
        MACRO STRING REPLACE ( $vStr,$vPtType1,"Flush",,,vNewName )
        TREEVIEW COMPARISON_POINT NAME($vPtInd,$vNewName)
    ELSEIF  $vPos2>0
        #"曲面点"替换为"Gap"并重命名
        MACRO STRING REPLACE ( $vStr,$vPtType2,"Gap",,,vNewName )
        TREEVIEW COMPARISON_POINT NAME($vPtInd,$vNewName)
    ENDIF
    ++i
ENDWHILE

  1. 出错检查: 如果程序开始时,没有特征点被选择,则应该跳出程序,可增加一个判断
  2. 改名扩展到不止比较点COMPARISON_POINT还有特征FEATURE
  3. 将修改原始名称“曲面点 - 包边点” 该用输入字符串vStrOrName1代替,默认值为“曲面点 - 包边点”
  4. 将修改后名称用输入字符串vStrReplaceName1代替,默认值为“Flush”
  5. 增加一个“增加前缀“的功能,用媳妇换vStrPrefixName1,默认值为空“”

出错检测控制

version "5.0"
#定义变量数组获取所有比较点和特征点数量,如果数量和为0,则退出程序
DECLARE vArrComPts
DECLARE vNumArrComPts
DECLARE vArrFeats
DECLARE vNumArrFeats
TREEVIEW COMPARISON_POINT COUNT SELECTED GET ( vNumArrComPts )
TREEVIEW FEATURE COUNT SELECTED GET ( vNumArrFeats )
DECLARE vNumSelComPtsAndFeats EXPR_I ( $vNumArrComPts+$vNumArrFeats )
IF  $vNumSelComPtsAndFeats==0 
    MACRO END ( "Error" )
ENDIF

扩展选择特征类型

将原有的比较点类型,增加特征类型

#如果选择比较点数量>0,则用vArrComPts接收比较点名称
IF $vNumArrComPts>0
    TREEVIEW COMPARISON_POINT NAME SELECTED GET (vArrComPts)
ENDIF
#如果选择的特征数量>0,则用vArrFeats接收特征名称
IF $vNumArrFeats>0
    TREEVIEW FEATURE NAME SELECTED GET (vArrFeats)
ENDIF

用互动方式设置重命名的参数

采用三个变量接收改名前后的字符串,采用互动对话框获取。获取后去除字符串前后空格。
增加错误检测,如果选择取消,则原始名称为空,退出脚本;如果改名后的字符串为空,则退出脚本。

#用互动方式设置重命名的参数,增加错误检测-如果原始名称或修改名称为空则报错退出运行
DECLARE vStrOrName1 
DECLARE vStrOrName1Default   "曲面点 - 包边点"
DECLARE vStrReplaceName1 
DECLARE vStrReplaceName1Default "Flush"
DECLARE vStrPrefixName1

DECLARE vq1 {"批量修改名称:"}
DECLARE vA1 {"STRING","原始名称", $vStrOrName1Default,"STRING","修改名称",$vStrReplaceName1Default,"STRING","增加前缀", ""}
MACRO INPUT MULTIPLE_PARAMETERS ("修改名称设置", $vq1, $vA1, vStrOrName1, vStrReplaceName1,vStrPrefixName1)
MACRO STRING TRIM_SPACES ( $vStrReplaceName1,vStrReplaceName1)
MACRO STRING TRIM_SPACES ( $vStrPrefixName1,vStrPrefixName1)
IF  $vStrOrName1==""
    MACRO END ( "Error" )
ELSEIF $vStrReplaceName1==""
    MACRO END ( "Error" )
ENDIF

对话框效果:
在这里插入图片描述

循环进行命名

用两个循环分别在比较点和特征中查找对应名称的对象,按照修改的参数进行重命名。

DECLARE i 1
#循环改名,先修改比较点的名称
IF $vNumArrComPts>0
    SET i 1
    WHILE $i<=$vNumArrComPts
        DECLARE vStr1 $vArrComPts[$i]
        DECLARE vNewName1
        DECLARE vPos1
        
        #获取当前名称对应的索引号,获取不到则跳过本次循环
        DECLARE vPtInd1
        TREEVIEW COMPARISON_POINT INDEX GET ($vStr1,vPtInd1)
        IF $vPtInd1==0 
            CONTINUE
        ENDIF
        #在名称中查找有没有 vStrOrName1,有则返回位置vPos1大于0
        MACRO STRING FIND_FIRST ( $vStr1,$vStrOrName1,,vPos1 )
        IF $vPos1>0
            #vStrOrName1替换为vStrReplaceName1并重命名
            MACRO STRING REPLACE ( $vStr1,$vStrOrName1,$vStrReplaceName1,,,vNewName1 )
            TREEVIEW COMPARISON_POINT NAME($vPtInd1,$vNewName1)
        ENDIF
        IF $vStrPrefixName1 != ""
            TREEVIEW COMPARISON_POINT NAME GET ( $vPtInd1,vNewName1 )
            SET vNewName1 "${vStrPrefixName1}_${vNewName1}"
            TREEVIEW COMPARISON_POINT NAME($vPtInd1,$vNewName1)
        ENDIF
        
        ++i
    ENDWHILE
ENDIF
#循环改名,再修改特征点的名称
IF $vNumArrFeats>0
    SET i 1
    WHILE $i<=$vNumArrFeats
        DECLARE vStr2 $vArrFeats[$i]
        DECLARE vNewName2
        DECLARE vPos2
        
        #获取当前名称对应的索引号,获取不到则跳过本次循环
        DECLARE vPtInd2
        TREEVIEW FEATURE INDEX GET ($vStr2,vPtInd2)
        IF $vPtInd2==0 
            CONTINUE
        ENDIF
        #在名称中查找有没有 vStrOrName1,有则返回位置vPos2大于0
        MACRO STRING FIND_FIRST ( $vStr2,$vStrOrName1,,vPos2 )
        IF $vPos2>0
            #vStrOrName1替换为vStrReplaceName1并重命名
            MACRO STRING REPLACE ( $vStr2,$vStrOrName1,$vStrReplaceName1,,,vNewName2 )
            TREEVIEW FEATURE NAME($vPtInd2,$vNewName2)
        ENDIF
        IF $vStrPrefixName1 != ""
            TREEVIEW FEATURE NAME GET ( $vPtInd2,vNewName2)
            SET vNewName2 "${vStrPrefixName1}_${vNewName2}"
            TREEVIEW FEATURE NAME($vPtInd2,$vNewName2)
        ENDIF
        
        ++i
    ENDWHILE
ENDIF

程序运行效果

当原始名称和修改名称不同时,程序能够批量查找并改名;
当前缀不为空时,程序可以为特征点批量增加前缀;
命令使用更加灵活,不易出错,健壮性更好。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zeng31403

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值