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;
}
刚开始写,有些地方思维比较混乱。但是功能还是能够基本满足的。:)