[Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class Command4 : IExternalCommand { public Result Execute(ExternalCommandData cmdData, ref string message, ElementSet elements) { UIDocument uiDoc = cmdData.Application.ActiveUIDocument; Selection selection = uiDoc.Selection; Transaction ts = new Transaction(uiDoc.Document, " LevelDuct "); ts.Start(); // 打开文件 cmdData.Application.Application.SharedParametersFilename = @" C:\Users\HongYe\Desktop\RevitParameters.txt "; DefinitionFile sharedParametersFile = cmdData.Application.Application.OpenSharedParameterFile(); // 绑定到类别 CategorySet categories = null; categories = cmdData.Application.Application.Create.NewCategorySet(); Category wallCategory = null; // wallCategory = commandData.Application.ActiveUIDocument.Document.Settings.Categories.get_Item("Walls"); wallCategory = cmdData.Application.ActiveUIDocument.Document.Settings.Categories.get_Item( " 墙 "); categories.Insert(wallCategory); InstanceBinding instanceBinding = null; instanceBinding = cmdData.Application.Application.Create.NewInstanceBinding(categories); // 参数 // 参数分组 Autodesk.Revit.DB.DefinitionGroup sharedParameterGroup = null; sharedParameterGroup = sharedParametersFile.Groups.get_Item( " RevitParameters "); if ( null == sharedParameterGroup) { sharedParameterGroup = sharedParametersFile.Groups.Create( " RevitParameters "); } // 参数值 Definition sharedParameterDefinition = null; sharedParameterDefinition = sharedParameterGroup.Definitions.get_Item( " APIParameter "); if (sharedParameterDefinition == null) { sharedParameterDefinition = sharedParameterGroup.Definitions.Create( " APIParameter ", ParameterType.Text, true); } cmdData.Application.ActiveUIDocument.Document.ParameterBindings.Insert(sharedParameterDefinition, instanceBinding); ts.Commit(); return Result.Succeeded; } }