示例#1
0
        public bool GetAsmIndoFromFile(IEdmVault5 poVault, string filePath, SldAsm asmPrd)
        {
            IEdmFolder5             opParentFolder;
            IEdmFile5               poFile  = poVault.GetFileFromPath(filePath, out opParentFolder);
            IEdmEnumeratorVariable5 enumVar = poFile.GetEnumeratorVariable();

            if (filePath == "")
            {
                return(false);
            }
            asmPrd.path = filePath;
            //
            object tmpVar;

            if (enumVar.GetVar("代号", "@", out tmpVar))
            {
                asmPrd.number = tmpVar.ToString();
                asmPrd.ztdm   = asmPrd.number.Substring(0, asmPrd.number.IndexOf("."));
                asmPrd.zjdm   = asmPrd.number.Substring(asmPrd.number.IndexOf(".") + 1);
            }
            if (enumVar.GetVar("名称", "@", out tmpVar))
            {
                asmPrd.name = tmpVar.ToString();
            }
            if (enumVar.GetVar("设计", "@", out tmpVar))
            {
                asmPrd.bzr = tmpVar.ToString();
            }
            if (enumVar.GetVar("设计日期", "@", out tmpVar))
            {
                asmPrd.bzsj = ((DateTime)tmpVar).ToString("%y/%m/%d");
            }
            if (enumVar.GetVar("批准", "@", out tmpVar))
            {
                asmPrd.pzr = tmpVar.ToString();
            }
            if (enumVar.GetVar("批准日期", "@", out tmpVar))
            {
                asmPrd.pzsj = ((DateTime)tmpVar).ToString("%y/%m/%d");
            }
            if (enumVar.GetVar("阶段标记", "@", out tmpVar))
            {
                asmPrd.jdbj = tmpVar.ToString();
            }

            if (enumVar.GetVar("设备型号", "@", out tmpVar))
            {
                asmPrd.sbxh = tmpVar.ToString();
            }
            if (enumVar.GetVar("Project Name", "@", out tmpVar))
            {
                asmPrd.projName = tmpVar.ToString();
            }
            return(true);
        }
示例#2
0
        static void Main(string[] args)
        {
            WiseUtil wiseUtil        = new WiseUtil();
            string   installLocation = wiseUtil.GetLocalMachineRegistryValue("SOFTWARE\\solidworks\\Applications\\PDMWorks Enterprise\\", "Location");

            System.Console.WriteLine(installLocation);
            if (installLocation == "")
            {
                installLocation = "C:\\";
            }
            string   excelTemplate = installLocation + "ExportTemplate\\template-list.xlsx";
            Workbook templateWb    = wiseUtil.OpenExcel(excelTemplate);

            SldWorks.SldWorks swApp;

            //IEdmVault5 vault = new EdmVault5();
            //vault.LoginAuto("科德研发部");
            swApp = new SldWorks.SldWorks();
            int longstatus   = 0;
            int longwarnings = 0;
            //E:\\wisevault0\\draw\\G20-A01P.SLDDRW
            //F:\\科德研发部\\01-机床整机产品\\01-铣车复合机\\KMC800 系列机型\\02-裸机图纸\\KMC800\\710.14 滑枕组件\\710.1401 滑枕组件装配图基础 A2.SLDDRW
            ModelDoc2          modelDoc = swApp.OpenDoc6("E:\\wisevault0\\draw\\G20-A01P.SLDDRW", (int)swDocumentTypes_e.swDocDRAWING, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly, "", ref longstatus, ref longwarnings);
            BomTableAnnotation bomTableAnno;
            string             configName  = "";
            string             topFileName = "";

            wiseUtil.GetDrawingDocBOMTable(modelDoc, out bomTableAnno, out configName, out topFileName);

            //modelDoc.Close();
            IEdmVault5 poVault = null;
            SldAsm     asmPrd  = wiseUtil.GetAsmIndoFromFile(poVault, topFileName);// new SldAsm();

            if (asmPrd == null)
            {
                return(false);
            }
            //asmPrd.bzr = "hou";
            //asmPrd.bzsj = "2016/1/1";
            wiseUtil.ProcessTableAnn(poVault, bomTableAnno, configName, asmPrd);

            asmPrd.bzr  = "hou";
            asmPrd.bzsj = "2016/1/1";
            wiseUtil.ProcessTableAnn(bomTableAnno, configName, asmPrd);

            wiseUtil.SaveBuyToWorkbook(templateWb, asmPrd);
            wiseUtil.SaveStdToWorkbook(templateWb, asmPrd);
            wiseUtil.SavePrtToWorkbook(templateWb, asmPrd);
            templateWb.SaveAs("D:\\a.xlsx");
            templateWb.Close();
            swApp.ExitApp();

            swApp = null;
        }
