pdms二次开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串(String)与数组
• 类型与对象 • 方法(Method) • .String()
字符串(String)的常用方法
• • • • • • • • • 字符串长度 Length() 类型转换 Real(),Position(),Boolean() 大小写转换 LowCase(),UpCase() 两端截取 After(str2),Before(str2),Substring(index) 中间截取 Substring(index,nchars) 替换 Replace(str2,str3) 匹配 Match(str2),MatchWild(str2) 分割(返回数组) Split() 修剪 Trim()
PML与其他语言配合:PML与C# 解除文件读写长度的限制
Dars接口简介
PDMS12的.net接口简介
一段简单的PML宏(Macro)
Var!subs collect ce mem Do !sub values !subs $!sub $p $!!ce.fullname enddo
如何运行宏
• 宏, 就是一系列PML命令的集合 • 执行格式为: $m filename *param1 param2 ….+
连续捕捉异常
Site /TEST_SITE Handle (2, 109) $p节点不存在 Elsehandle (2, 108) $p /TEST_SITE节点存在, 但不是SITE类型 elsehandle none $p Site /TEST_SITE节点存在 endhandle
表达式
• • • • • 算术运算符 + -* / 字符串连接符& 比较运算符EQ NE LT LE GT GE 布尔运算符NOT AND OR 括号.
name: tempMenu directory: tempMenu showOnMenu: TRUE object: tempMenuObject title: tempMenu
常用控件
• • • • • • Button 按钮 Text 文本框 option下拉列表 List 列表框 rgroup 单选框 toggle 复选框
PDMS 二次开发培训
PML开发
课程内容
• PML语言基础知识 • 通过实例, 一步步介绍PML程序编写/调试/ 移植技巧 • PDMS12与.net的接口简介 • dars接口简介
PML基本概念
• Programmable Macro Language 可编程宏语 言. • PML 脚本语言 • PML2 面向对象的编程语言. 支持窗体/菜单
中断 跳过
• skip [ if ... ] 跳过当此循环 • break 跳出当前最里层的循环
条件语句
• IF ... Then ... [ElseIf ... Then ... ] [Else ...] Endif • 条件语句可以嵌套
异常处理
• 异常: 意料之中的错误 • 捕捉指定的错误 Site /TEST_SITE Handle (2, 109) $p节点不存在 Endhandle
更新位置信息
• • • • Position类型 相对位置/绝对位置 修改位置信息 负实体(相对父节点调整)
基本体缩放
• 如何遍历属性 • 生成修改属性的代码
封装为函数
• • • • • 定义Function 文件存放位置 调用方式 提取参数 封装缩放的代码
PML文本编辑器
• Ultraedit • 缩进/制表符设置 • 语法高亮
版本差异(11.6/12.0)
• 几乎完全兼容 • 字符串/控件/读文件每行长度, 11.6长度限 制为255, 12.0可达1000 • 控件属性,有少量差异
对话框
• Form对象 • 通用的方法/属性
几个简单系统对话框
• !!alert.message() !!alert.error() !!alert.confirm() • !!fileBrowser(!directory is STRING, !seedFile is STRING, !title is STRING, !existFlag is BOOLEAN, !callback is STRING)
• Method是对象的子程序 !strNum = ‘123’ !num = !strNum.Real() • 方法可以有参数和返回值 • 函数与方法类似, 但独立存在,且全局有效
循环语句
• Do !x from 1 to 10 by 1 $p $!x Enddo • Do !x values ce mem $p $!x Enddo
数组常用方法
• • • • • • • 元素数量 Size() 追加元素 Append(value) 追加数组 AppendArray(Array) 删除全部元素 Clear() 倒序 Invert() 搜索 Find(value),FindFirst(value) 和并重复项 Unique()
方法(Method)和函数(Function)
自定义对话框
• • • • • 对话框唯一标识 标题/位置/大小 可停靠/不可停靠 构造方法/初始化 关闭对话框
界面的消息响应
• • • • callback 关联命令 关联方法 参数与消息
自定义菜单(Menu)
• 新建 %pdmsexe%\pdmsui\DES\addins\customMen u • 内容
PML实例1: EQUI缩放
创建Form
• • • • 创建.pmlfrm文件 Form基本代码 初始化 显示Form
基本的界面
• • • • 按钮: 选择当前EQUI 文本框: 输入倍数 下拉列表: 选择缩放倍数 更新界面提示信息
遍历EQUI子节点
• • • • • 找到当前的EQUI 遍历基本体 遍历管嘴 生成列表 List显示
变量
• 变量命名 • 全局变量与局部变量 • 特殊的全局变量!!ce
常用的变量类型
• • • • • Real 实数 String 字符串 Boolean 布尔类型(逻辑) Position 位置 Direction 方向
每种类型(对象)都有自己的方法(Method)
变量的查看/创建/删除
• • • • • 查看 q var 用类型创建 !str = string() 直接赋值 !str = ‘abc123’ 删除 !str.delete() 特殊的变量!!ce
一个简单的窗体程序
SETUP FORM !!FirstForm TITLE '自定义对话框’ Text .text1 ‘点击按钮’ Button .ok ‘OK’ callback ‘!this.OK()’ Exit Define method .OK() !!alert.message(‘OK’) Endmethod
如何调用窗体
• • • • • 保存文件,扩展名为pmlfrm 放在%pdmsexe%\pmllib文件夹下 pml rehash all pml reload form !!FirstForm show !!FirstForm
PML语言基础
• 变量的定义与类型 • 结构控制语句 循环/条件 • 用户自定义方法/函数 • 异常处理 • 文件I/O
注释
• 整行注释 – 例如 --这一行是注释 • 行末注释 $* !elm = !!ce $*注释写在后面 • 多行注释
$(
中间加若干行注释 $)
自定义方法/自定义函数
• • • • 函数定义 参数 全局函数存放位置 调用
文件处理
• • • • • File对象 读打开 两种写入方式 常见的IO异常 文件读写的限制(行 列)
基本调试方法
• • • • 跟踪代码 跟踪变量 手工断点 日志文件
Leabharlann Baidu
编码规范
• • • • • • 缩进 变量/方法命名 空格/间距 注释 方法的长度 全局变量
PML实例2: 属性批量编辑器
设计基本界面
• • • • member List节点列表 属性列表 属性编辑框
属性列表
• • • • 遍历属性 去掉不能修改的属性 筛选: 类型/名字相同 进一步筛选: 值相同