AVEVA MARINE C# 程序执行MarJobLauncher工作
手工执行的话一般如此操作,例如分离零件等操作
今天利用c# 介绍下AM如何用代码执行提取零件gen文件的过程
引用如下的库文件
封装的类库
其中appname/shortname/appExecutable这些去下面的文件去查找
C:\AVEVA\Marine\OH12.1.SP4\MarJobs.xml
public static class MarJobEx { public static string appName = "Hull Plate Interface"; public static string appShort_name = "tbrplateint"; /// <summary> /// 按照零件名称提取gen文件 /// </summary> /// <param name="Plates"></param> /// <param name="passWord"></param> /// <returns></returns> public static List<FileInfo> HullPlatePartsInterFace(this IEnumerable<string> Plates, string passWord) { // MDB.CurrentMDB.GetWork(); //var job = ExportOutHullMarJobs().First(j => j.executable == HullPlateInterface); var pro = Aveva.Pdms.Database.Project.CurrentProject; var mdb = Aveva.Pdms.Database.MDB.CurrentMDB; MarJob mj = new MarJob() { Project = pro.Name, MDB = mdb.Name, User = pro.UserName, Password = passWord }; mj.Create(appName); Aveva.Marine.Utility.MarUtil util = new Aveva.Marine.Utility.MarUtil(); var datDir = util.TBEnvironmentGet("SB_SHIPDATA"); util.Dispose(); StringBuilder sb = new StringBuilder(); Plates.ToList().ForEach(c => sb.AppendLine($"PLATE,'{c}';")); string cmdstr = sb.ToString(); var fn = Path.Combine(datDir, $"{appShort_name}_{mj.JobId}.dat"); File.WriteAllText(fn, cmdstr); mj.AddInput(fn); Aveva.Marine.UI.GeneralViewLogViewer cmd = new Aveva.Marine.UI.GeneralViewLogViewer(); if (!NotifyHelper.LogViewerRunning()) cmd.Execute(); mj.Run(false); var dats = mj.Outputs.Cast<string>().FirstOrDefault(c => c.EndsWith(".dat")); var fls = File.ReadAllLines(dats).Where(c => File.Exists(c)); return fls.Select(c => new FileInfo(c)).ToList(); } /// <summary> /// 按照装配提取 /// </summary> /// <param name="curAss"></param> /// <param name="passWord"></param> /// <returns></returns> public static List<FileInfo> HullPlatePartsInterFace(this List<DbElement> curAssOrBlockEle, string passWord) { var strs = curAssOrBlockEle.Select(c=>c.GetAsString(DbAttributeInstance.NAMN)); MDB.CurrentMDB.GetWork(); //var job = ExportOutHullMarJobs().First(j => j.executable == HullPlateInterface); var pro = Aveva.Pdms.Database.Project.CurrentProject; var mdb = Aveva.Pdms.Database.MDB.CurrentMDB; MarJob mj = new MarJob() { Project = pro.Name, MDB = mdb.Name, User = pro.UserName, Password = passWord }; mj.Create(appName); Aveva.Marine.Utility.MarUtil util = new Aveva.Marine.Utility.MarUtil(); var datDir = util.TBEnvironmentGet("SB_SHIPDATA"); util.Dispose(); var cmdstrs = curAssOrBlockEle.Select(c=>$"{(c.GetActualType().Name == "ASMBLY" ? "ASSEMBLY" : "BLOCK")},'{c.GetAsString(DbAttributeInstance.NAMN)}';").ToArray(); var fn = Path.Combine(datDir, $"{appShort_name}_{mj.JobId}.dat"); File.WriteAllLines(fn, cmdstrs); mj.AddInput(fn); Aveva.Marine.UI.GeneralViewLogViewer cmd = new Aveva.Marine.UI.GeneralViewLogViewer(); if (!NotifyHelper.LogViewerRunning()) cmd.Execute(); mj.Run(false); var dats=mj.Outputs.Cast<string>().FirstOrDefault(c => c.EndsWith(".dat")); var fls = File.ReadAllLines(dats).Where(c => File.Exists(c)); return fls.Select(c => new FileInfo(c)).ToList(); } }
标签:
AVEVA MARINE C#
, 船体生产设计
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2022-05-01 AVEVE MARINE 二次开发之插件管理器
2022-05-01 AutoCAD VBA部署方案分享