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