MES系统使用C#对SolidWorks图纸转换并浏览器在线查看

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图纸和平面图纸在浏览器中查看。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值