c# aveva marine 批量导出图纸到dxf格式
获取图纸数据库
查看代码
public static Dictionary<string,List<DbElement>> GetDbElements(DbType dbtype) { Dictionary<string, List<DbElement>> rtn = new Dictionary<string, List<DbElement>>(); Aveva.Pdms.Database.MDB mdb = Aveva.Pdms.Database.MDB.CurrentMDB; var dbs = mdb.GetDBArray(dbtype); foreach (var item in dbs) { rtn[item.Name] = item.WorldMembers().ToList(); } return rtn; }
查看代码
public List<DbElement> GetDrawingsDB() { var designs = DbExtension.GetDbElements(Aveva.Pdms.Database.DbType.Draft); return designs.Values.First().Where(c => c.GetActualType() == DbElementTypeInstance.DEPT).ToList(); }
获取某一数据库的图纸
查看代码
public List<DbElement> GetDrawings(string dbName) { var dwgs = new List<DbElement>(); var db = DbElement.GetElement(dbName.StartsWith("/")?dbName: "/"+dbName); var regis = db.Members().Where(c => c.GetActualType() == DbElementTypeInstance.REGISTRY); foreach (var item in regis) { if (item.FirstMember() != null) { var curRegDwgs = item.Members().Where(d => d.GetActualType() == DbElementTypeInstance.DRWG); if (curRegDwgs.Any()) dwgs.AddRange(curRegDwgs.ToList()); } } return dwgs.Where(d=>!d.IsNull).ToList(); }
主函数
查看代码
AMHullEnv AmEnv = new AMHullEnv(); try { var dwgTypes = AmEnv.GetDrawingsDB().Select(c => c.GetAsString(DbAttributeInstance.NAMN)).ToList(); //dwgTypes.ToCSVFile($@"C:\{dwgTypes.First().GetType().FullName}.csv"); MarStringlist strs = new MarStringlist(); dwgTypes.ForEach(c => strs.AddString(c)); var ints = AmEnv.Ui.StringSelect("选择数据库", "select DataBank to save drawing", "", strs); if (ints[0] == AmEnv.MarUtil.Ok()) { var dwgType = dwgTypes.First(c => c == strs[ints[1] - 1]); var dwgs = AmEnv.GetDrawings(dwgType); if (dwgs != null) { wm.StatusBar.Text = dwgType.ToString(); foreach (var item in dwgs) { try { var dwgName = item.GetAsString(DbAttributeInstance.NAMN).Replace("/" + item.GetAsString(DbAttributeInstance.TYPE), ""); //var curDwgName = AmEnv.DraftApp.DwgNameGet(); if (AmEnv.DraftApp.DwgCurrent()) AmEnv.DraftApp.DwgClose(); AmEnv.DraftApp.DwgOpen(dwgName); var dxfName = $@"C:\{dwgType}_{item.GetAsString(DbAttributeInstance.OWNER).Replace("/", "")}_{dwgName}.dxf"; AmEnv.DraftApp.DwgDxfExport(dxfName); //AmEnv.DraftApp.DwgWmfExport(Path.ChangeExtension(dxfName, ".wmf")); AmEnv.DraftApp.DwgClose(); } catch (Exception ex) { AmEnv.Ui.MessageNoConfirm(ex.StackTrace); continue; } } } else AmEnv.Ui.MessageNoConfirm(dwgType + "数据库下无任何图纸!"); } else AmEnv.Ui.MessageNoConfirm("未选择到数据库!"); } catch (Exception ex) { wm.StatusBar.Text = ex.StackTrace; }
效果见视频
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具