SP3D开发-如何通过名称找到一个工厂对象

SP3D相对于PDMS一个重大缺陷,就是没有一个简单的脚本语言、简单的开发方式,比如在PDMS中使用“$!Name”就可以定位某个管件,进行属性设置,非常方便。那么在S3D中,该如何用同样方便的方式进行属性修改和属性批量修改呢?我们首先需要找到这个对象。
1、S3D开发的方法
S3D的开发有三种,SQL、COM及.Net,我们这里推荐采用.Net,因为SQL直接进行数据库层面操作,安全性不高;COM是微软三十年前的技术,现在已经不再维护了;.Net拥有丰富的开发库,可以非常高效快捷的开发出我们需要的程序,除了一点不便,那就是调试太麻烦。S3D的引用库在…\Smart3D\Core\Container\Bin\Assemblies\Release文件夹下,常用的如下图所示:
在这里插入图片描述
一般需要添加以下文件头:
using Ingr.SP3D.Common.Client;
using Ingr.SP3D.Common.Client.Services;
using Ingr.SP3D.Common.Middle;
using Ingr.SP3D.Common.Middle.Services;
using Ingr.SP3D.Route.Middle;

2、调用方法
调用方法如下所示,不详细叙述。
在这里插入图片描述
在这里插入图片描述
3、介绍一个工具
上文说过,.Net程序调试非常麻烦,所以笔者开发了3DBox,能让S3D支持以C#为基础的脚本语言开发。3DBox已经内置了S3D的头文件,只需要像写脚本的方式在文件里写入需要操作的内容,让后在3DBox命令行中输入 “run 文件路径”回车即可。
4、代码及运行结果
我们可以通过以下代码或许当前工作控件的所有工厂对象名称:
SP3DConnection oConnection =
ClientServiceProvider.WorkingSet.ActiveConnection;
WorkingSet oWorkingSet = ClientServiceProvider.WorkingSet;
Filter oFilter = new Filter();
BOCollection oWorkingcoll = oWorkingSet.GetObjectsByFilter(oFilter, oConnection);
string name = “”;
foreach (BusinessObject obj in oWorkingcoll)
{
try
{
name = name + obj.GetPropertyValue(“IJNamedItem”, “Name”).ToString() + “\r\n”;
}
catch { }
}
return name;
获取到名称以后,我们可以通过名称匹配或者名称正则表达式匹配等方法找到想要定位的对象,下一步就可以对对象进行操作了。
运行结果如下图所示:

在这里插入图片描述
关注微信公众号 数智化工 了解更多!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值