示例#3
0
        public bool SaveBuyToWorkbook(Workbook workbook, SldAsm asmPrd)
        {
            int    count       = asmPrd.sldBuyList.Count;
            int    perPageSize = WiseUtil.buyPageSize;//
            string pageName    = WiseUtil.buyStr;

            int       pageSize      = count / perPageSize + (count % perPageSize > 0 ? 1 : 0);
            int       rowStartIndex = 4;
            Sheets    sheets        = workbook.Worksheets;
            Worksheet worksheet     = (Worksheet)sheets.get_Item(pageName);

            if (count <= 0)
            {
                worksheet.Delete();
                return(true);
            }
            List <SldBuy> .Enumerator iEnum = asmPrd.sldBuyList.GetEnumerator();
            Worksheet nextWorksheet         = null;

            for (int pageIndex = 0; pageIndex < pageSize; pageIndex++)
            {
                if (pageIndex < pageSize - 1)//最后一个不能再复制了
                {
                    worksheet.Copy(Type.Missing, worksheet);
                    nextWorksheet = worksheet.Next;
                }
                Range dyn = worksheet.Cells.get_Item("31", "A");// worksheet.Cells.get_Item("25", "A").set_Value(asmPrd.ztdm);
                worksheet.Range["A38"].Value = asmPrd.ztdm;
                worksheet.Range["A44"].Value = asmPrd.zjdm;
                worksheet.Range["E43"].Value = asmPrd.bzr;
                worksheet.Range["H43"].Value = asmPrd.bzsj;
                worksheet.Range["E44"].Value = asmPrd.pzr;
                worksheet.Range["H44"].Value = asmPrd.pzsj;
                if (asmPrd.jdbj == "S")
                {
                    worksheet.Range["K42"].Value = asmPrd.jdbj;
                }
                else if (asmPrd.jdbj == "A")
                {
                    worksheet.Range["L42"].Value = asmPrd.jdbj;
                }
                else if (asmPrd.jdbj == "B")
                {
                    worksheet.Range["M42"].Value = asmPrd.jdbj;
                }
                else
                {
                    worksheet.Range["N42"].Value = asmPrd.jdbj;
                }
                worksheet.Range["K44"].Value = "共 " + pageSize + " 页";
                worksheet.Range["P44"].Value = "第 " + (pageIndex + 1) + " 页";
                worksheet.Range["S44"].Value = asmPrd.sbxh;
                int row = 0;
                while (iEnum.MoveNext())
                {
                    SldBuy prt        = iEnum.Current;
                    int    totalIndex = row + rowStartIndex;
                    worksheet.Range["B" + totalIndex].Value = prt.materialNumber;
                    worksheet.Range["E" + totalIndex].Value = prt.number;
                    worksheet.Range["J" + totalIndex].Value = prt.name;
                    worksheet.Range["O" + totalIndex].Value = prt.amout == 0 ? "" : prt.amout.ToString();
                    worksheet.Range["Q" + totalIndex].Value = prt.material;
                    worksheet.Range["S" + totalIndex].Value = prt.weight == 0 ? "" : prt.weight.ToString();
                    worksheet.Range["T" + totalIndex].Value = prt.totalWeight == 0 ? "" : prt.totalWeight.ToString();
                    worksheet.Range["U" + totalIndex].Value = prt.remark;

                    row++;
                    if (row >= perPageSize)
                    {
                        break;
                    }
                }
                worksheet = nextWorksheet;
            }
            return(true);
        }
