|
|
做 AVEVA Marine 二次开发,最头疼的不是技术本身,是找不到靠谱的资料。PML 这门语言挺反直觉:比较必须写 eq、ne,写成 == 直接报错;报错信息就是 (41,12)、(2,109) 这种数字对,不看手册根本不知道啥意思。网上能搜到的内容,要么是十几年前的老帖,要么拿 E3D 的资料硬套过来。最坑的是那些"看起来没问题"的 API——写的时候语法完全合法,跑起来才发现库里压根没这个东西。
后来我想通了:与其到处搜二手资料,不如直接翻官方安装目录。那里面跑着的东西,才是真的。
于是干了这么一轮笨活:
用Agent工具将PMLLIB 里 6075 个文件全部扫了一遍;PDMSUI 的 9704 个界面宏也过了一遍,其中 Draft 的 DRA 树、Paragon 的 CAT 树是重头;118 个 CHM 手册全部拆出内嵌的官方 PDF(一直以为要装什么专业工具,其实 Windows 自带的 hh.exe -decompile 就能拆);400 个 DLL 做了反射,把能被 PML 直接调用的 .NET 类全部列了出来。
最后整理成 47 份文档,全部开源了:
github.com/erbi112211-boop/aveva-marine-dev-skill
——里面有什么
一、十七卷命令大全,每条带出处从元素创建(NEW 的三十多种元素类型)、连接(CONNECT 的六种标准变体)、属性读写,到 Draft 出图、Router 布线、规格库、Isodraft 轴测图、Hull 船体语句、Spooler 车间、MDS 支吊架……全部是逐文件从官方源码里抠出来的,每一段都标了文件路径和行号,随时能回去核对。
二、能查的东西对象 API 字典,两万五千多条方法签名;错误码近 400 个,带模块号对照;命令总索引 1100 多条,命令、类、函数都可以按词搜;还有 marAPI 的反射全表。
三、配套的代码审计工具PML 有很多坑其实静态就能查出来:用了 == 号、属性复位写成 xx = unset(这个写法官方六千多个文件里一处都没有,属于经典幻觉写法)、Hull 语句忘了收分号。这些做成了一套检查规则,写完代码跑一遍。规则拿官方全部文件做过回归校准,另外用故意写错的样本测过,都能检出来。
四、模板和工程包数据收集表单、.NET 停靠窗 addin、批量改库(带撤销三层防护)、出图批处理、Vitesse 船体脚本五个端到端模板,加两个可以直接拷进项目用的工程包。
AI翻的过程里,几个有意思的发现(也都记在文档里了):
官方自己的代码也有笔误。pipecreation 这个表单创建管道时,UNDO 描述的一处 if/else 条件写反了。
官方示例引用了一个不存在的文件。Vitesse 示例里的 KcsPipeName.py,安装目录里根本没有。
有些流传很广的类其实不存在。比如 marAPI 里的 MarEllipse、MarRectangle,反射一查都没有,真实名字是 MarEllipsePlanar、MarRectanglePlanar。这种最坑,照着写的时候一切正常,运行起来才炸。
能被 PML 直接调用的 .NET 类实际有 184 个,比之前能查到的记录多了 115 个。
这个库有一条核心原则:所有 API 必须有出处。
查一个命令,先翻总索引;查不到就去 grep 机器索引;再查不到翻官方手册全文;全都没有,就老老实实标一个 TODO-UNVERIFIED,绝不编一个"看起来像那么回事"的答案出来。
宁可说不知道,也不瞎编。
怎么用
如果装了 ZCode 这类支持技能的 AI 工具,clone 到技能目录就是一个技能,之后问 AVEVA 相关问题会自动带上这套资料:
git clone https://github.com/erbi112211-boop/aveva-marine-dev-skill.git~/.zcode/skills/aveva-marine-dev-skill
不用 AI 也完全没问题。整个库就是 Markdown 加几个 Python 脚本,当手册查、当字典翻都行。
适用版本是 AVEVA Marine (PDMS) 12.1 SP4,大部分命令在别的版本上也通用,尤其命令大全那几卷。
说明一下:官方手册的全文和源码索引没有塞进仓库(版权原因,也不合适),但生成脚本都在,可以用自己的安装目录重新跑一遍生成。—
这个库是用AI整理的,每一条尽量都标了出处,但难免还有疏漏和错误。发现哪里不对,欢迎提 issue 直接指出来。
如果它正好帮你少踩了几个坑,点个 star 就是最大的鼓励。
仓库地址:github.com/erbi112211-boop/aveva-marine-dev-skill(MIT 协议,随便用)

|
|