发布日期:2025-10-09 11:50浏览次数:
上礼拜接了个私活,客户非要改一堆螺丝孔位置,SolidWorks里手动调能累死个人。琢磨着搞个脚本偷懒,结果翻官方API文档直接看懵了——这玩意儿比康熙字典还厚!折腾两小时连直线都没画出来,气得差点砸键盘。
第一招:偷看SolidWorks自己怎么干活
直接开宏录制,抓着鼠标在软件里瞎比划。画个圆、打个孔、挪个位置,录完点停止。好家伙,宏文件里唰唰唰蹦出两百行代码!仔细扒拉发现关键就这几句:
*2(3.5, 5, 0)
- 这不就是画圆的指令嘛*5
- 打孔功能藏在这么个鬼名字里把尺寸数字改成变量,原来改螺丝孔位置就是调这俩参数,其他花里胡哨的代码全删光,省下半小时查文档的功夫。
接着处理三十个孔位修改。本来代码长得像裹脚布:
画孔1(旧位置) → 删孔1 → 画孔1(新位置)
画孔2(旧位置) → 删孔2 → 画孔2(新位置)
当场改写成这样:
DeleteOldHole(序号)
CreateNewHole(X坐标,Y坐标)
主程序直接变清爽:
孔位表 = 读取Excel表格() ← 这是后来加的
For 每个螺丝孔 in 孔位表:
DeleteOldHole(孔编号)
CreateNewHole(新X坐标, 新Y坐标)
重点来了:调试时发现Y坐标总飘移。凌晨三点盯着屏幕骂娘,突然发现CreateNewHole里忘记减掉板子厚度。这种bug藏在长代码里根本找不到,模块化后五分钟就揪出来了。
要加个生成BOM表功能,这玩意儿录宏也录不出来。果断打开GitHub搜"SolidWorks BOM export",按星星排序找前三个项目。有个老哥的VB脚本写着:
Set swBom = *()
*() ← 重点在这行!
照抄时栽了个跟头——不调.Update()导出来全是空白表。这种坑文档半句不提,但抄作业直接白嫖了别人的踩坑经验。
昨天拿这套组合拳交货,客户夸我效率高。心里门儿清:要真按官方教材学COM对象、类型库那些玩意,现在可能还在查How to create line。
PS:后来听说客户又要求加自动避让功能,反手把这活转给了前同事——那兄弟去年跳槽去搞Python爬虫,上周还跟我吐槽老板让他用C#重写供应链系统,现在看见Visual Studio就想吐...