示例#4
0
        public bool SavePrtToWorkbook(Workbook workbook, SldAsm asmPrd)
        {
            if (asmPrd.sldPrtList.Count <= 0 && asmPrd.sldStdList.Count <= 0 && asmPrd.sldBuyList.Count <= 0)
            {
                return(true);
            }
            int count       = asmPrd.sldPrtList.Count;
            int perPageSize = WiseUtil.prtPageSize;//
            int pageSize    = count / perPageSize + (count % perPageSize > 0 ? 1 : 0);

            bool insHead = true;

            //空行
            if (insHead)
            {
                SldPrt prt = new SldPrt();
                asmPrd.sldPrtList.Insert(0, prt);
                count++;
            }
            if (insHead && asmPrd.sldStdList.Count > 0)
            {
                SldPrt prt = new SldPrt();
                prt.name = WiseUtil.stdStr;
                int thisCount = asmPrd.sldStdList.Count;
                prt.amout = thisCount / WiseUtil.stdPageSize + (thisCount % WiseUtil.stdPageSize > 0 ? 1 : 0);
                asmPrd.sldPrtList.Insert(0, prt);
                count++;
            }
            if (insHead && asmPrd.sldBuyList.Count > 0)
            {
                SldPrt prt = new SldPrt();
                prt.name = WiseUtil.buyStr;
                int thisCount = asmPrd.sldBuyList.Count;
                prt.amout = thisCount / WiseUtil.buyPageSize + (thisCount % WiseUtil.buyPageSize > 0 ? 1 : 0);
                asmPrd.sldPrtList.Insert(0, prt);
                count++;
            }
            //最初count
            if (insHead && asmPrd.sldPrtList.Count > 0)
            {
                SldPrt prt = new SldPrt();
                prt.name = WiseUtil.prtStr;

                count++;//先加一个

                pageSize  = count / WiseUtil.prtPageSize + (count % prtPageSize > 0 ? 1 : 0);
                prt.amout = pageSize;
                asmPrd.sldPrtList.Insert(0, prt);
            }


            pageSize = count / perPageSize + (count % perPageSize > 0 ? 1 : 0);


            int rowStartIndex = 4;

            Sheets    sheets    = workbook.Worksheets;
            Worksheet worksheet = (Worksheet)sheets.get_Item(WiseUtil.prtStr);

            if (count <= 0)
            {
                worksheet.Delete();
                return(false);
            }
            List <SldPrt> .Enumerator iEnum = asmPrd.sldPrtList.GetEnumerator();
            Worksheet nextWorksheet         = null;

            for (int pageIndex = 0; pageIndex < pageSize; pageIndex++)
            {
                if (pageIndex < pageSize - 1)//最后一个不能再复制了,写sheet前复制,保证模板未被写
                {
                    worksheet.Copy(Type.Missing, worksheet);
                    nextWorksheet = worksheet.Next;
                }
                Range dyn = worksheet.Cells.get_Item("31", "A");// worksheet.Cells.get_Item("25", "A").set_Value(asmPrd.ztdm);
                worksheet.Range["A25"].Value = asmPrd.ztdm;
                worksheet.Range["A31"].Value = asmPrd.zjdm;
                worksheet.Range["E30"].Value = asmPrd.bzr;
                worksheet.Range["H30"].Value = asmPrd.bzsj;
                worksheet.Range["E31"].Value = asmPrd.pzr;
                worksheet.Range["H31"].Value = asmPrd.pzsj;
                if (asmPrd.jdbj == "S")
                {
                    worksheet.Range["K29"].Value = asmPrd.jdbj;
                }
                else if (asmPrd.jdbj == "A")
                {
                    worksheet.Range["M29"].Value = asmPrd.jdbj;
                }
                else if (asmPrd.jdbj == "B")
                {
                    worksheet.Range["O29"].Value = asmPrd.jdbj;
                }
                else
                {
                    worksheet.Range["R29"].Value = asmPrd.jdbj;
                }
                worksheet.Range["K31"].Value = "共 " + pageSize + " 页";
                worksheet.Range["S31"].Value = "第 " + (pageIndex + 1) + " 页";
                worksheet.Range["W31"].Value = asmPrd.sbxh;
                int row = 0;
                while (iEnum.MoveNext())
                {
                    SldPrt prt        = iEnum.Current;
                    int    totalIndex = row + rowStartIndex;
                    worksheet.Range["B" + totalIndex].Value  = prt.materialNumber;
                    worksheet.Range["E" + totalIndex].Value  = prt.number;
                    worksheet.Range["J" + totalIndex].Value  = prt.name;
                    worksheet.Range["O" + totalIndex].Value  = prt.amout == 0 ? "" : prt.amout.ToString();
                    worksheet.Range["Q" + totalIndex].Value  = prt.material;
                    worksheet.Range["S" + totalIndex].Value  = prt.weight == 0 ? "" : prt.weight.ToString();
                    worksheet.Range["T" + totalIndex].Value  = prt.totalWeight == 0 ? "" : prt.totalWeight.ToString();
                    worksheet.Range["U" + totalIndex].Value  = prt.rawWeight == 0 ? "" : prt.rawWeight.ToString();
                    worksheet.Range["V" + totalIndex].Value  = prt.route;
                    worksheet.Range["AC" + totalIndex].Value = prt.remark;

                    row++;
                    if (row >= WiseUtil.prtPageSize)
                    {
                        break;
                    }
                }

                worksheet = nextWorksheet;
            }
            return(true);
        }
