好久没更新了,今天来小更一下,内容是前段时间小编的一位读者问的关于SolidWorks方程式的问题,话不多说,我们开始吧!拿到这个题,涌入脑海的是要先获取到SolidWorks的方程式管理器,代码如下:import win32com.clientswApp=win32com.client.Dispatch("SldWorks.Application")swApp.CommandInProgress = TrueswApp.Visible = TrueswModel=swApp.ActiveDocequMgr=swModel.GetEquationMgr # 获取方程式管理器
前四行代码还是先连接到SolidWorks软件,而GetEquationMgr是操作方程式的关键,没有它就无法对方程式进行一系列的发号施令。第一个走来的是Add2增加命令和Delete删除命令,使用方式如下:# 索引编号都说从0开始equMgr.Add2(0,'"a"=30',False) # 在第一个位置增加一个全局变量a,值为30equMgr.Delete(0) # 删除第一个方程式
简单的两行就实现的变量的增加和删除,对于删除命令是最简单的,只需要提供要删除方程式的位置索引就可以了;而增加的话除了提供索引还要提供方程表达式和一个辅助参数(True或者False,表示是否立即解出方程),需要注意的就是第二个表达式参数了,上面代码中是全局变量的格式,一般用这个就足够了,其余格式可参考帮助文档,另外注意外层是单引号。还有一点,增加方程式时第三个参数设置为False,则需要使用EvaluateAll命令才能解出方程,为保险起见,不管设置True还是False使用Add2命令后都加上EvaluateAll命令对所有方程进行评估解出,EvaluateAll使用方式如下。solve=equMgr.EvaluateAll # 评估解出所有方程式
先说命令再说用法,Equation命令用来获取或者设置方程式,Value只获取方程式的值。代码如下:equMgr.Equation(0,'"a"=60') # 将第一个全局变量a的值设为60equMgr.Equation(0) # 获取第一个方程表达式equMgr.Value(0) # 获取第一个方程式的值
Value只需要设置想要获取的方程式的值的索引位置就行了,简单;Equation获取方程式时同Value一样简单,设置方程式也就多了一个参数而已,而这个参数上面刚涉及,就是方程表达式,代码中是把a的值改成了60,也可以把a改为其他变量,如b,可以说想怎么改就怎么改!equ_count = equMgr.GetCount
还有一些用得到的命令如GlobalVariable(判断是否是全局变量)、LinkToFile(链接到外部文件)、AutomaticRebuild(是否设置自动重建)等,我们留在下一篇再揭晓吧!import win32com.clientswApp=win32com.client.Dispatch("SldWorks.Application")swApp.CommandInProgress=TrueswApp.Visible=TrueswModel=swApp.ActiveDocequMgr=swModel.GetEquationMgr # 获取方程式管理器equMgr.Add2(0,'"a"=30',False) # 在第一个位置增加一个全局变量a,值为30equMgr.Add2(1,'"b"=60',False) # 在第二个位置增加一个全局变量b,值为60equMgr.Equation(0,'"a"=60') # 将第一个全局变量a的值设为60equMgr.Delete(0) # 删除第一个方程式solve=equMgr.EvaluateAll # 评估解出所有方程式print(equMgr.Equation(0)) # 获取第一个方程表达式print(equMgr.Value(0)) # 获取第一个方程式的值print(equMgr.GetCount) # 获取方程式总数量swModel.ForceRebuild3(True) # 重建零件