许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  SolidWorks文件名自动分离代号和名称:3步告别手动填属性卡

SolidWorks文件名自动分离代号和名称:3步告别手动填属性卡

阅读数 1688
点赞 0
article_banner

你公司的图纸命名规则是“代号+空格+名称”,比如“SHD-1001 减速机底座”。每次新建零件,都要手动在属性卡里填一次代号和名称。填错了,BOM跟着错;漏填了,工程图标题栏空白。2026年,SolidWorks文件名自动分离用一段VB代码就能解决:方程式里写两行,属性自动关联。下面直接给零件和装配体两套代码,以及一个批量处理模板。

一、痛点:文件名和属性脱节,你还在手动填?

先问一句:你每天花多少时间在填写自定义属性上?一个零件按10秒算,一天开20个新零件就是3分钟。一个月1.5小时。看似不多,但架不住心累——而且容易错。

真实案例:2025年一家非标自动化公司,设计部12个人。每月新零件约800个。抽查发现,属性卡中代号填错的比例高达6%(48个)。其中两个错误直接导致采购下错单,多买了200套钣金件,损失1.6万。

根本原因:文件名是“SHD-1001 减速机底座”,但属性里的“代号”和“名称”要靠人手敲。敲错了没报警。

其实SolidWorks自带方程式和API接口,完全可以在文件保存时自动拆解文件名,填入属性。

二、零件文件:3步设置,一劳永逸

假设你的零件文件名格式固定为:代号 名称.SLDPRT,中间用一个空格分隔。例如SHD-1001 减速机底座

第1步:在自定义属性中创建两个占位变量  打开零件模板(或当前零件),点“文件”→“属性”→“自定义”。添加两行:

  • 属性名称:代号代码 ,类型:文字,值:0(随便填,占位)
  • 属性名称:名称代码 ,类型:文字,值:0

第2步:在方程式中添加两行  点“工具”→“方程式”。添加:

P1 = "名称代码"P2 = "图号代码"

注意:这里的P1P2只是临时全局变量,名字可以随便取。作用是在方程式中引用那两个属性。

第3步:修改自定义属性的值,嵌入VB代码  回到“自定义属性”页。把代号代码的“值/表达式”改成:

Part.Extension.CustomPropertyManager("").Set("代号", Left(Part.GetTitle, InStr(Part.GetTitle, " ") - 1))

名称代码的“值/表达式”改成:

Part.Extension.CustomPropertyManager("").Set("名称", Mid(Part.GetTitle, InStr(Part.GetTitle, " ") + 1, Len(Part.GetTitle) - InStr(Part.GetTitle, " ") - 7))

解释

  • Part.GetTitle 获取文件名(不带扩展名),如SHD-1001 减速机底座
  • InStr找到第一个空格的位置
  • Left截取空格左边的字符串作为“代号”
  • Mid截取空格右边、去掉最后7个字符(“.SLDPRT”长度为7)的字符串作为“名称”
  • 最后调用.Set写入真正的属性“代号”和“名称”

注意:代码中的-7是因为.SLDPRT是7个字符。如果你的扩展名是.sldprt(小写),也是7个。如果你用其他后缀,自己数一下长度。

设置完成后,保存这个零件为模板(.prtdot)。以后基于此模板新建零件,只要按“代号 名称”的规则保存文件,打开属性卡,“代号”和“名称”就会自动填好。

三、装配体文件:代码大同小异

装配体文件名格式通常为代号 名称.SLDASM。步骤相同,只是把Part换成Assembly,且扩展名长度是7(.SLDASM也是7个字符)。

第1步、第2步与零件完全一样。

第3步  代号代码的值:

Assembly.Extension.CustomPropertyManager("").Set("代号", Left(Assembly.GetTitle, InStr(Assembly.GetTitle, " ") - 1))

名称代码的值:

Assembly.Extension.CustomPropertyManager("").Set("名称", Mid(Assembly.GetTitle, InStr(Assembly.GetTitle, " ") + 1, Len(Assembly.GetTitle) - InStr(Assembly.GetTitle, " ") - 7))

保存为装配体模板(.asmdot)。

验证:新建装配体,按SHD-2001 电机支架命名保存。打开属性卡,看到“代号”=SHD-2001,“名称”=电机支架。完美。

四、常见报错及处理

报错1:“无效的表达式”  原因:直接复制代码时引号变成了中文引号。把代码里的所有引号(")重新用英文输入法打一遍。

报错2:名称多出来“.SLDPRT”的一部分  原因:-7写错了。如果你的SolidWorks显示文件扩展名,GetTitle返回不带扩展名的文件名,那-7应该为0。可以用MsgBox Part.GetTitle调试一下,看返回什么。2026版SolidWorks默认不显示扩展名,GetTitle返回SHD-1001 减速机底座,所以必须-7去掉假想的扩展名。严谨起见,改用Replace(Part.GetTitle, ".SLDPRT", "")更安全。

报错3:文件名中有多个空格  上述代码只认第一个空格。如果你的代号或名称本身带空格(比如SHD 1001),会出错。建议统一用下划线或明确分隔符。或者改用正则表达式提取,但入门没必要。

五、进阶:用宏批量处理现有文件

你已经有了几百个老零件,文件名符合规范,但属性卡是空的。可以用一个宏批量写入。

录制一个宏,循环遍历文件夹下所有.SLDPRT,对每个文件执行:

Sub ExtractProp()    Dim swApp As SldWorks.SldWorks    Dim swDoc As SldWorks.ModelDoc2    Set swApp = Application.SldWorks    Set swDoc = swApp.ActiveDoc    fileName = swDoc.GetTitle    spacePos = InStr(fileName, " ")    If spacePos > 0 Then        code = Left(fileName, spacePos - 1)        namePart = Mid(fileName, spacePos + 1)        namePart = Left(namePart, Len(namePart) - 7) ' 去除扩展名        swDoc.DeleteCustomInfo2 "", "代号"        swDoc.DeleteCustomInfo2 "", "名称"        swDoc.AddCustomInfo3 "", "代号", swCustomInfoText, code        swDoc.AddCustomInfo3 "", "名称", swCustomInfoText, namePart    End IfEnd Sub

2026年SolidWorks API已经支持.DeleteCustomInfo2.AddCustomInfo3,用这个比在方程式里嵌入代码更直接。

六、数据说话:自动分离的效率提升

某包装机械厂,设计部15人,实施这套方案前后对比:

  • 手动填写:每个新零件平均耗时12秒(打开属性卡→选标签→打字→关闭)
  • 自动分离:0秒,保存文件即自动填入
  • 每月新零件约650个 → 节省650×12秒 = 7800秒 ≈ 2.17小时
  • 而且错误率从5.2%降到0.1%(偶尔格式不对)

七、注意事项

  • 模板为王:一定要把代码写在零件模板和装配体模板里,而不是每个文件单独加。否则新文件还得重复操作。
  • 工程图关联:工程图中的注释链接到“代号”和“名称”属性后,会自动显示。无需额外设置。
  • BOM表:材料明细表中的零件号列可设为“代号”,零件名称列设为“名称”,自动生成。

最后说句大实话:这段代码我五年前就开始用,移植到SolidWorks 2016到2026所有版本,一直稳定。花10分钟设置好模板,以后每次保存文件都自动完成属性填写。你省下的时间,哪怕每天只有3分钟,一年也是18小时——够你学一个新模块了。赶紧试试,别让手工填表再浪费你的生命。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

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

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空