Python助力PKPM模型无缝对接3d3s

在结构设计计算中,总会遇到需要导模型的情况。虽然大部分项目只需要我们用PKPM即可,但天下结构软件各有千秋,PKPM功能虽强大,也无法做到面面俱到。


除PKPM外,Sap2000,Midas等结构设计软件作者均有接触,但要说操作最直观最方便的,3D3S说自己是第二,可能没人敢说自己是第一。当需要软件进行补充计算时,现在很多人会选择3D3S。


然而导模型可以说得上是结构设计中最凶险的环节之一了,当一个模型从软件A跑到软件B里面,作为补充计算的需要,设计人员往往没有时间对导入的模型进行全方位充分细致的检查,导过去的模型往往会有各种各样的雷等着大家去踩。这里作者就介绍一下最近PKPM导3D3S遇到的一个问题以及解决方案。

11行python代码助力pkpm模型导入3d3s的图3

在3D3S14.0版本之后,提供了导入PKPM模型的功能,虽然14.0菜单上显示的是导入SATWE,事实上还是需要用户在PKPM的SPACECAD模块中点生成数据之后才能导入。


作者最近需要将PKPM模型导入3D3S后进行钢结构截面优选,但是一通操作下来,发现导过来的模型在3d3s中显示截面时是这个效果:


每根杆件截面只显示一个编号,要看具体的截面尺寸?不好意思,双击进去还要点好几步才看得到。这下好了,本来是想提高效率,现在模型这个样子,要想在此基础上优化截面,可能还不比直接用PKPM快。但是一想到PKPM里面去建桁架的痛苦经历,作者决定尝试一下解决这个问题。首先进到3d3s的截面库,可以看到“自动命名”的选项已经勾上了,但是程序并没有执行自动命名的操作。


小心翼翼地在第一个截面参数后面输个0,奇迹发生了!截面名称自动以截面参数进行了命名。


到了这一步不愿意编程的同学已经可以按此思路手动去修正模型了,直接输0回车一套操作就能解决这个问题。

然而手头这个模型几百个截面,一个一个输0也得输好久。这种时候,当然就该是我们的主角—python登场了。


计划的是利用python windows GUI相关的功能来解决问题,让python来帮我输入这一大串的0。熟悉WINAPI的同学可能直接拿着ctypes就能开工,但为求速度,我这里用到的库叫pywinauto,是一个专门用于windows自动化的python库。如果你还没有安装,可能需要打开cmd,通过pip安装,这里推荐清华镜像安装。

利用pywinauto,可以自动检测到3d3s窗口及子窗口,并分析窗口内容,自动输入……但是,我们要的是速度,所以什么自动分析都免了吧,直接用一个抓取窗口句柄的小工具ViewWizard,只需要把右下角的小放大镜拖放到对应窗口的位置,即可获得窗口句柄。


Viewvizard获取到句柄之后,在python中直接用

listv=pywinauto.controls.hwndwrapper.HwndWrapper(表格句柄)

impv=pywinauto.controls.hwndwrapper.HwndWrapper(截面参数输入框句柄)

即可将两个窗口打包成两个可以方便操作的对象。接下来代码进入一个循环,依次点击列表框中的截面,点击之后再到截面参数处输入一个0就可以完美地解决这个问题啦。总共只需要11行代码。写代码+调试5分钟搞定,从此以后导模型都可以用这个程序解决啦!程序运行效果如下:

11行python代码助力pkpm模型导入3d3s的图10




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空