PDMS二次开发(一)——PML类型程序类型与概念

news/2024/4/20 12:52:38/文章来源:https://blog.csdn.net/qq_41810415/article/details/129165814

目录

  • 前言
  • 一、PML类型与概念
  • 基础知识
    • 变量
    • 函数
      • 小例子
    • 注释
    • PML表达式
    • 条件判断语句
    • 循环
    • skip和break
  • 窗口程序
    • 在PDMS菜单栏中添加程序
  • 窗口自动定位
  • PML常见控件

前言

PDMS二次开发需要.net 有自带的PML语言和C#
.net一般通常泛指的是C#语言
模型数据借助.NET的接口可以转换成数据库中的关系型数据,将固化在PDMS软件中的工程数据,转移到更广阔的应用领域。

.NET二次开发的两种方式。一种是使用.NET插件;另一种是使用PML.NET。两种方式的机制都可以使用程序被动态加载到使用的模块中。我采用的是纯.NET开发的方式,熟悉PML的人可能更喜欢PML.NET的方式。

编辑器的话 PML 可以用

1677055795925.png

1677055819989.png

一、PML类型与概念

PML是面向对象的一种编程语言,支持用户自定义对象类型,是一种简单易学,与PDMS无缝链接的一种语言

1677055877303.png
常用的是pmllib
要做的项目简介:

1677055931343.png

1677066204119.png

image.png

基础知识

变量

! 用来声明变量 一般不在命令行窗口来写 要自己写一个脚本用来执行
!number = 9 q var !number
答案: <REAL> 9
!number = object real()
q val !number

PML里面的变量是不区分大小写的
unset指的是空类型 相当于null
1677066750034.png

1677066846892.png
real中对比java的话 里面包括Double和int float 都属于real类型

Array数组类型里面 可以放String real 等不局限于一种类型

1677066871853.png

1677067559864.png

1677067888433.png

1677067992842.png
!!ce指的是当前元素

1677068057271.png

1677068104242.png

函数

1677068791605.png

函数的定义 !!Area函数 里面是参数 然后最右面是返回值 感觉和go语言的差不多

1677068917347.png

需要注意的是函数的名称要和定义的这个函数的文件名称要一致
1677069009778.png

输入的是8*5 然后再进行查询之后得出的结果
1677069042940.png

目前的演示都是再CommandWindow窗口程序里看到的

小例子

1677069276588.png
先定义两个小零件
然后编写函数

1677069427103.png
就是根据程序重新命名了一下
然后执行
pml rehash all
!!NameNozzle()
就可以了
结果:

1677069508868.png

注释

1677069834515.png
--不可以放在代码的同行后面
1677069883001.png
打印就是Log日志 在控制台输出的那种

PML表达式

1677116714477.png
和并符&:就是两个字符拼接在一起所用的
如果都是字符串的话 也可以用+

条件判断语句

1677116440427.png

循环

1677116470833.png

skip和break

就是类似continue 和break

1677116491728.png

类似goto

1677116550653.png

1677116610993.png

窗口程序

1677117807654.png
下面是最终版本的get函数

1677129394356.png
这个是声明了一个窗体程序

setup formexit

而下面define method .PipeBop() 那个是构造方法
在下面是普通的方法
method里面常与object对象这种相结合
text .txtBop 'BOP' at x 1.1 ymax width 20 is real
.txtBop 是声明文本框的名称名
'BOP’表示的是在屏幕上显示的名称
这个是以左上角为原点坐标
出来的效果就是

1677118398503.png
然后再加入一些方法 点击出来的按钮
其中flnn 这个是指的是零件的名称
当form里面的改变 或者增加方法什么的才需要刷新 否则就单纯更改方法里面的代码就不需要更新
这里面定义的就是PML中的Object类 按F1快捷键
1677120384806.png
Gadget是控件

1677120638819.png
就是让窗口的控件变灰 直接失灵 Active= false
neq是非的意思

1677121500861.png
ID@是让你点击界面的确认 element

1677128532271.png
循环点击 设置set函数
esc退出

Indices遍历集合

1677129094801.png

