private static RevitAddInApplication CreateRevitAddInApp(AddInAppInfo appInfo) { RevitAddInApplication myApp = new RevitAddInApplication(appInfo.Name, appInfo.Assembly, new Guid(appInfo.AddInId), appInfo.FullClassName, appInfo.VendorId); myApp.VendorDescription = appInfo.VendorDescription; return(myApp); }
private AddInAppInfo PackAppInfo() { AddInAppInfo app = new AddInAppInfo { AddInId = txtAppGuid.Text, AllowLoadIntoExistingSession = chkBxAtuoLoad.Checked, Assembly = txtAppDllPath.Text, Name = txtAppName.Text, FullClassName = txtAppAssemblyFullName.Text, VendorId = txtVendorId.Text, VendorDescription = txtVendorDescription.Text }; return(app); }
private void button1_Click(object sender, EventArgs e) { AddInCmdInfo cmdInfo = null; AddInAppInfo appInfo = null; var selectedItem = cbxSchema.SelectedItem.ToString(); if (ExternalSchema.外部命令.ToString() == selectedItem) { cmdInfo = PackCmdInfo(); } else if (ExternalSchema.外部程序.ToString() == selectedItem) { appInfo = PackAppInfo(); } else { cmdInfo = PackCmdInfo(); appInfo = PackAppInfo(); } string result = RAIManager.CreateManifest(txtAddInName.Text, cbxVersion.SelectedItem.ToString().Replace("Revit", ""), cmdInfo, appInfo); MessageBox.Show(result, "系统提示"); }
public static string CreateManifest(string addinName, string version, AddInCmdInfo cmdInfo, AddInAppInfo appInfo) { string manifestFilePath = string.Format("{0}\\{1}\\{2}.addin", SystemVariables.RevitProgramDataPath, version, addinName); try { RevitAddInManifest revitAddInManifest = AddInManifestUtility.GetRevitAddInManifest(manifestFilePath); var cmds = revitAddInManifest.AddInCommands; var apps = revitAddInManifest.AddInApplications; for (int i = 0; i < cmds.Count; i++) { var cmd = cmds[i]; if (cmd.AddInId.ToString() != cmdInfo.AddInId) { revitAddInManifest.AddInCommands.Add(CreateRevitAddInCmd(cmdInfo)); } else { cmd.VendorId = cmdInfo.VendorId; cmd.VendorDescription = cmdInfo.VendorDescription; cmd.Description = cmdInfo.Description; cmd.Text = cmdInfo.Text; cmd.FullClassName = cmdInfo.FullClassName; cmd.Discipline = cmdInfo.Discipline; cmd.VisibilityMode = cmdInfo.VisibilityMode; cmd.AvailabilityClassName = cmdInfo.AvailabilityClassName; cmd.AllowLoadIntoExistingSession = cmdInfo.AllowLoadIntoExistingSession; } } for (int i = 0; i < apps.Count; i++) { var app = apps[i]; if (app.AddInId.ToString() != appInfo.AddInId) { revitAddInManifest.AddInApplications.Add(CreateRevitAddInApp(appInfo)); } else { app.Name = appInfo.Name; app.VendorId = appInfo.VendorId; app.VendorDescription = appInfo.VendorDescription; app.FullClassName = appInfo.FullClassName; app.AllowLoadIntoExistingSession = appInfo.AllowLoadIntoExistingSession; } } revitAddInManifest.Save(); } catch { try { RevitAddInManifest manifest = new RevitAddInManifest(); if (cmdInfo != null) { RevitAddInCommand myCmd = CreateRevitAddInCmd(cmdInfo); manifest.AddInCommands.Add(myCmd); } if (appInfo != null) { RevitAddInApplication myApp = CreateRevitAddInApp(appInfo); manifest.AddInApplications.Add(myApp); } //RevitProduct newRevitProduct = RevitProductUtility.GetAllInstalledRevitProducts()[0]; //string manifestFilePath = string.Format("{0}\\{1}", newRevitProduct.AllUsersAddInFolder, addinName); manifest.SaveAs(manifestFilePath); } catch (Exception ex) { return(ex.Message); } } return("创建成功"); }