SolidWorks推出属性卡应该很多年了吧,毕竟可以用户自己定义界面,而且方便修改,毕竟点击自带的的属性按钮再去修改要操作好几次。
我们今天讲一个很简单的功能要求,就是在SolidWorks中实现零件的编码问题。
毕竟设计好的东西后面需要生产,进各种系统,进行流转。
需求:
设计在设计模型过程中,在右侧属性编码卡中选择零部件的类型信息,然后在插件中点击一个按钮,根据零部件信息进行编码,编码完成后要直接显示在属性编辑卡片中。
由于我能力有限,编码功能应该做不出来,我就画个示意吧。
然后常规的分解一下:
点击编码功能按钮->读取当前零件类型属性->弹出编码框->点击编码->取码->写属性到零件中->刷新属性卡
前面这些操作呢,可能也还有一些问题的,比如,用户选了,但是还没有点应用按钮,这时可能就需要重新在界面上选一次了。
当前这不是我们今天的重点内容,重点内容是,api里面就没提供刷新属性卡的功能。当然其实也是重新加载属性卡而已。
经过我的测试,发现零件下面只有切换右侧的TaskPane栏,会重新加载属性值进来。
装配体下面的话是可以清空选择之后 ,再选择特征树中的名称,也会重新加载选中零件的属性值 (这次不考虑)。
那我们就去api中找相关的api
那基本上伪代码就可以是这样了
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); //重新切回属性卡
}
}
我这里只是示意一下,真正的编码逻辑还是要告各位去实现了哈
基本上就结束了,留个思考题。
能否不需要去点编码按钮,在设计改完零部件类型等相关属性之后 ,在他点完应用,就自动去编码,让用户无感操作?