1.MES项目实施中,需要与外围其它系统实现集成,例如与PLM集成在线实时查看图纸、与ERP集成接受物料主数据、生产计划等数据、与CAPP集成接受工艺和工序配置数据、与WMS集成推送物料齐套和领料数据等;
2.本文主要介绍与达索PLM系统集成,通过MES的物料管理、生产执行等页面在线查看PLM系统中发布3D图纸和平面图纸;
3.通过学习研究达索PLM系统,对图纸实现定时或者业务驱动把SLDPRT/SLDDRW/SLDASM等格式图纸转换为浏览器可直接预览查看的scs文件,下面实时的主要代码;
4.注意:由于PLM源图纸库是散列后的文件存储,其图纸名称与实际Solidworks命名命名名称不一致,需要做处理;
(1)查找PLM源图纸库,对图库实现图纸文件遍历
private void Director(string dir)
{
DirectoryInfo d = new DirectoryInfo(dir);
FileSystemInfo[] fsinfos = d.GetFileSystemInfos();
foreach (FileSystemInfo fsinfo in fsinfos)
{
//判断是否为文件夹
if (fsinfo is DirectoryInfo)
{
Director(fsinfo.FullName);
}
//输出文件的全部路径
else
{
if (fsinfo.Extension.ToUpper() == ".SLDASM" || fsinfo.Extension.ToUpper() == ".SLDPRT")
{
string drawfile = fsinfo.FullName;
string scsfile = GetDrawName(fsinfo.Extension, fsinfo);
if (scsfile != "")
{
string scsname = "3D" + scsfile;
if (IsCreateSCS(fsinfo, scsname))
{
backgroundWorker.ReportProgress(count);
string exeparas = "\"" + drawfile + "\" " + "\"" + scspath + scsname + ".scs\"";
StartProcess(exeparas);
count++;
}
}
}
if (fsinfo.Extension.ToUpper() == ".SLDDRW")
{
string drawfile = fsinfo.FullName;
string scsfile = GetDrawName(fsinfo.Extension, fsinfo);
if (scsfile != "")
{
string scsname = "2D" + scsfile;
if (IsCreateSCS(fsinfo, scsname))
{
backgroundWorker.ReportProgress(count);
string exeparas = "\"" + drawfile + "\" " + "\"" + scspath + scsname + ".scs\"";
StartProcess(exeparas);
count++;
}
}
}
}
}
}
(2)对于符合条件的图纸文件,遍历目录下xml文件,并获取图纸名称
//获取文件名称
private string GetDrawName(string extension, FileSystemInfo fsinfo)
{
//获取目录下xml文件
DirectoryInfo Dir = new DirectoryInfo(Path.GetDirectoryName(fsinfo.FullName));
foreach (FileInfo xmlfile in Dir.GetFiles("index.xml", SearchOption.TopDirectoryOnly))
{
if (xmlfile != null)
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlfile.FullName);
XmlNodeList nodes = doc.DocumentElement.ChildNodes;
foreach (XmlNode node in nodes)
{
if (node.Name == "filename")
{
string scsname = node.InnerText;
if (scsname.StartsWith("1") || scsname.StartsWith("4"))
{
//return scsname.Replace(extension, "");
string materialname = scsname.Replace(extension, "");
return GetDrawNo(materialname);
}
}
}
}
}
return "";
}
(3)调用PLM内置转换命令,实现循环转换
public void StartProcess(string exeparas)
{
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo(exepath, exeparas);
process.StartInfo = startInfo;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
Thread.Sleep(2000);
}
以上内容是主要代码实现,图纸转换并提供URL供MES系统使用,MES系统操作打开图纸传递图纸号,查找到对应图纸,下图是3D图纸和平面图纸在浏览器中查看。