C# SolidWorks 二次开发 API ---附加属性Attribute的入门

最近工作中可能要针对特征库额外加一些属性,所以就有了今天的博客内容。
之前我也没有使用过相关的东西,只是在其他地方看到过有这个东西,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下载,老朋友都知道地方。

猜你喜欢

转载自blog.csdn.net/zengqh0314/article/details/109240411