Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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, "系统提示");
        }
Пример #4
0
        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("创建成功");
        }