最近工作中可能要针对特征库额外加一些属性,所以就有了今天的博客内容。

之前我也没有使用过相关的东西,只是在其他地方看到过有这个东西,solidworks api里面对应的名字是Attribute。

记录一下过程: 希望对新手有所帮助。

在本地api中搜索关键字后得到以下结果 :

在这里插入图片描述

因为之前 没有用过,就大概浏览一下,Create 这个关键字,进去之后

在这里插入图片描述

下面有对应的示例,

1。 创建:

在这里插入图片描述

  1. 增加属性到特征,并且可以被库特征包含。在这里插入图片描述

    根据我的实际情况,第二个示例比较适合我的情况。

    在没准备好vs的环境下,先用VBA的示例看下效果,合适的话,再参考C#的代码写。

    下面是具体步骤:

  2. 按示例的要求先创建好零件 在这里插入图片描述

    首先画一个矩形拉伸,然后做一个槽切除,并且名字一定要为Cut-Extrude1

    所以如下图就可以了: 在这里插入图片描述

  3. 调出宏工具条:

    在这里插入图片描述

  4. 录制一个新的空宏文件,操作如下:



    这样我们就得到了一个简单的宏文件:

    在这里插入图片描述

  5. 把这里面的文字全部删除,替换成刚才我们查到的api帮助中示例的代码:

    6

  6. 在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下载,老朋友都知道地方。