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 vNewNameMACRO ECHO ($vArrPts[$i])DECLARE vPos1DECLARE vPos2DECLARE vPtType1 "曲面点 - 包边点"DECLARE vPtType2 "包边点"#获取当前名称对应的索引号,获取不到则跳过本次循环DECLARE vPtIndTREEVIEW COMPARISON_POINT INDEX GET ($vStr,vPtInd)IF $vPtInd==0 CONTINUEENDIF#在名称中查找有没有"曲面点 - 包边点",有则返回位置vPos1大于0MACRO STRING FIND_FIRST ( $vStr,$vPtType1,,vPos1 )#在名称中查找有没有"曲面点",有则返回位置vPos2大于0MACRO 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>0TREEVIEW COMPARISON_POINT NAME SELECTED GET (vArrComPts)
ENDIF
#如果选择的特征数量>0,则用vArrFeats接收特征名称
IF $vNumArrFeats>0TREEVIEW FEATURE NAME SELECTED GET (vArrFeats)
ENDIF

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

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

#用互动方式设置重命名的参数,增加错误检测-如果原始名称或修改名称为空则报错退出运行
DECLARE vStrOrName1
DECLARE vStrOrName1Default   "曲面点 - 包边点"
DECLARE vStrReplaceName1
DECLARE vStrReplaceName1Default "Flush"
DECLARE vStrPrefixName1DECLARE 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>0SET i 1WHILE $i<=$vNumArrComPtsDECLARE vStr1 $vArrComPts[$i]DECLARE vNewName1DECLARE vPos1#获取当前名称对应的索引号,获取不到则跳过本次循环DECLARE vPtInd1TREEVIEW COMPARISON_POINT INDEX GET ($vStr1,vPtInd1)IF $vPtInd1==0 CONTINUEENDIF#在名称中查找有没有 vStrOrName1,有则返回位置vPos1大于0MACRO STRING FIND_FIRST ( $vStr1,$vStrOrName1,,vPos1 )IF $vPos1>0#vStrOrName1替换为vStrReplaceName1并重命名MACRO STRING REPLACE ( $vStr1,$vStrOrName1,$vStrReplaceName1,,,vNewName1 )TREEVIEW COMPARISON_POINT NAME($vPtInd1,$vNewName1)ENDIFIF $vStrPrefixName1 != ""TREEVIEW COMPARISON_POINT NAME GET ( $vPtInd1,vNewName1 )SET vNewName1 "${vStrPrefixName1}_${vNewName1}"TREEVIEW COMPARISON_POINT NAME($vPtInd1,$vNewName1)ENDIF++iENDWHILE
ENDIF
#循环改名,再修改特征点的名称
IF $vNumArrFeats>0SET i 1WHILE $i<=$vNumArrFeatsDECLARE vStr2 $vArrFeats[$i]DECLARE vNewName2DECLARE vPos2#获取当前名称对应的索引号,获取不到则跳过本次循环DECLARE vPtInd2TREEVIEW FEATURE INDEX GET ($vStr2,vPtInd2)IF $vPtInd2==0 CONTINUEENDIF#在名称中查找有没有 vStrOrName1,有则返回位置vPos2大于0MACRO STRING FIND_FIRST ( $vStr2,$vStrOrName1,,vPos2 )IF $vPos2>0#vStrOrName1替换为vStrReplaceName1并重命名MACRO STRING REPLACE ( $vStr2,$vStrOrName1,$vStrReplaceName1,,,vNewName2 )TREEVIEW FEATURE NAME($vPtInd2,$vNewName2)ENDIFIF $vStrPrefixName1 != ""TREEVIEW FEATURE NAME GET ( $vPtInd2,vNewName2)SET vNewName2 "${vStrPrefixName1}_${vNewName2}"TREEVIEW FEATURE NAME($vPtInd2,$vNewName2)ENDIF++iENDWHILE
ENDIF

程序运行效果

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

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

  1. Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件

    Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件 插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给 ...

  2. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  3. Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发

    Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...

  4. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  5. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

  6. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  7. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  8. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  9. Nginx 模块开发(学习笔记十八)

    1. Nginx 介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP ...

最新文章

  1. 设计模式之解释器模式、例子分析
  2. 安卓端网页浏览过程中实时更新title的web实现
  3. 深度学习(三)——Autoencoder, 词向量
  4. 基恩士上位机链路通讯_基恩士PLC通讯源码
  5. 《硝烟中的Scrum和XP》学习手札
  6. myeclipse-common 找不到
  7. 次数匹配(不需要在前面加“\”)
  8. php文章上一篇,thinkphp5实现文章上一篇,下一篇
  9. 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP
  10. JAVA计算机毕业设计大学生二手物品交易网站演示记录2021Mybatis+系统+数据库+调试部署
  11. java springboot点餐外卖源码
  12. [No000003]现代版三十六计,计计教你如何做人
  13. js数组方法及返回值
  14. 2018.11.22!今天重温一遍知识点,捋一捋思路
  15. nodejs 配置淘宝镜像下载与安装路径配置
  16. matlab倒谱法基音周期,语音学习笔记1------matlab实现自相关函数法基音周期提取...
  17. jQuery-源码阅读,JavaScript原生继承方式与jQuery中的继承
  18. 1.13 新概念 否定疑问句 半否定 全否定
  19. 数据分析师的就业前景如何?
  20. Android初学之------Android Studio 运行java程序

热门文章

  1. Project 2007 导出 Excel
  2. 2021年R2移动式压力容器充装新版试题及R2移动式压力容器充装证考试
  3. ElasticSearch六:搜索模板与suggest search(自动补全)、地图位置检索功能实现、FileBeat与LogSteash使用
  4. aix and linux企业技术支持中文译文
  5. adb server version (31) doesn't match this client
  6. java emoji转unicode编码_4字节emoji表情对应的Unicode编码获取和编码转换
  7. rabbmitmq连接池[已过生产]
  8. komodo 中文_使用Komodo提高生产力:可扩展的多语言IDE
  9. php 获取 editcell,PHP编辑器之Komodo Edit的快捷键
  10. WOX——Windows快速搜索神器