dbref : 指的是pdms库里面的元素类型

1677129558606.png

最终版:

1677129691599.png

在PDMS菜单栏中添加程序

1677130022246.png
右键出现的Customize然后出现工具
在中间的部分右键新建 然后最右边的栏中进行编辑 注意是Mcro形式 因为我们这个本质上是宏命令

1677130138089.png
最后的时候一定要记得 把按钮拖进去 要不还是失效的

1677130207941.png
如果txt文件中执行的话(这里面txt文件中仅仅有一个查询的一条语句)
1677130291705.png
或者也可以通过按钮工具的形式出现

1677130379647.png

1677130495763.png

窗口自动定位

1677131303176.png

1677131536832.png

1677131575729.png

1677131618439.png

也可以组合

1677131984161.png

1677132199262.png

1677132355641.png
构造方法只运行一次就够了 初始化完成 是每次重新打开都会

1677132464322.png

1677132539552.png
就是常见的OK键和cancel键

1677132617438.png

PML常见控件

1677131679000.png
tooltip 'Slect pipe’这个是窗口停靠的提示信息
1677131723121.png

1677133403738.png

1677133445170.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73069.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSP430F2132IRHBR功能框图TPS259824LNRGER电路保护和电源管理解决方案芯片

概述&#xff1a;MSP430F21x2 16位超低功耗微控制器 (MCU) 是MSP430系列微控制器的一部分。这些MCU采用一种架构&#xff0c;加上5种低功耗模式&#xff0c;能在便携式测量应用中延长电池的使用寿命。这些器件具有一个强大的16位 RISC CPU、16位寄存器和用于获得最大编码效率的…

OpenStack手动分布式部署Glance【Queens版】

目录 Glance简介 1、登录数据库配置&#xff08;在controller执行&#xff09; 1.1登录数据库 1.2数据库里创建glance 1.3授权对glance数据库的正确访问 1.4退出数据库 1.5创建glance用户密码为000000 1.6增加admin角色 1.7创建glance服务 1.8创建镜像服务API端点 2、安装gla…

FinClip 的 2022 与 2023

相比往年&#xff0c;今年复盘去年与展望新年的文章来的稍慢一点。不过也希望能够借这篇文章&#xff0c;和关注 FinClip 的用户朋友们一起聊聊&#xff0c;我们在去年和今年的想法与计划。 2022 在过去的一年中&#xff0c;我们的身边发生了很多事情&#xff0c;这些事情在不…

CANoe-TestModule-vTESTstudio-Python -- 爱恨情仇

前面有聊过什么才是真正的自动化平台&#xff1b;其实说起来也是每个测试人的工作之路&#xff0c;从入门的测试执行、测试用例设计、自动化脚本开发、自动化架构开发、自动化平台开发&#xff0c;实际上我们大多数测试人都在纠结第一步的测试执行和第三步的自动化脚本开发&…

数据结构—堆(完全解析)

数据结构—堆&#xff08;完全解析&#xff09; 数据结构——堆&#xff08;Heap&#xff09;大根堆、小根堆 详解数据结构——堆 堆的基本存储 【从堆的定义到优先队列、堆排序】 10分钟看懂必考的数据结构——堆 【堆/排序】堆排序的两种建堆方法 【算法】排序算法之堆排序 C…

Mybatis学习记录

Mybatis学习记录一、MyBatis简介1.1、MyBatis历史1.2、MyBatis特性1.3、MyBatis下载1.4、和其他持久化层技术对比二、MyBatis框架搭建2.1、加入依赖2.2、创建MyBatis的核心配置文件2.3、创建Mapper接口2.4、 创建MyBatis的映射文件2.5、 测试环境2.6、 加入Log4j日志功能三、核…

Array.apply(null,{length: 99}) 逻辑解析

一、基础概述 vue 教程中有一段 demo code&#xff0c;如下&#xff1a; render: function (createElement) {return createElement(div,Array.apply(null, { length: 20 }).map(function () {return createElement(p, hi)})) }这个表达式Array.apply(null, { length: 20 })有…

Leetcode第450题删除二叉搜索树中的结点|C语言

