星空PLM与(2D/3D)CAD集成的二次开发方法(3)

需求:
目前的集成插件没有支持到的CAD种类或版本,如何进行二次开发
方案:
目前没有开放正式的二开接口,但是可以借用现有已支持的CAD类型的业务模型进行二次开发,达到与PLM对接的目的,后续我们也将开放一些标准扩展性好的接口(敬请期待!)。
参考不同CAD的API接口开发文档选择适当的开发语言和工具,这里以AutoCAD插件开发为例进行说明,选用开发语言是C#。
https://vip.kingdee.com/article/376001586327215360?productLineId=1&isKnowledge=2
https://vip.kingdee.com/article/376002902970249216?productLineId=1&isKnowledge=2
https://vip.kingdee.com/article/376003123472522496?productLineId=1&isKnowledge=2
Step3: 创建PLM接口通信交互类
Step4: 安装部署CAD插件
=======================================================
Step3: 创建PLM接口通信交互类
与CAD插件与PLM系统通过Socket来进行数据通信,只需继承Kingdee.K3.PLM.Integration.Common.dll 中的 SocketCommonManager 类就可以很简单地使用父类中封装好的方法跟PLM客户端进行通信。
(PS:如果出于某种原因无法引用Kingdee.K3.PLM.Integration.Common.dll 组件,也可以自己创建异步Socket Client端与PLM系统进行通信,此时PLM系统作为Socket服务端,默认监听端口:23457。服务端读取数据时:数据流前4个字节记录数据长度,从第5个字节处开始取数据信息。服务端发送消息的规则与此相同)
创建一个派生于SocketCommonManager的类
针对不同的操作创建不同的方法,下图以导入文档操作为例,在方法中构建通信模型CadDataModel对象并序列化为Json后通过Socket与PLM客户端进行通信。PLM客户端所返回的消息在消息接收事件的方法中进行处理

接收消息处理事件方法TcpClient_ReceiveCompleted,如下图,接收事件的e.Data将携带PLM客户端返回的序列化数据,
将其反序列化为 CadDataModel对象后,针对不同的操作(如标题栏编辑,通过CadCommand进行匹配),使用返回的数据编程调用CAD的API接口对CAD文档进行操作(如将数据写入CAD文档属性中)

///参考代码
public class SocketClientManager:SocketCommonManager
{
_2DCadManager cadManager;
public override bool SocketConnect()
{
cadManager = new _2DCadManager();
return base.SocketConnect();
}
/// <summary>
/// 导入文档
/// </summary>
public void ImportDoc()
{
try
{
bool isConnect = SocketConnect();
if (isConnect)
{
TcpClient.SendCompleted -= TcpClient_SendCompleted;
TcpClient.ReceiveCompleted += TcpClient_ReceiveCompleted;
string cadFilePath = string.Empty;
List<CadDataStruct> cadDataStructs = cadManager.GetCadDataStructs(cadFilePath);
CadDataModel cadDataModel = new CadDataModel()
{
CadType = CadType.AutoCAD,
CadDataStructs = cadDataStructs,
IsGenerateVirtualName = true,
CadCommand= CadCommand.ImportDoc
};
string json = JsonConvert.SerializeObject(cadDataModel);
byte[] readdata = Encoding.UTF8.GetBytes(json);
Send(readdata);
}
}
catch (Exception ex)
{
}
星空PLM与(2D/3D)CAD集成的二次开发方法(3)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



