加入五千万化工人社群
您需要 登录 才可以下载或查看,没有账号?注册
x
DTAS Python脚本自动化自定义测量,突破软件限制,实现建模自由! 摘要:公差分析软件、尺寸链计算、尺寸公差分析、公差仿真分析、尺寸工程、尺寸链校核 在上期内容中,我们对DTAS Python脚本自动化建模-专治建模界的 "二高" 问题(高重复、高耗时)进行了深入探讨。DTAS可以自由编写Python脚本,开发自己特定场景的虚拟装配与虚拟测量,成功将用户从繁琐的重复建模中解放出来,不仅大幅提升了建模效率,还让脚本能够重复利用,真正实现了建模的自动化与智能化。 而本期,我们将继续深入探索DTAS Python脚本的——自定义测量功能,看看它是如何为复杂应用场景提供定制化解决方案的。
Python脚本应用场景举例 场景举例 如图所示:6块马蹄状的零件通过两孔销装到绿色圆盘,6块马蹄状内表面围成的最小圆的直径是如何变化的? 软件中是没有此类型测量,DTAS软件可以通过编写脚本来实现此场景下的测量。 软件操作 准备好了吗?让我们开始这段自动化测量的探索之旅,一起解锁DTAS3D公差仿真分析的新技能吧! 软件演示 点击链接-查看案例演示:https://www.bilibili.com/video/BV1tXoVYPEub/ 案例脚本 如下: - <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"># DTAS Soft</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"># zjy 20241104</font></span></div>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;"># Function:</span><span style="font-size:14.0pt;">求xy平面上24个点算出的最大外接圆半径及x,y坐标</span></font></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">#</font></span></div>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;"># </span><span style="font-size:14.0pt;">获取24个点的坐标参数</span></font></div>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p1 = [features[0][0], features[0][1],
- features[0][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p2 = [features[1][0], features[1][1],
- features[1][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p3 = [features[2][0], features[2][1],
- features[2][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p4 = [features[3][0], features[3][1],
- features[3][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p5 = [features[4][0], features[4][1],
- features[4][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p6 = [features[5][0], features[5][1],
- features[5][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p7 = [features[6][0], features[6][1],
- features[6][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p8 = [features[7][0], features[7][1],
- features[7][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p9 = [features[8][0], features[8][1],
- features[8][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p10 = [features[9][0], features[9][1],
- features[9][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p11 = [features[10][0],
- features[10][1], features[10][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p12 = [features[11][0],
- features[11][1], features[11][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p13 = [features[12][0],
- features[12][1], features[12][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p14 = [features[13][0],
- features[13][1], features[13][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p15 = [features[14][0],
- features[14][1], features[14][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p16 = [features[15][0],
- features[15][1], features[15][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p17 = [features[16][0],
- features[16][1], features[16][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p18 = [features[17][0],
- features[17][1], features[17][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p19 = [features[18][0],
- features[18][1], features[18][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p20 = [features[19][0],
- features[19][1], features[19][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p21 = [features[20][0],
- features[20][1], features[20][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p22 = [features[21][0],
- features[21][1], features[21][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p23 = [features[22][0],
- features[22][1], features[22][2]]</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p24 = [features[23][0],
- features[23][1], features[23][2]]</font></span></p>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;"># </span><span style="font-size:14.0pt;">求24个点在xy平面上的投影点</span></font></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">facePos1 = [1,0,0]</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">facePos2 = [0,1,0]</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">facePos3 = [1,1,0]</font></span></div>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p1Pos =
- PointProjectionOntoThePlane(p1,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p2Pos =
- PointProjectionOntoThePlane(p2,facePos1,facePos2,facePos3)</font></span></p>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p3Pos = PointProjectionOntoThePlane(p3,facePos1,facePos2,facePos3)</font></span></div>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p4Pos =
- PointProjectionOntoThePlane(p4,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p5Pos =
- PointProjectionOntoThePlane(p5,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p6Pos =
- PointProjectionOntoThePlane(p6,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p7Pos =
- PointProjectionOntoThePlane(p7,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p8Pos =
- PointProjectionOntoThePlane(p8,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p9Pos =
- PointProjectionOntoThePlane(p9,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p10Pos =
- PointProjectionOntoThePlane(p10,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p11Pos =
- PointProjectionOntoThePlane(p11,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p12Pos =
- PointProjectionOntoThePlane(p12,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p13Pos =
- PointProjectionOntoThePlane(p13,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p14Pos =
- PointProjectionOntoThePlane(p14,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p15Pos =
- PointProjectionOntoThePlane(p15,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p16Pos =
- PointProjectionOntoThePlane(p16,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p17Pos =
- PointProjectionOntoThePlane(p17,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p18Pos =
- PointProjectionOntoThePlane(p18,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p19Pos =
- PointProjectionOntoThePlane(p19,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p20Pos =
- PointProjectionOntoThePlane(p20,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p21Pos =
- PointProjectionOntoThePlane(p21,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p22Pos =
- PointProjectionOntoThePlane(p22,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p23Pos =
- PointProjectionOntoThePlane(p23,facePos1,facePos2,facePos3)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p24Pos =
- PointProjectionOntoThePlane(p24,facePos1,facePos2,facePos3)</font></span></p>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"> </font></span></div>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;"># </span><span style="font-size:14.0pt;">求xy平面上24个点算出的最大内接圆半径及x,y坐标</span></font></div>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">listPos =
- [p1Pos[0],p1Pos[1],p2Pos[0],p2Pos[1],p3Pos[0],p3Pos[1],p4Pos[0],p4Pos[1],\</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p5Pos[0],p5Pos[1],p6Pos[0],p6Pos[1],p7Pos[0],p7Pos[1],p8Pos[0],p8Pos[1]
- ,\</font></span></p>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p9Pos[0],p9Pos[1],p10Pos[0],p10Pos[1],p11Pos[0],p11Pos[1],p12Pos[0],p12Pos[1],\</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p13Pos[0],p13Pos[1],p14Pos[0],p14Pos[1],p15Pos[0],p15Pos[1],p16Pos[0],p16Pos[1],\</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p17Pos[0],p17Pos[1],p18Pos[0],p18Pos[1],p19Pos[0],p19Pos[1],p20Pos[0],p20Pos[1],\</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">p21Pos[0],p21Pos[1],p22Pos[0],p22Pos[1],p23Pos[0],p23Pos[1],p24Pos[0],p24Pos[1]]</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"> </font></span></div>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;"># 0:</span><span style="font-size:14.0pt;">半径; 1: x; 2:y</span></font></div>
- <div align="left" style="text-indent:2em;"><font face="宋体"><span style="font-size:14.0pt;">#dtas</span><span style="font-size:14.0pt;">底层函数FittingMaxCircleIn-最大内接圆</span></font></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">res = FittingMaxCircleIn(listPos) </font></span></div>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">SetHolePinCenter('monitor',
- DTASPoint(res[1],res[2], 30),False)</font></span></p>
- <p align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">SetHolePinDiameter('monitor',
- 2*res[0],False)</font></span></p>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体">measureValue = 2*res[0]</font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"> </font></span></div>
- <div align="left" style="text-indent:2em;"><span style="font-size:14.0pt;"><font face="宋体"># end</font></span></div>
复制代码 总结 DTAS创造性的将CAE脚本自动化技术、二次开发等引入CAT领域 1.开放底层API、支持宏录制、编写Python脚本,将用户从繁琐重复的建模中解放,使用脚本自动化技术可以提高建模效率,并且脚本等可以重复使用; 2.支持用户开发自定义的公差分析模型如虚拟装配虚拟测量等,大大增强了软件面对复杂应用场景的拓展性与中高级、专家及用户使用软件的自由性; 3.构建软件用户生态、公差自动化智能化分析的前提。 下期我们介绍第三个场景的应用,敬请期待! >>> 关注DTAS棣拓科技公众号或者扫码添加客服,回复“公差Python脚本预约演示”,我们将立刻与您联系! |