电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-2317

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

需求:

目前的集成插件没有支持到的CAD种类或版本,如何进行二次开发


方案:

目前没有开放正式的二开接口,但是可以借用现有已支持的CAD类型的业务模型进行二次开发,达到与PLM对接的目的,后续我们也将开放一些标准扩展性好的接口(敬请期待!)。

参考不同CAD的API接口开发文档选择适当的开发语言和工具,这里以AutoCAD插件开发为例进行说明,选用开发语言是C#。


Step1: 创建CAD插件的二开新项目

https://vip.kingdee.com/article/376001586327215360?productLineId=1&isKnowledge=2

Step2: 创建CAD接口的访问类-2D

https://vip.kingdee.com/article/376002902970249216?productLineId=1&isKnowledge=2

Step2: 创建CAD接口的访问类-3D

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客户端所返回的消息在消息接收事件的方法中进行处理

15.webp


接收消息处理事件方法TcpClient_ReceiveCompleted,如下图,接收事件的e.Data将携带PLM客户端返回的序列化数据,

将其反序列化为 CadDataModel对象后,针对不同的操作(如标题栏编辑,通过CadCommand进行匹配),使用返回的数据编程调用CAD的API接口对CAD文档进行操作(如将数据写入CAD文档属性中)

16.webp




///参考代码
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)

需求:目前的集成插件没有支持到的CAD种类或版本,如何进行二次开发方案:目前没有开放正式的二开接口,但是可以借用现有已支持的CAD类型的...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信