SW二次开发文件改名

 

1、先获取选中的文件,我们此时获得旧文件的相关信息,然后根据重命名规则自动生成新的文件名称

 

2、然后重命名文件

 private void button29_Click(object sender, EventArgs e)
        {
            if ((int)GetSwMod().GetType() == 2)
            {
                if (textBox19.Text == textBox20.Text)
                {
                    MessageBox.Show("新文件名和旧文件名相同");
                    return;
                }
                ChangeName(GetSwMod());
            }

        }

 public ModelDoc2 GetSwMod()

        {
            ModelDoc2 swDoc = (ModelDoc2)iSwApp.ActiveDoc;
            return swDoc;
        }

 public void ChangeName(ModelDoc2 swDoc)
        {
            ModelDoc2 swModel = default(ModelDoc2);
            AssemblyDoc swAssy = default(AssemblyDoc);
            swAssy = (AssemblyDoc)iSwApp.ActiveDoc;
            swModel = (ModelDoc2)swAssy;

            bool boolstatus = false;
            if (textBox19.Text == null || textBox20.Text == null)//被更改和更改名为空 则退出
            {
                return;
            }

            //int lErrors = 0;
            //int lWarnings = 0;
            Feature swFeat = (Feature)swDoc.FirstFeature();
            ModelDocExtension swDocEx = swDoc.Extension;
            AssemblyDoc swAsm = (AssemblyDoc)swDoc;

            int number = 1;

            Feature SwFeat = swAsm.FeatureByName(_FileFullName);
            object ObjComp = SwFeat.GetSpecificFeature2();
            Component2 SwCompont = (Component2)ObjComp;
            ModelDoc2 swModCom = (ModelDoc2)SwCompont.GetModelDoc2();//获取当前激活的模型文档

            bool ntr1 = swAsm.ResolveAllLightweight();
            string sAsmFullName = swDoc.GetPathName(); //获取模型文档的全路径名称
            string sAssmName = Path.GetFileNameWithoutExtension(sAsmFullName);//获取模型文档的名称
            string sPartFullName = swModCom.GetPathName(); //获取模型文档的全路径名称
            string sPartDrwFullName = sPartFullName.Replace(".SLDPRT", ".SLDDRW");
            sPartDrwFullName = sPartFullName.Replace(".SLDASM", ".SLDDRW");
            string sPartName = Path.GetFileNameWithoutExtension(sPartFullName);//获取模型文档的名称

            string fullName = _FileFullName + "@" + sAssmName;
            bool status = swDocEx.SelectByID2(fullName, "COMPONENT", 0, 0, 0, false, 0, null, 0);
            if (true)
            {
                _FileFullName = _FileFullName.Replace(textBox19.Text, textBox20.Text);
            }
            //提前获得下一个零件的位置

            //SubModleExten.RenameDocument( HelpLabel.Text);
            int IsOK = swDocEx.RenameDocument(textBox20.Text);
            swDocEx.Rebuild((int)swRebuildOptions_e.swRebuildAll);
            //boolstatus = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref lErrors, ref lWarnings); //测试不保存改名 最后改名-03.03

            //判断是否有工程图z


            FilePathInfo newFileInfo = GetNewName(sPartFullName, 2);//获得新的文件地址 文件名加“G-改名
            FileInfo OldFileInfo = new FileInfo(sAsmFullName);
            OldFileInfo.CopyTo(newFileInfo.newFilePath);//复制文件

            string fileDrwPath = newFileInfo.filePath + "\\" + newFileInfo.fileName + ".slddrw";
            if (File.Exists(fileDrwPath))
            {

                FilePathInfo newDrwFileInfo = GetNewName(fileDrwPath, 2);
                FileInfo OldFileDrwInfo = new FileInfo(fileDrwPath);
                OldFileDrwInfo.CopyTo(newDrwFileInfo.newFilePath);//复制工程图文件
                boolstatus = iSwApp.ReplaceReferencedDocument(newDrwFileInfo.newFilePath, sPartFullName, newFileInfo.newFilePath);
            }
            //int nErr = 0, nWar = 0;//打开零件
            //ModelDoc2 swSonDoc = iSwApp.OpenDoc6(newFileInfo.newFilePath, (int)swDocumentTypes_e.swDocPART, 1, "", ref nErr, ref nWar);

            // boolstatus = swSonDoc.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref lErrors, ref lWarnings);

            //boolstatus = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent + (int)swSaveAsOptions_e.swSaveAsOptions_SaveReferenced, ref lErrors, ref lWarnings);

            //File.Delete(sPartFullName);//测试不删除原文件-03.03
            //File.Delete(sPartDrwFullName);//测试不删除原文件-03.03
            HelpLabel.Text = number.ToString();
            ISChangeName = true;

        }
刚开始写,有些地方思维比较混乱。但是功能还是能够基本满足的。:)

SW二次开发插件免费是指在SolidWorks软件的二次开发过程中,使用的插件是免费提供的。SolidWorks是一款常用的三维计算机辅助设计软件,它拥有丰富的功能和强大的设计能力,然而有时候用户可能需要额外的功能或者定制化的工具来满足特定的需求。 SW二次开发插件免费的好处之一是降低了用户的负担。如果插件是收费的,用户需要额外支付费用来获得添加的功能,这对一些用户来说可能是不可承受之重。而免费提供的插件能够让用户在不增加经济负担的情况下获得所需的功能。 其次,SW二次开发插件免费也有助于推动SolidWorks社区的发展和创新。开发者可以将自己独特的想法和技术转化为实际可用的插件,免费提供给其他用户使用。这种分享和开源的理念有助于促进大家的交流和共享,并且激发更多开发者的参与,进一步丰富和完善插件的功能。 最后,SW二次开发插件免费也体现了SolidWorks公司对用户的关心和支持。作为一家知名的CAD软件厂商,SolidWorks不仅为用户提供了强大的基础功能,还鼓励和支持用户进行二次开发,进一步扩展SolidWorks的应用范围。通过免费提供插件,SolidWorks公司向用户传达了其愿意与用户共同探索创新和发展的态度。 总而言之,SW二次开发插件免费给用户带来了经济上的便利,促进了社区的创新和发展,并展示了SolidWorks公司对用户的关心和支持。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值