C# SolidWorks二次开发-第100篇 属性卡刷新方案

SolidWorks推出属性卡应该很多年了吧,毕竟可以用户自己定义界面,而且方便修改,毕竟点击自带的的属性按钮再去修改要操作好几次。

我们今天讲一个很简单的功能要求,就是在SolidWorks中实现零件的编码问题。

毕竟设计好的东西后面需要生产,进各种系统,进行流转。

需求:

设计在设计模型过程中,在右侧属性编码卡中选择零部件的类型信息,然后在插件中点击一个按钮,根据零部件信息进行编码,编码完成后要直接显示在属性编辑卡片中。

由于我能力有限,编码功能应该做不出来,我就画个示意吧。

然后常规的分解一下:

点击编码功能按钮->读取当前零件类型属性->弹出编码框->点击编码->取码->写属性到零件中->刷新属性卡

前面这些操作呢,可能也还有一些问题的,比如,用户选了,但是还没有点应用按钮,这时可能就需要重新在界面上选一次了。

当前这不是我们今天的重点内容,重点内容是,api里面就没提供刷新属性卡的功能。当然其实也是重新加载属性卡而已。

经过我的测试,发现零件下面只有切换右侧的TaskPane栏,会重新加载属性值进来。

装配体下面的话是可以清空选择之后 ,再选择特征树中的名称,也会重新加载选中零件的属性值 (这次不考虑)。

那我们就去api中找相关的api

那基本上伪代码就可以是这样了

csharp 复制代码
                if(swApp.IActiveDoc2!=null)
                {
                    var swModel= swApp.IActiveDoc2;
                    if (swModel != null)
                    {
                                        
                        var configName = swModel.ConfigurationManager.ActiveConfiguration.Name;

                        var swConfig = (Configuration)swModel.GetConfigurationByName(configName);

                        var manger = swModel.Extension.CustomPropertyManager[configName];
        
                        //增加一个属性到此配置
                        manger.Add3("零件部件编码", (int)swCustomInfoType_e.swCustomInfoText, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"), (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue);
                        swApp.ActivateTaskPane(1);  //切换到库特征,当然也可能 改成别的。
                        swApp.ActivateTaskPane(5);  //重新切回属性卡          

                    }

                } 

我这里只是示意一下,真正的编码逻辑还是要告各位去实现了哈

基本上就结束了,留个思考题。

能否不需要去点编码按钮,在设计改完零部件类型等相关属性之后 ,在他点完应用,就自动去编码,让用户无感操作?

相关推荐
Code Warrior4 分钟前
【每日算法】专题五_位运算
开发语言·c++
沐知全栈开发2 小时前
HTML DOM 访问
开发语言
脑袋大大的3 小时前
JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
开发语言·javascript·性能优化
二进制person4 小时前
Java SE--方法的使用
java·开发语言·算法
OneQ6665 小时前
C++讲解---创建日期类
开发语言·c++·算法
码农不惑5 小时前
2025.06.27-14.44 C语言开发:Onvif(二)
c语言·开发语言
Coding小公仔7 小时前
C++ bitset 模板类
开发语言·c++
小赖同学啊7 小时前
物联网数据安全区块链服务
开发语言·python·区块链
shimly1234567 小时前
bash 脚本比较 100 个程序运行时间,精确到毫秒,脚本
开发语言·chrome·bash