题目&#xff1a; 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤…

【python】用plotly绘制正二十面体

文章目录顶点棱实现正二十面体plotly 的 Python 软件包是一个开源的代码库&#xff0c;它基于 plot.js&#xff0c;而后者基于 d3.js。我们实际使用的则是一个对 plotly 进行封装的库&#xff0c;名叫 cufflinks&#xff0c;能让你更方便地使用 plotly 和 Pandas 数据表协同工作…

最新文件快递柜系统网站源码-Fastapi+Sqlite3+Vue2+ElementUI-简洁好用

## 主要特色 - [x] 轻量简洁:Fastapi+Sqlite3+Vue2+ElementUI - [x] 轻松上传:复制粘贴,拖拽选择 - [x] 多种类型:文本,文件 - [x] 防止爆破:错误次数限制 - [x] 防止滥用:IP限制上传次数 - [x] 口令分享:随机口令,存取文件,自定义次数以及有效期 - [x] 匿名分享:无…

BurpSuite实战教程02-BurpSuite+夜神模拟器抓包教程

工具介绍 BurpSuite BurpSuite是用于“攻击”web 应用程序的集成平台&#xff08;java编写&#xff09;&#xff0c;包含了许多工具。Burp Suite为这些工具设计了许多接口&#xff0c;以加快攻击应用程序的过程。所有工具都共享一个请求&#xff0c;并能处理对应的HTTP 消息、…

使用Autoware标定工具包联合标定相机和激光雷达

前面文章介绍了&#xff0c;安装autoware标定工具包、ros驱动usb相机、robosense-16线激光雷达的使用&#xff0c;本文记录使用Autoware标定工具包联合标定相机和激光雷达的过程。1.ros驱动相机&#xff0c;启动相机&#xff1b;启动激光雷达2.联合录制bag包rosbag record -a 参…

k8s1.23.0+ubuntu20.04+docker23+hyperv

问题 k8s node节点加入到集群时卡住 “[preflight] Running pre-flight checks” # master节点重新生成加入命令 kubeadm token create --ttl 0 --print-join-command参考 注意 k8s1.24使用containerd而不再使用docker&#xff0c;因此使用k8s1.23版本 环境 k8s: 1.23.0 u…

TestNG和Junit的区别,测试框架该如何选择?

要想知道两个框架的区别&#xff0c;首先分别介绍一下两个框架。 TestNG是一个java中的开源自动化测试框架&#xff0c;其灵感来自JUnit和NUnit&#xff0c;TestNG还涵盖了JUnit4整个核心的功能&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更…

记一次docker虚拟机横向移动渗透测试

本次渗透在几个docker虚拟机间多次横向移动&#xff0c;最终找到了一个可以进行docker逃逸的出口&#xff0c;拿下服务器。渗透过程曲折但充满了乐趣&#xff0c;入口是172.17.0.6的docker虚拟机&#xff0c;然后一路横向移动&#xff0c;最终在172.17.0.2出实现了docker逃逸&a…

【vue2每日小知识】实现store中modules模块的封装与自动导入

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;省去我们store仓库中分模块时的需要每次导入index的问题 目录 【前言】在store中如何简…

ELK日志分析--Filebeat

ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块-Nginx 模块 重读日志文件 使用Processors(处理器)过滤和增强数据 1.ELK架构 2.Filebeat简介 可以使用 Filebeat 收集各种日志&#xff0c;之后发送到指定的目标系统上&#xff0c;但是同…

软件测试面试题 —— 整理与解析(1)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;&#x1f30e;【Austin_zhai】&#x1f30f; &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

【华为OD机试真题】用 C++ 实现 - 数字加减游戏

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

程序员如何发展第二职业?这几种副业方式超赚钱

很多程序员曾表示&#xff0c;虽然月薪一两万&#xff0c;但有时候还是会焦虑。 尤其是遇上了年初裁员年底裁员这样的就业环境&#xff0c;焦虑就会逐步放大&#xff0c;这时候副业赚钱的重要性就体现出来了。 发展第二职业&#xff0c;可以让程序员们增加抗风险能力&#xf…