赞
踩
最近在使用solidworks画三维图,使用的是图号+空格+图名的命名方式。这样的命名方式可以保证零部件名称的唯一性,在两个机台互相装配的时候,不会因为重名而出现问题。但是在工程图里面的标题栏中一般图号和图名是分开填写在不同的地方,所以需要做图号分离操作。
搜了网上不少的教程,有纯用宏命令的办法,也有使用方程式的办法。
宏就是写了一段VBA代码,在已经建好的模型里面点击一下运行,即可自动将图号和图名更新到属性里面。宏用起来比较简单,做成宏按钮一键即可分离,但是图名和图号属性与文件名没有关联,有时候我们需要对零部件改名,而改了名字之后它没办法自动更新,需要手动更新。
方程式的方法呢,就是使用全局变量和属性,利用solidworks全局变量自动更新的特点,将图号和图名自动更新到相应的属性里面去。
在实际使用的过程中,零部件改名后,方程式可以自动更新。对于新的零件,可以将前面含有方程式的零件做成零件模板,调用这个模板,就不用每个零件都输入方程式了。但是对于已经建立好的模型,就需要挨个输一遍方程式,太过于麻烦。
基于宏命令和方程式图号分离的两种方法,取其所长,将添加方程式步骤加入了宏命令里面,结合做成了一个含有方程式的宏命令
Dim swApp As Object Sub main() '用字符串来临时存放代码 Dim s As String Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swEqnMgr As SldWorks.EquationMgr Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swEqnMgr = swModel.GetEquationMgr Set CurCFG = swModel.GetActiveConfiguration() ConfName = CurCFG.Name '建立两个属性(代号代码和名称代码) blnretval = swModel.AddCustomInfo3(ConfName, "代号代码", swCustomInfoText, frmPartID) blnretval = swModel.AddCustomInfo3(ConfName, "名称代码", swCustomInfoText, frmPartID) '为代号代码属性赋值 s = "part.Extension.CustomPropertyManager("""").Add3(""代号"", swCustomInfoText, Left(part.GetTitle, InStrRev(part.GetTitle, "" "") - 1), 1)" dummy = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name).Set("代号代码", s) '为名称代码属性赋值 s = "part.Extension.CustomPropertyManager("""").Add3(""名称"", swCustomInfoText,Mid(part.GetPathName, InStrRev(part.GetPathName, "" "") + 1, InStrRev(part.GetPathName, ""."") - InStrRev(part.GetPathName, "" "") - 1), 1)" dummy = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name).Set("名称代码", s) '将代号代码和名称代码属性添加到全局变量A和B swEqnMgr.Add2 0, ("""A"" = ""代号代码"""), False swEqnMgr.Add2 0, ("""B"" = ""名称代码"""), False End Sub
Dim swApp As Object Sub main() '用字符串来临时存放代码 Dim s As String Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swEqnMgr As SldWorks.EquationMgr Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swEqnMgr = swModel.GetEquationMgr Set CurCFG = swModel.GetActiveConfiguration() ConfName = CurCFG.Name '建立两个属性(代号代码和名称代码) blnretval = swModel.AddCustomInfo3(ConfName, "代号代码", swCustomInfoText, frmPartID) blnretval = swModel.AddCustomInfo3(ConfName, "名称代码", swCustomInfoText, frmPartID) '为代号代码属性赋值 s = "assembly.Extension.CustomPropertyManager("""").Add3(""代号"", swCustomInfoText, Left(assembly.GetTitle, InStrRev(assembly.GetTitle, "" "") - 1), 1)" dummy = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name).Set("代号代码", s) '为名称代码属性赋值 s = "assembly.Extension.CustomPropertyManager("""").Add3(""名称"", swCustomInfoText,Mid(assembly.GetPathName, InStrRev(assembly.GetPathName, "" "") + 1, InStrRev(assembly.GetPathName, ""."") - InStrRev(assembly.GetPathName, "" "") - 1), 1)" dummy = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name).Set("名称代码", s) '将代号代码和名称代码属性添加到全局变量A和B swEqnMgr.Add2 0, ("""A"" = ""代号代码"""), False swEqnMgr.Add2 0, ("""B"" = ""名称代码"""), False End Sub
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。