最近工作中可能要针对特征库额外加一些属性,所以就有了今天的博客内容。
之前我也没有使用过相关的东西,只是在其他地方看到过有这个东西,solidworks api里面对应的名字是Attribute。
记录一下过程: 希望对新手有所帮助。
在本地api中搜索关键字后得到以下结果 :
因为之前 没有用过,就大概浏览一下,Create 这个关键字,进去之后
下面有对应的示例,
1。 创建:
-
增加属性到特征,并且可以被库特征包含。
根据我的实际情况,第二个示例比较适合我的情况。
在没准备好vs的环境下,先用VBA的示例看下效果,合适的话,再参考C#的代码写。
下面是具体步骤: -
按示例的要求先创建好零件
首先画一个矩形拉伸,然后做一个槽切除,并且名字一定要为Cut-Extrude1
所以如下图就可以了: -
调出宏工具条:
-
录制一个新的空宏文件,操作如下:
这样我们就得到了一个简单的宏文件:
-
把这里面的文字全部删除,替换成刚才我们查到的api帮助中示例的代码:
-
在VBA界面上直接按F5 ,启动则提示,点击运行即可。
这里也可以把鼠标定位到main主函数中, 按F5就直接运行了,不会出现这个提示。
运行过后,我们就可以看到solidworks中多了一个叫TestAttribute的东西显示在特征树中了。同时下方的立即窗口中也会有一些信息显示 。
(如果没有看到立即窗口,可以从上面的视图中点击出来,或者按Ctrl+G来显示 )
下面是代码,我们来分析一下:
Set swApp = Application.SldWorks 连接此solidworks
Set swModel = swApp.ActiveDoc 获取当前文件
Set swModelDocExt = swModel.Extension 模型扩展
Set swSelectionMgr = swModel.SelectionManager 选择管理器
' Create attribute 创建一个属性的定义
Set swAttributeDef = swApp.DefineAttribute("TestPropagationOfAttribute")
bool = swAttributeDef.AddParameter("TestAttribute", swParamTypeDouble, 2#, 0) 增加一个属性值
bool = swAttributeDef.Register 注册
' Select the feature to which to add the attribute 选择要附加属性的特征, 这里选择中的是Cut-Extrude1 ,这就是为什么在前提条件下会说明特征名称要为Cut-Extrude1的原因。
bool = swModelDocExt.SelectByID2("Cut-Extrude1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Set swFeature = swSelectionMgr.GetSelectedObject6(1, -1) 把选中的对象转特征
Debug.Print ("Name of feature to which to add attribute: " & swFeature.Name)
' Add the attribute to one of the feature's faces 把属性附加到特征的一个面上。
Faces = swFeature.GetFaces 获取特征的所有面
Set swFace = Faces(0) 得到第一个面
Set swAttribute = swAttributeDef.CreateInstance5(swModel, swFace, "TestAttribute", 0, swAllConfiguration) 创建属性
swAttribute.IncludeInLibraryFeature = True 设置属性包括在库特征中
Debug.Print ("Include attribute in library feature? " & swAttribute.IncludeInLibraryFeature)
Debug.Print ("Name of attribute: " & swAttribute.GetName)
' Add the attribute to one of the feature's faces
Set swParameter = swAttribute.GetParameter("TestAttribute") 读取之前设定的属性值
Debug.Print ("Name of parameter: " & swParameter.GetName)
swModel.ForceRebuild3 (False) 重建模型
这里代码的解释基本完成了,大概了解了一下属性的创建过程。
上面还提到了如何验证属性包含在库中的过程:
我测试是没有问题的,图标中带了个L
下次调用库特征的时候,里面就会多一个属性了,这里只是入门,就写到这里。
后面我们只需要参C# 的示例写,或者在只有vba代码的情况参考着写就可以了。
虽然这只是一个Attribute的示例,这也是一个所有功能如何学习使用的过程,基本上都可以按这个步骤来。
如果英文实在看不懂的,可以在浏览器中看官方的在线帮助,网页上可以直接翻译成中文。
虽然内容全部在上面了,还是贴个图吧:
源代码请到码云或者github下载,老朋友都知道地方。