需求
DOTD工具是用于设置材料的汇料开关属性,属性有两个Mtocomponent和Mtotube,当Mtocomponent设置为DOTD时,该材料在抽取材料表的时候会被忽略,当Mtotube设置为DOTD时,该材料出口直管段在抽取材料的时候会被忽略,我按照这个思路做了一个DOTD工具(模块)。
因为我想把之前的MTO工具做成一个工具集,因此我做了三件事,第一是把名字由MTO Tools改为Pipeline Tools,第二是把新加功能作为子功能模块放在Pipeline工具集里,第三是增加用户设置功能,原来只能添加PIPE到list列表,现在可以根据用户的设置来决定在list列表里添加PIPE还是BRAN,因为DOTD值处理时是以bran为单位进行的,增加用户设置功能提高了软件的灵活性和扩展性,为将来更多功能需要不同类型的list数据做好准备。
思路
以仪表处理距离
//遍历bran的member
foreach (DbElement db in members)
{
DbElementType dbType = db.GetElementType(); //当前元素的数据类型
TBrItemsDotdRecord drInSpco = new TBrItemsDotdRecord(); //函数返回值对象
if (dbType == DbElementTypeInstance.INSTRUMENT) //如果是仪表
{
string menberType0 = db.GetString(DbAttributeInstance.MTOC); //求仪表的MTOC属性
if (menberType0 == string.Empty) //判断MTOC的值,如果是empty,修改为DOTD
{
//设置元素db的MTOC和MTOT属性(Service层函数),并将经过处理元素信息返回
drInSpco = mc.setDbElementDOTD(db,
BrItemsDOTDService.ENDPOINT.H, //仪表件不需要ENDPOINT属性,全部默认为H
BrItemsDOTDService.MTOVALID.DOTD,
BrItemsDOTDService.MTOVALID.DOTD);
if (drInSpco != null) //行记录不为空,写入结果集list
{ BrItemList.Add(drInSpco); }将返回的元素信息加入数据集
}
//判断其它内容
1.是否同时虚配对法兰垫片
2.如果是同时,仪表两端夹的是不是配对法兰和垫片
3.如果是,执行虚处理
4.如果不是,说明仪表该面对接的不是垫片和法兰,应当跳过
...
}
}
演示效果
图1 DOTD功能界面
效果演示
图2 虚所有材料
图3 虚仪表并显示结果集
图4 仪表被虚掉
图5 虚仪表同时虚配对法兰
末端法兰的MTOT属性应该为空,不要设置成DOTD
图6 恢复被虚的仪表
图7 虚管嘴配对法兰垫片
多显示一列,表识管线的Head和Tail
图8 虚管嘴配对法兰垫片的策略选择
图9 用户自定义设置
图10 用户自定义属性配置文件
总结和后期改进
- 目前值只有一个DOTD,公司还使用了DOTU,目前不知道作用是什么,有待学习;
- 让功能更加灵活,可设置的虚材料条件更多,增加对一种或几种材料的专门处理功能,材料种类范围可以设置;
- 优化程序,减少元件遍历时,对无关元件的操作,提高效率。
- 验证了PDMS二次开发的程序可以依靠配置文件(例如xml文件)实现软件功能的可设定性,增强了软件的灵活性,配置文件损坏丢失时,可以自动一键恢复,提高程序的健壮性。
欢迎关注公众号,一起讨论数字化工厂和全生命周期材料管理知识