示例#5
0
        public void ProcessTableAnn(BomTableAnnotation swBOMTableAnn, string ConfigName, SldAsm asmPrd)
        {
            int             nNumRow    = 0;
            string          ItemNumber = null;
            string          PartNumber = null;
            TableAnnotation swTableAnn = (TableAnnotation)swBOMTableAnn;

            Console.WriteLine("   Table Title        " + swTableAnn.Title);
            IEdmVault5 vault = new EdmVault5();

            vault.LoginAuto("科德研发部", 0);
            if (!vault.IsLoggedIn)
            {
                Console.WriteLine("登录PDM失败");
                return;
            }
            nNumRow       = swTableAnn.RowCount;
            swBOMTableAnn = (BomTableAnnotation)swTableAnn;
            for (int j = 0; j < swTableAnn.RowCount; j++)
            {
                //
                //for (int i = 0; i < swTableAnn.ColumnCount;i++ )
                //    Console.WriteLine(swTableAnn.get_Text(j, i));
                //获取类别和特有信息
                //if (j == swTableAnn.RowCount - 1)//最后一行为标题栏,跳过
                //     continue;
                string filePath   = "";
                string compName   = "";
                string compConfig = "";
                int    compCount  = swBOMTableAnn.GetComponentsCount2(j, ConfigName, out ItemNumber, out PartNumber);
                for (int i = 0; i < compCount; i++)
                {
                    Component2 comp2 = swBOMTableAnn.IGetComponents2(j, ConfigName, i);
                    if (comp2 != null)
                    {
                        filePath   = comp2.GetPathName();
                        compName   = comp2.Name2;
                        compConfig = comp2.ReferencedConfiguration;
                        Console.WriteLine("           Component Name :" + comp2.Name2 + "      Configuration Name : " + comp2.ReferencedConfiguration);
                        Console.WriteLine("           Component Path :" + comp2.GetPathName());
                    }
                }
                if (filePath == "")
                {
                    continue;
                }
                SldBsp bsp = GetSldPrdInfoFromFile(vault, filePath);
                if (bsp == null)
                {
                    continue;
                }
                bsp.path = filePath;
                //SldBsp bsp = new SldBsp();
                swTableAnn.get_Text(j, 0);                              //序号
                bsp.number = swTableAnn.get_Text(j, 1);                 //代号
                bsp.name   = swTableAnn.get_Text(j, 2);                 //名称
                string amout = swTableAnn.get_Text(j, 3);
                bsp.amout    = amout == ""?0:int.Parse(amout);          //数量
                bsp.material = swTableAnn.get_Text(j, 4);               //材料
                string weight = swTableAnn.get_Text(j, 5);
                bsp.weight      = weight == "" ? 0 : int.Parse(weight); //单重
                bsp.totalWeight = bsp.weight * bsp.amout;               // swTableAnn.get_Text(j, 6);//总重
                bsp.remark      = swTableAnn.get_Text(j, 7);            //备注
                string number = swTableAnn.get_Text(j, 8);              //测试
                if (bsp.number == "")
                {
                    bsp.number = number;
                }
                if (bsp is SldPrt)
                {
                    asmPrd.sldPrtList.Add((SldPrt)bsp);
                }
                else if (bsp is SldStd)
                {
                    asmPrd.sldStdList.Add((SldStd)bsp);
                }
                else if (bsp is SldBuy)
                {
                    asmPrd.sldBuyList.Add((SldBuy)bsp);
                }
            }
            return;
        }