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

需求:
目前的集成插件没有支持到的CAD种类或版本,如何进行二次开发
方案:
目前没有开放正式的二开接口,但是可以借用现有已支持的CAD类型的业务模型进行二次开发,达到与PLM对接的目的,后续我们也将开放一些标准扩展性好的接口(敬请期待!)。
参考不同CAD的API接口开发文档选择适当的开发语言和工具,这里以AutoCAD插件开发为例进行说明,选用开发语言是C#。
https://vip.kingdee.com/article/376001586327215360?productLineId=1&isKnowledge=2
Step2: 创建CAD接口的访问类-2D
https://vip.kingdee.com/article/376003123472522496?productLineId=1&isKnowledge=2
https://vip.kingdee.com/article/376003526830616064?productLineId=1&isKnowledge=2
Step4: 安装部署CAD插件
=======================================================
Step2: 创建CAD接口的访问类
这个类的主要职责是通过CAD软件开发的接口,获取CAD图纸上的相关属性数据,如AUTOCAD标题栏中的编码、名称等属性,SolidWorks文件中所配置的属性信息。使用这些属性构建每一个CadDataStruct对象(每个CadDataStruct对象代表一个文档的数据结构),最终将整个文档组中所有文档对象集合整合到 CadDataModel 对象中,并序列化为Json格式,通过Socket与 PLM客户端进行通信(Step3介绍与PLM通信的部分)
1)、2D类型CAD:
参考CAD的二次开发教程或者API接口文档, 引用CAD的API接口组件(下图示例AutoCAD二开引用组件)。如无需引用组件则跳过这个步骤

创建CAD的API接口访问类。
创建 文档标题栏 数据结构获取的方法,2D文档的标题栏视为一份文档信息,对应一个CadDataStruct对象

创建 文档明细栏 数据结构获取的方法,2D文档的明细栏中每条明细信息都视为一份文档信息对应一个CadDataStruct对象,所以整个明细栏信息将对应一个CadDataStruct的列表

将 标题栏 与 明细栏 进行整合

参考代码
public class _2DCadManager
{
#region 2D文档数据结构获取
/// <summary>
/// 获取标题栏 数据结构--二开实现
/// </summary>
/// <param name="cadFilePath"></param>
/// <returns></returns>
public CadDataStruct GetCadTitleDataStruct(string cadFilePath)
{
///1、TODO:二开--通过CAD的API接口获取到标题栏各个属性信息
Dictionary<string, string> titleProper = new Dictionary<string, string>() {
//{"PartNO","标题栏编码" },//例如
//{ "PartName","标题栏名称"}
};
//2、创建标题栏数据结构实体对象
CadDataStruct titlDatastruct = new CadDataStruct()
{
DicPropertyInfos = titleProper,//复制将标题栏块数据
CadType = CadType.AutoCAD,//2D类型的CAD进行二开时,建议借用 AutoCAD 的CAD类型,并沿用此CAD的业务判断
IsRoot = true,//标题栏为根文件数据
FileLevel = CadFileLevel.Normal,
FileHash = RegistryHelper.GetFileSHA1(cadFilePath)
};
if (!string.IsNullOrWhiteSpace(cadFilePath))
{
if (File.Exists(cadFilePath))
{
FileInfo cadFileInfo = new FileInfo(cadFilePath);
titlDatastruct.Size = cadFileInfo.Length;
titlDatastruct.FileName = cadFileInfo.Name;
titlDatastruct.DirectoryPath = cadFileInfo.DirectoryName;
titlDatastruct.LastWriteTime = cadFileInfo.LastWriteTime;
titlDatastruct.CreationTime = cadFileInfo.CreationTime;
}
else
{
titlDatastruct.FileName = cadFilePath;
}
}
return titlDatastruct;
}
/// <summary>
/// 获取明细栏 数据结构-- 二开实现
/// </summary>
/// <returns></returns>
public List<CadDataStruct> GetCadBomDataStruct()
{
List<CadDataStruct> bomStructs = new List<CadD星空PLM与(2D/3D)CAD集成的二次开发方法(2-1)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



