From f9d9e734d511cef369b393f5a700086e39af4d9a Mon Sep 17 00:00:00 2001 From: Jeremy Tammik Date: Fri, 11 Apr 2014 15:11:02 +0200 Subject: [PATCH] renamed CmdSlopedFloor.cs to CmdCreateSlopedSlab.cs, implemented CmdCategorySupportsTypeParameter --- BcSamples.txt | 9 + .../BuildingCoder/BuildingCoder.csproj | 3 +- .../CmdCategorySupportsTypeParameter.cs | 1116 +++++++++++++++++ .../BuildingCoder/CmdCreateSlopedSlab.cs | 173 +++ .../BuildingCoder/Properties/AssemblyInfo.cs | 5 +- 5 files changed, 1303 insertions(+), 3 deletions(-) create mode 100644 BuildingCoder/BuildingCoder/CmdCategorySupportsTypeParameter.cs create mode 100644 BuildingCoder/BuildingCoder/CmdCreateSlopedSlab.cs diff --git a/BcSamples.txt b/BcSamples.txt index 87365252..5d0bd544 100644 --- a/BcSamples.txt +++ b/BcSamples.txt @@ -929,3 +929,12 @@ LargeImage: Image: C:\a\lib\revit\2014\bc\BuildingCoder\BuildingCoder\bin\Debug\BuildingCoder.dll BuildingCoder.CmdCreateSlopedSlab # version 2014.0.108.0 + +ADN Bc A-M +Category Supports Type Parameter +Boolean predicate to determine whether a given category supports type parameter +LargeImage: +Image: +C:\a\lib\revit\2014\bc\BuildingCoder\BuildingCoder\bin\Debug\BuildingCoder.dll +BuildingCoder.CmdCategorySupportsTypeParameter # version 2014.0.109.0 + diff --git a/BuildingCoder/BuildingCoder/BuildingCoder.csproj b/BuildingCoder/BuildingCoder/BuildingCoder.csproj index 6c465565..76f83d42 100644 --- a/BuildingCoder/BuildingCoder/BuildingCoder.csproj +++ b/BuildingCoder/BuildingCoder/BuildingCoder.csproj @@ -96,6 +96,7 @@ + @@ -180,7 +181,7 @@ - + diff --git a/BuildingCoder/BuildingCoder/CmdCategorySupportsTypeParameter.cs b/BuildingCoder/BuildingCoder/CmdCategorySupportsTypeParameter.cs new file mode 100644 index 00000000..35037cbf --- /dev/null +++ b/BuildingCoder/BuildingCoder/CmdCategorySupportsTypeParameter.cs @@ -0,0 +1,1116 @@ +#region Header +// +// CmdCategorySupportsTypeParameter.cs - Boolean predicate to +// determine whether a given category supports type parameter +// +// Copyright (C) 2008-2014 by Jeremy Tammik, +// Autodesk Inc. All rights reserved. +// +#endregion // Header + +#region Namespaces +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Autodesk.Revit.ApplicationServices; +using Autodesk.Revit.Attributes; +using Autodesk.Revit.DB; +using Autodesk.Revit.UI; +#endregion // Namespaces + +namespace BuildingCoder +{ + /// + /// Boolean predicate to determine whether a + /// given category supports type parameter. + /// + [Transaction( TransactionMode.ReadOnly )] + public class CmdCategorySupportsTypeParameter : IExternalCommand + { + // How does an enumeration compare with a + // dictionary performance-wise? Unclear to me, cf. + // http://stackoverflow.com/questions/3256713/enum-and-performance + + // The two enumerations of built-in categories + // supporting instance and type parameters were + // provided by Todd Jacobs in the Revit API + // discussion forum thread "Determine if Category + // supports Type parameter binding", cf. + // http://forums.autodesk.com/t5/Revit-API/Determine-if-Category-supports-Type-parameter-binding/m-p/4918068 + + #region Built-in categories supporting type parameters + static public BuiltInCategory[] + _bicAllowsBoundParametersAsType + = new BuiltInCategory[] + { + ///Analytical Links + BuiltInCategory.OST_LinksAnalytical, + ///Structural Connections + BuiltInCategory.OST_StructConnections, + ///Structural Fabric Areas + BuiltInCategory.OST_FabricAreas, + ///Structural Fabric Reinforcement + BuiltInCategory.OST_FabricReinforcement, + ///Rebar Shape + BuiltInCategory.OST_RebarShape, + ///Structural Path Reinforcement + BuiltInCategory.OST_PathRein, + ///Structural Area Reinforcement + BuiltInCategory.OST_AreaRein, + ///Structural Rebar + BuiltInCategory.OST_Rebar, + ///Pipe Placeholders + BuiltInCategory.OST_PlaceHolderPipes, + ///Duct Placeholders + BuiltInCategory.OST_PlaceHolderDucts, + ///Cable Tray Runs + BuiltInCategory.OST_CableTrayRun, + ///Conduit Runs + BuiltInCategory.OST_ConduitRun, + ///Conduits + BuiltInCategory.OST_Conduit, + ///Cable Trays + BuiltInCategory.OST_CableTray, + ///Conduit Fittings + BuiltInCategory.OST_ConduitFitting, + ///Cable Tray Fittings + BuiltInCategory.OST_CableTrayFitting, + ///Duct Linings + BuiltInCategory.OST_DuctLinings, + ///Duct Insulations + BuiltInCategory.OST_DuctInsulations, + ///Pipe Insulations + BuiltInCategory.OST_PipeInsulations, + ///Switch System + BuiltInCategory.OST_SwitchSystem, + ///Sprinklers + BuiltInCategory.OST_Sprinklers, + ///Lighting Devices + BuiltInCategory.OST_LightingDevices, + ///Fire Alarm Devices + BuiltInCategory.OST_FireAlarmDevices, + ///Data Devices + BuiltInCategory.OST_DataDevices, + ///Communication Devices + BuiltInCategory.OST_CommunicationDevices, + ///Security Devices + BuiltInCategory.OST_SecurityDevices, + ///Nurse Call Devices + BuiltInCategory.OST_NurseCallDevices, + ///Telephone Devices + BuiltInCategory.OST_TelephoneDevices, + ///Pipe Accessories + BuiltInCategory.OST_PipeAccessory, + ///Flex Pipes + BuiltInCategory.OST_FlexPipeCurves, + ///Pipe Fittings + BuiltInCategory.OST_PipeFitting, + ///Pipes + BuiltInCategory.OST_PipeCurves, + ///Piping Systems + BuiltInCategory.OST_PipingSystem, + ///Wires + BuiltInCategory.OST_Wire, + ///Flex Ducts + BuiltInCategory.OST_FlexDuctCurves, + ///Duct Accessories + BuiltInCategory.OST_DuctAccessory, + ///Duct Systems + BuiltInCategory.OST_DuctSystem, + ///Air Terminals + BuiltInCategory.OST_DuctTerminal, + ///Duct Fittings + BuiltInCategory.OST_DuctFitting, + ///Ducts + BuiltInCategory.OST_DuctCurves, + ///Mass + BuiltInCategory.OST_Mass, + ///Detail Items + BuiltInCategory.OST_DetailComponents, + ///Floors.Slab Edges + BuiltInCategory.OST_EdgeSlab, + ///Roofs.Gutters + BuiltInCategory.OST_Gutter, + ///Roofs.Fascias + BuiltInCategory.OST_Fascia, + ///Planting + BuiltInCategory.OST_Planting, + ///Structural Stiffeners + BuiltInCategory.OST_StructuralStiffener, + ///Specialty Equipment + BuiltInCategory.OST_SpecialityEquipment, + ///Topography + BuiltInCategory.OST_Topography, + ///Structural Trusses + BuiltInCategory.OST_StructuralTruss, + ///Structural Columns + BuiltInCategory.OST_StructuralColumns, + ///Structural Beam Systems + BuiltInCategory.OST_StructuralFramingSystem, + ///Structural Framing + BuiltInCategory.OST_StructuralFraming, + ///Structural Foundations + BuiltInCategory.OST_StructuralFoundation, + ///Site.Property Line Segments + BuiltInCategory.OST_SitePropertyLineSegment, + ///Site.Property Lines + BuiltInCategory.OST_SiteProperty, + ///Site.Pads + BuiltInCategory.OST_BuildingPad, + ///Site + BuiltInCategory.OST_Site, + ///Parking + BuiltInCategory.OST_Parking, + ///Plumbing Fixtures + BuiltInCategory.OST_PlumbingFixtures, + ///Mechanical Equipment + BuiltInCategory.OST_MechanicalEquipment, + ///Lighting Fixtures + BuiltInCategory.OST_LightingFixtures, + ///Furniture Systems + BuiltInCategory.OST_FurnitureSystems, + ///Electrical Fixtures + BuiltInCategory.OST_ElectricalFixtures, + ///Electrical Equipment + BuiltInCategory.OST_ElectricalEquipment, + ///Casework + BuiltInCategory.OST_Casework, + ///Railings.Terminations + BuiltInCategory.OST_RailingTermination, + ///Railings.Supports + BuiltInCategory.OST_RailingSupport, + ///Railings.Handrails + BuiltInCategory.OST_RailingHandRail, + ///Railings.Top Rails + BuiltInCategory.OST_RailingTopRail, + ///Stairs.Landings + BuiltInCategory.OST_StairsLandings, + ///Stairs.Runs + BuiltInCategory.OST_StairsRuns, + ///Curtain Systems + BuiltInCategory.OST_CurtaSystem, + ///Assemblies + BuiltInCategory.OST_Assemblies, + ///Levels + BuiltInCategory.OST_Levels, + ///Grids + BuiltInCategory.OST_Grids, + ///Walls.Wall Sweeps + BuiltInCategory.OST_Cornices, + ///Ramps + BuiltInCategory.OST_Ramps, + ///Curtain Wall Mullions + BuiltInCategory.OST_CurtainWallMullions, + ///Curtain Panels + BuiltInCategory.OST_CurtainWallPanels, + ///Generic Models + BuiltInCategory.OST_GenericModel, + ///Railings + BuiltInCategory.OST_StairsRailing, + ///Stairs + BuiltInCategory.OST_Stairs, + ///Columns + BuiltInCategory.OST_Columns, + ///Furniture + BuiltInCategory.OST_Furniture, + ///Ceilings + BuiltInCategory.OST_Ceilings, + ///Roofs + BuiltInCategory.OST_Roofs, + ///Floors + BuiltInCategory.OST_Floors, + ///Doors + BuiltInCategory.OST_Doors, + ///Windows + BuiltInCategory.OST_Windows, + ///Walls + BuiltInCategory.OST_Walls + }; + #endregion // Built-in categories supporting type parameters + + #region Built-in categories supporting instance parameters + static public BuiltInCategory[] + _bicAllowsBoundParametersAsInstance + = new BuiltInCategory[] + { + ///Analytical Links + BuiltInCategory.OST_LinksAnalytical, + ///Analytical Nodes + BuiltInCategory.OST_AnalyticalNodes, + ///Analytical Foundation Slabs + BuiltInCategory.OST_FoundationSlabAnalytical, + ///Analytical Wall Foundations + BuiltInCategory.OST_WallFoundationAnalytical, + ///Analytical Isolated Foundations + BuiltInCategory.OST_IsolatedFoundationAnalytical, + ///Analytical Walls + BuiltInCategory.OST_WallAnalytical, + ///Analytical Floors + BuiltInCategory.OST_FloorAnalytical, + ///Analytical Columns + BuiltInCategory.OST_ColumnAnalytical, + ///Analytical Braces + BuiltInCategory.OST_BraceAnalytical, + ///Analytical Beams + BuiltInCategory.OST_BeamAnalytical, + ///Structural Connections + BuiltInCategory.OST_StructConnections, + ///Structural Fabric Areas + BuiltInCategory.OST_FabricAreas, + ///Structural Fabric Reinforcement + BuiltInCategory.OST_FabricReinforcement, + ///Rebar Shape + BuiltInCategory.OST_RebarShape, + ///Structural Path Reinforcement + BuiltInCategory.OST_PathRein, + ///Structural Area Reinforcement + BuiltInCategory.OST_AreaRein, + ///Structural Rebar + BuiltInCategory.OST_Rebar, + ///Analytical Spaces + BuiltInCategory.OST_AnalyticSpaces, + ///Pipe Placeholders + BuiltInCategory.OST_PlaceHolderPipes, + ///Duct Placeholders + BuiltInCategory.OST_PlaceHolderDucts, + ///Cable Tray Runs + BuiltInCategory.OST_CableTrayRun, + ///Conduit Runs + BuiltInCategory.OST_ConduitRun, + ///Conduits + BuiltInCategory.OST_Conduit, + ///Cable Trays + BuiltInCategory.OST_CableTray, + ///Conduit Fittings + BuiltInCategory.OST_ConduitFitting, + ///Cable Tray Fittings + BuiltInCategory.OST_CableTrayFitting, + ///Duct Linings + BuiltInCategory.OST_DuctLinings, + ///Duct Insulations + BuiltInCategory.OST_DuctInsulations, + ///Pipe Insulations + BuiltInCategory.OST_PipeInsulations, + ///HVAC Zones + BuiltInCategory.OST_HVAC_Zones, + ///Switch System + BuiltInCategory.OST_SwitchSystem, + ///Sprinklers + BuiltInCategory.OST_Sprinklers, + ///Analytical Surfaces + BuiltInCategory.OST_GbXMLFaces, + ///Lighting Devices + BuiltInCategory.OST_LightingDevices, + ///Fire Alarm Devices + BuiltInCategory.OST_FireAlarmDevices, + ///Data Devices + BuiltInCategory.OST_DataDevices, + ///Communication Devices + BuiltInCategory.OST_CommunicationDevices, + ///Security Devices + BuiltInCategory.OST_SecurityDevices, + ///Nurse Call Devices + BuiltInCategory.OST_NurseCallDevices, + ///Telephone Devices + BuiltInCategory.OST_TelephoneDevices, + ///Pipe Accessories + BuiltInCategory.OST_PipeAccessory, + ///Flex Pipes + BuiltInCategory.OST_FlexPipeCurves, + ///Pipe Fittings + BuiltInCategory.OST_PipeFitting, + ///Pipes + BuiltInCategory.OST_PipeCurves, + ///Piping Systems + BuiltInCategory.OST_PipingSystem, + ///Wires + BuiltInCategory.OST_Wire, + ///Electrical Circuits + BuiltInCategory.OST_ElectricalCircuit, + ///Flex Ducts + BuiltInCategory.OST_FlexDuctCurves, + ///Duct Accessories + BuiltInCategory.OST_DuctAccessory, + ///Duct Systems + BuiltInCategory.OST_DuctSystem, + ///Air Terminals + BuiltInCategory.OST_DuctTerminal, + ///Duct Fittings + BuiltInCategory.OST_DuctFitting, + ///Ducts + BuiltInCategory.OST_DuctCurves, + ///Structural Internal Loads.Internal Area Loads + BuiltInCategory.OST_InternalAreaLoads, + ///Structural Internal Loads.Internal Line Loads + BuiltInCategory.OST_InternalLineLoads, + ///Structural Internal Loads.Internal Point Loads + BuiltInCategory.OST_InternalPointLoads, + ///Structural Loads.Area Loads + BuiltInCategory.OST_AreaLoads, + ///Structural Loads.Line Loads + BuiltInCategory.OST_LineLoads, + ///Structural Loads.Point Loads + BuiltInCategory.OST_PointLoads, + ///Spaces + BuiltInCategory.OST_MEPSpaces, + ///Mass.Mass Opening + BuiltInCategory.OST_MassOpening, + ///Mass.Mass Skylight + BuiltInCategory.OST_MassSkylights, + ///Mass.Mass Glazing + BuiltInCategory.OST_MassWindow, + ///Mass.Mass Roof + BuiltInCategory.OST_MassRoof, + ///Mass.Mass Exterior Wall + BuiltInCategory.OST_MassExteriorWall, + ///Mass.Mass Interior Wall + BuiltInCategory.OST_MassInteriorWall, + ///Mass.Mass Zone + BuiltInCategory.OST_MassZone, + ///Mass.Mass Floor + BuiltInCategory.OST_MassFloor, + ///Mass + BuiltInCategory.OST_Mass, + ///Areas + BuiltInCategory.OST_Areas, + ///Project Information + BuiltInCategory.OST_ProjectInformation, + ///Sheets + BuiltInCategory.OST_Sheets, + ///Detail Items + BuiltInCategory.OST_DetailComponents, + ///Floors.Slab Edges + BuiltInCategory.OST_EdgeSlab, + ///Roofs.Gutters + BuiltInCategory.OST_Gutter, + ///Roofs.Fascias + BuiltInCategory.OST_Fascia, + ///Planting + BuiltInCategory.OST_Planting, + ///Structural Stiffeners + BuiltInCategory.OST_StructuralStiffener, + ///Specialty Equipment + BuiltInCategory.OST_SpecialityEquipment, + ///Topography + BuiltInCategory.OST_Topography, + ///Structural Trusses + BuiltInCategory.OST_StructuralTruss, + ///Structural Columns + BuiltInCategory.OST_StructuralColumns, + ///Structural Beam Systems + BuiltInCategory.OST_StructuralFramingSystem, + ///Structural Framing + BuiltInCategory.OST_StructuralFraming, + ///Structural Foundations + BuiltInCategory.OST_StructuralFoundation, + ///Site.Property Line Segments + BuiltInCategory.OST_SitePropertyLineSegment, + ///Site.Property Lines + BuiltInCategory.OST_SiteProperty, + ///Site.Pads + BuiltInCategory.OST_BuildingPad, + ///Site + BuiltInCategory.OST_Site, + ///Roads + BuiltInCategory.OST_Roads, + ///Parking + BuiltInCategory.OST_Parking, + ///Plumbing Fixtures + BuiltInCategory.OST_PlumbingFixtures, + ///Mechanical Equipment + BuiltInCategory.OST_MechanicalEquipment, + ///Lighting Fixtures + BuiltInCategory.OST_LightingFixtures, + ///Furniture Systems + BuiltInCategory.OST_FurnitureSystems, + ///Electrical Fixtures + BuiltInCategory.OST_ElectricalFixtures, + ///Electrical Equipment + BuiltInCategory.OST_ElectricalEquipment, + ///Casework + BuiltInCategory.OST_Casework, + ///Shaft Openings + BuiltInCategory.OST_ShaftOpening, + ///Railings.Terminations + BuiltInCategory.OST_RailingTermination, + ///Railings.Supports + BuiltInCategory.OST_RailingSupport, + ///Railings.Handrails + BuiltInCategory.OST_RailingHandRail, + ///Railings.Top Rails + BuiltInCategory.OST_RailingTopRail, + ///Stairs.Landings + BuiltInCategory.OST_StairsLandings, + ///Stairs.Runs + BuiltInCategory.OST_StairsRuns, + ///Materials + BuiltInCategory.OST_Materials, + ///Curtain Systems + BuiltInCategory.OST_CurtaSystem, + ///Views + BuiltInCategory.OST_Views, + ///Parts + BuiltInCategory.OST_Parts, + ///Assemblies + BuiltInCategory.OST_Assemblies, + ///Levels + BuiltInCategory.OST_Levels, + ///Grids + BuiltInCategory.OST_Grids, + ///Walls.Wall Sweeps + BuiltInCategory.OST_Cornices, + ///Ramps + BuiltInCategory.OST_Ramps, + ///Curtain Wall Mullions + BuiltInCategory.OST_CurtainWallMullions, + ///Curtain Panels + BuiltInCategory.OST_CurtainWallPanels, + ///Rooms + BuiltInCategory.OST_Rooms, + ///Generic Models + BuiltInCategory.OST_GenericModel, + ///Railings + BuiltInCategory.OST_StairsRailing, + ///Stairs + BuiltInCategory.OST_Stairs, + ///Columns + BuiltInCategory.OST_Columns, + ///Furniture + BuiltInCategory.OST_Furniture, + ///Ceilings + BuiltInCategory.OST_Ceilings, + ///Roofs + BuiltInCategory.OST_Roofs, + ///Floors + BuiltInCategory.OST_Floors, + ///Doors + BuiltInCategory.OST_Doors, + ///Windows + BuiltInCategory.OST_Windows, + ///Walls + BuiltInCategory.OST_Walls + }; + #endregion // Built-in categories supporting instance parameters + + #region Todd's enums + public enum BIC_AllowsBoundParametersAsType + { + ///Analytical Links + OST_LinksAnalytical = BuiltInCategory.OST_LinksAnalytical, + ///Structural Connections + OST_StructConnections = BuiltInCategory.OST_StructConnections, + ///Structural Fabric Areas + OST_FabricAreas = BuiltInCategory.OST_FabricAreas, + ///Structural Fabric Reinforcement + OST_FabricReinforcement = BuiltInCategory.OST_FabricReinforcement, + ///Rebar Shape + OST_RebarShape = BuiltInCategory.OST_RebarShape, + ///Structural Path Reinforcement + OST_PathRein = BuiltInCategory.OST_PathRein, + ///Structural Area Reinforcement + OST_AreaRein = BuiltInCategory.OST_AreaRein, + ///Structural Rebar + OST_Rebar = BuiltInCategory.OST_Rebar, + ///Pipe Placeholders + OST_PlaceHolderPipes = BuiltInCategory.OST_PlaceHolderPipes, + ///Duct Placeholders + OST_PlaceHolderDucts = BuiltInCategory.OST_PlaceHolderDucts, + ///Cable Tray Runs + OST_CableTrayRun = BuiltInCategory.OST_CableTrayRun, + ///Conduit Runs + OST_ConduitRun = BuiltInCategory.OST_ConduitRun, + ///Conduits + OST_Conduit = BuiltInCategory.OST_Conduit, + ///Cable Trays + OST_CableTray = BuiltInCategory.OST_CableTray, + ///Conduit Fittings + OST_ConduitFitting = BuiltInCategory.OST_ConduitFitting, + ///Cable Tray Fittings + OST_CableTrayFitting = BuiltInCategory.OST_CableTrayFitting, + ///Duct Linings + OST_DuctLinings = BuiltInCategory.OST_DuctLinings, + ///Duct Insulations + OST_DuctInsulations = BuiltInCategory.OST_DuctInsulations, + ///Pipe Insulations + OST_PipeInsulations = BuiltInCategory.OST_PipeInsulations, + ///Switch System + OST_SwitchSystem = BuiltInCategory.OST_SwitchSystem, + ///Sprinklers + OST_Sprinklers = BuiltInCategory.OST_Sprinklers, + ///Lighting Devices + OST_LightingDevices = BuiltInCategory.OST_LightingDevices, + ///Fire Alarm Devices + OST_FireAlarmDevices = BuiltInCategory.OST_FireAlarmDevices, + ///Data Devices + OST_DataDevices = BuiltInCategory.OST_DataDevices, + ///Communication Devices + OST_CommunicationDevices = BuiltInCategory.OST_CommunicationDevices, + ///Security Devices + OST_SecurityDevices = BuiltInCategory.OST_SecurityDevices, + ///Nurse Call Devices + OST_NurseCallDevices = BuiltInCategory.OST_NurseCallDevices, + ///Telephone Devices + OST_TelephoneDevices = BuiltInCategory.OST_TelephoneDevices, + ///Pipe Accessories + OST_PipeAccessory = BuiltInCategory.OST_PipeAccessory, + ///Flex Pipes + OST_FlexPipeCurves = BuiltInCategory.OST_FlexPipeCurves, + ///Pipe Fittings + OST_PipeFitting = BuiltInCategory.OST_PipeFitting, + ///Pipes + OST_PipeCurves = BuiltInCategory.OST_PipeCurves, + ///Piping Systems + OST_PipingSystem = BuiltInCategory.OST_PipingSystem, + ///Wires + OST_Wire = BuiltInCategory.OST_Wire, + ///Flex Ducts + OST_FlexDuctCurves = BuiltInCategory.OST_FlexDuctCurves, + ///Duct Accessories + OST_DuctAccessory = BuiltInCategory.OST_DuctAccessory, + ///Duct Systems + OST_DuctSystem = BuiltInCategory.OST_DuctSystem, + ///Air Terminals + OST_DuctTerminal = BuiltInCategory.OST_DuctTerminal, + ///Duct Fittings + OST_DuctFitting = BuiltInCategory.OST_DuctFitting, + ///Ducts + OST_DuctCurves = BuiltInCategory.OST_DuctCurves, + ///Mass + OST_Mass = BuiltInCategory.OST_Mass, + ///Detail Items + OST_DetailComponents = BuiltInCategory.OST_DetailComponents, + ///Floors.Slab Edges + OST_EdgeSlab = BuiltInCategory.OST_EdgeSlab, + ///Roofs.Gutters + OST_Gutter = BuiltInCategory.OST_Gutter, + ///Roofs.Fascias + OST_Fascia = BuiltInCategory.OST_Fascia, + ///Planting + OST_Planting = BuiltInCategory.OST_Planting, + ///Structural Stiffeners + OST_StructuralStiffener = BuiltInCategory.OST_StructuralStiffener, + ///Specialty Equipment + OST_SpecialityEquipment = BuiltInCategory.OST_SpecialityEquipment, + ///Topography + OST_Topography = BuiltInCategory.OST_Topography, + ///Structural Trusses + OST_StructuralTruss = BuiltInCategory.OST_StructuralTruss, + ///Structural Columns + OST_StructuralColumns = BuiltInCategory.OST_StructuralColumns, + ///Structural Beam Systems + OST_StructuralFramingSystem = BuiltInCategory.OST_StructuralFramingSystem, + ///Structural Framing + OST_StructuralFraming = BuiltInCategory.OST_StructuralFraming, + ///Structural Foundations + OST_StructuralFoundation = BuiltInCategory.OST_StructuralFoundation, + ///Site.Property Line Segments + OST_SitePropertyLineSegment = BuiltInCategory.OST_SitePropertyLineSegment, + ///Site.Property Lines + OST_SiteProperty = BuiltInCategory.OST_SiteProperty, + ///Site.Pads + OST_BuildingPad = BuiltInCategory.OST_BuildingPad, + ///Site + OST_Site = BuiltInCategory.OST_Site, + ///Parking + OST_Parking = BuiltInCategory.OST_Parking, + ///Plumbing Fixtures + OST_PlumbingFixtures = BuiltInCategory.OST_PlumbingFixtures, + ///Mechanical Equipment + OST_MechanicalEquipment = BuiltInCategory.OST_MechanicalEquipment, + ///Lighting Fixtures + OST_LightingFixtures = BuiltInCategory.OST_LightingFixtures, + ///Furniture Systems + OST_FurnitureSystems = BuiltInCategory.OST_FurnitureSystems, + ///Electrical Fixtures + OST_ElectricalFixtures = BuiltInCategory.OST_ElectricalFixtures, + ///Electrical Equipment + OST_ElectricalEquipment = BuiltInCategory.OST_ElectricalEquipment, + ///Casework + OST_Casework = BuiltInCategory.OST_Casework, + ///Railings.Terminations + OST_RailingTermination = BuiltInCategory.OST_RailingTermination, + ///Railings.Supports + OST_RailingSupport = BuiltInCategory.OST_RailingSupport, + ///Railings.Handrails + OST_RailingHandRail = BuiltInCategory.OST_RailingHandRail, + ///Railings.Top Rails + OST_RailingTopRail = BuiltInCategory.OST_RailingTopRail, + ///Stairs.Landings + OST_StairsLandings = BuiltInCategory.OST_StairsLandings, + ///Stairs.Runs + OST_StairsRuns = BuiltInCategory.OST_StairsRuns, + ///Curtain Systems + OST_CurtaSystem = BuiltInCategory.OST_CurtaSystem, + ///Assemblies + OST_Assemblies = BuiltInCategory.OST_Assemblies, + ///Levels + OST_Levels = BuiltInCategory.OST_Levels, + ///Grids + OST_Grids = BuiltInCategory.OST_Grids, + ///Walls.Wall Sweeps + OST_Cornices = BuiltInCategory.OST_Cornices, + ///Ramps + OST_Ramps = BuiltInCategory.OST_Ramps, + ///Curtain Wall Mullions + OST_CurtainWallMullions = BuiltInCategory.OST_CurtainWallMullions, + ///Curtain Panels + OST_CurtainWallPanels = BuiltInCategory.OST_CurtainWallPanels, + ///Generic Models + OST_GenericModel = BuiltInCategory.OST_GenericModel, + ///Railings + OST_StairsRailing = BuiltInCategory.OST_StairsRailing, + ///Stairs + OST_Stairs = BuiltInCategory.OST_Stairs, + ///Columns + OST_Columns = BuiltInCategory.OST_Columns, + ///Furniture + OST_Furniture = BuiltInCategory.OST_Furniture, + ///Ceilings + OST_Ceilings = BuiltInCategory.OST_Ceilings, + ///Roofs + OST_Roofs = BuiltInCategory.OST_Roofs, + ///Floors + OST_Floors = BuiltInCategory.OST_Floors, + ///Doors + OST_Doors = BuiltInCategory.OST_Doors, + ///Windows + OST_Windows = BuiltInCategory.OST_Windows, + ///Walls + OST_Walls = BuiltInCategory.OST_Walls + } + + public enum BIC_AllowsBoundParametersAsInstance + { + ///Analytical Links + OST_LinksAnalytical = BuiltInCategory.OST_LinksAnalytical, + ///Analytical Nodes + OST_AnalyticalNodes = BuiltInCategory.OST_AnalyticalNodes, + ///Analytical Foundation Slabs + OST_FoundationSlabAnalytical = BuiltInCategory.OST_FoundationSlabAnalytical, + ///Analytical Wall Foundations + OST_WallFoundationAnalytical = BuiltInCategory.OST_WallFoundationAnalytical, + ///Analytical Isolated Foundations + OST_IsolatedFoundationAnalytical = BuiltInCategory.OST_IsolatedFoundationAnalytical, + ///Analytical Walls + OST_WallAnalytical = BuiltInCategory.OST_WallAnalytical, + ///Analytical Floors + OST_FloorAnalytical = BuiltInCategory.OST_FloorAnalytical, + ///Analytical Columns + OST_ColumnAnalytical = BuiltInCategory.OST_ColumnAnalytical, + ///Analytical Braces + OST_BraceAnalytical = BuiltInCategory.OST_BraceAnalytical, + ///Analytical Beams + OST_BeamAnalytical = BuiltInCategory.OST_BeamAnalytical, + ///Structural Connections + OST_StructConnections = BuiltInCategory.OST_StructConnections, + ///Structural Fabric Areas + OST_FabricAreas = BuiltInCategory.OST_FabricAreas, + ///Structural Fabric Reinforcement + OST_FabricReinforcement = BuiltInCategory.OST_FabricReinforcement, + ///Rebar Shape + OST_RebarShape = BuiltInCategory.OST_RebarShape, + ///Structural Path Reinforcement + OST_PathRein = BuiltInCategory.OST_PathRein, + ///Structural Area Reinforcement + OST_AreaRein = BuiltInCategory.OST_AreaRein, + ///Structural Rebar + OST_Rebar = BuiltInCategory.OST_Rebar, + ///Analytical Spaces + OST_AnalyticSpaces = BuiltInCategory.OST_AnalyticSpaces, + ///Pipe Placeholders + OST_PlaceHolderPipes = BuiltInCategory.OST_PlaceHolderPipes, + ///Duct Placeholders + OST_PlaceHolderDucts = BuiltInCategory.OST_PlaceHolderDucts, + ///Cable Tray Runs + OST_CableTrayRun = BuiltInCategory.OST_CableTrayRun, + ///Conduit Runs + OST_ConduitRun = BuiltInCategory.OST_ConduitRun, + ///Conduits + OST_Conduit = BuiltInCategory.OST_Conduit, + ///Cable Trays + OST_CableTray = BuiltInCategory.OST_CableTray, + ///Conduit Fittings + OST_ConduitFitting = BuiltInCategory.OST_ConduitFitting, + ///Cable Tray Fittings + OST_CableTrayFitting = BuiltInCategory.OST_CableTrayFitting, + ///Duct Linings + OST_DuctLinings = BuiltInCategory.OST_DuctLinings, + ///Duct Insulations + OST_DuctInsulations = BuiltInCategory.OST_DuctInsulations, + ///Pipe Insulations + OST_PipeInsulations = BuiltInCategory.OST_PipeInsulations, + ///HVAC Zones + OST_HVAC_Zones = BuiltInCategory.OST_HVAC_Zones, + ///Switch System + OST_SwitchSystem = BuiltInCategory.OST_SwitchSystem, + ///Sprinklers + OST_Sprinklers = BuiltInCategory.OST_Sprinklers, + ///Analytical Surfaces + OST_GbXMLFaces = BuiltInCategory.OST_GbXMLFaces, + ///Lighting Devices + OST_LightingDevices = BuiltInCategory.OST_LightingDevices, + ///Fire Alarm Devices + OST_FireAlarmDevices = BuiltInCategory.OST_FireAlarmDevices, + ///Data Devices + OST_DataDevices = BuiltInCategory.OST_DataDevices, + ///Communication Devices + OST_CommunicationDevices = BuiltInCategory.OST_CommunicationDevices, + ///Security Devices + OST_SecurityDevices = BuiltInCategory.OST_SecurityDevices, + ///Nurse Call Devices + OST_NurseCallDevices = BuiltInCategory.OST_NurseCallDevices, + ///Telephone Devices + OST_TelephoneDevices = BuiltInCategory.OST_TelephoneDevices, + ///Pipe Accessories + OST_PipeAccessory = BuiltInCategory.OST_PipeAccessory, + ///Flex Pipes + OST_FlexPipeCurves = BuiltInCategory.OST_FlexPipeCurves, + ///Pipe Fittings + OST_PipeFitting = BuiltInCategory.OST_PipeFitting, + ///Pipes + OST_PipeCurves = BuiltInCategory.OST_PipeCurves, + ///Piping Systems + OST_PipingSystem = BuiltInCategory.OST_PipingSystem, + ///Wires + OST_Wire = BuiltInCategory.OST_Wire, + ///Electrical Circuits + OST_ElectricalCircuit = BuiltInCategory.OST_ElectricalCircuit, + ///Flex Ducts + OST_FlexDuctCurves = BuiltInCategory.OST_FlexDuctCurves, + ///Duct Accessories + OST_DuctAccessory = BuiltInCategory.OST_DuctAccessory, + ///Duct Systems + OST_DuctSystem = BuiltInCategory.OST_DuctSystem, + ///Air Terminals + OST_DuctTerminal = BuiltInCategory.OST_DuctTerminal, + ///Duct Fittings + OST_DuctFitting = BuiltInCategory.OST_DuctFitting, + ///Ducts + OST_DuctCurves = BuiltInCategory.OST_DuctCurves, + ///Structural Internal Loads.Internal Area Loads + OST_InternalAreaLoads = BuiltInCategory.OST_InternalAreaLoads, + ///Structural Internal Loads.Internal Line Loads + OST_InternalLineLoads = BuiltInCategory.OST_InternalLineLoads, + ///Structural Internal Loads.Internal Point Loads + OST_InternalPointLoads = BuiltInCategory.OST_InternalPointLoads, + ///Structural Loads.Area Loads + OST_AreaLoads = BuiltInCategory.OST_AreaLoads, + ///Structural Loads.Line Loads + OST_LineLoads = BuiltInCategory.OST_LineLoads, + ///Structural Loads.Point Loads + OST_PointLoads = BuiltInCategory.OST_PointLoads, + ///Spaces + OST_MEPSpaces = BuiltInCategory.OST_MEPSpaces, + ///Mass.Mass Opening + OST_MassOpening = BuiltInCategory.OST_MassOpening, + ///Mass.Mass Skylight + OST_MassSkylights = BuiltInCategory.OST_MassSkylights, + ///Mass.Mass Glazing + OST_MassWindow = BuiltInCategory.OST_MassWindow, + ///Mass.Mass Roof + OST_MassRoof = BuiltInCategory.OST_MassRoof, + ///Mass.Mass Exterior Wall + OST_MassExteriorWall = BuiltInCategory.OST_MassExteriorWall, + ///Mass.Mass Interior Wall + OST_MassInteriorWall = BuiltInCategory.OST_MassInteriorWall, + ///Mass.Mass Zone + OST_MassZone = BuiltInCategory.OST_MassZone, + ///Mass.Mass Floor + OST_MassFloor = BuiltInCategory.OST_MassFloor, + ///Mass + OST_Mass = BuiltInCategory.OST_Mass, + ///Areas + OST_Areas = BuiltInCategory.OST_Areas, + ///Project Information + OST_ProjectInformation = BuiltInCategory.OST_ProjectInformation, + ///Sheets + OST_Sheets = BuiltInCategory.OST_Sheets, + ///Detail Items + OST_DetailComponents = BuiltInCategory.OST_DetailComponents, + ///Floors.Slab Edges + OST_EdgeSlab = BuiltInCategory.OST_EdgeSlab, + ///Roofs.Gutters + OST_Gutter = BuiltInCategory.OST_Gutter, + ///Roofs.Fascias + OST_Fascia = BuiltInCategory.OST_Fascia, + ///Planting + OST_Planting = BuiltInCategory.OST_Planting, + ///Structural Stiffeners + OST_StructuralStiffener = BuiltInCategory.OST_StructuralStiffener, + ///Specialty Equipment + OST_SpecialityEquipment = BuiltInCategory.OST_SpecialityEquipment, + ///Topography + OST_Topography = BuiltInCategory.OST_Topography, + ///Structural Trusses + OST_StructuralTruss = BuiltInCategory.OST_StructuralTruss, + ///Structural Columns + OST_StructuralColumns = BuiltInCategory.OST_StructuralColumns, + ///Structural Beam Systems + OST_StructuralFramingSystem = BuiltInCategory.OST_StructuralFramingSystem, + ///Structural Framing + OST_StructuralFraming = BuiltInCategory.OST_StructuralFraming, + ///Structural Foundations + OST_StructuralFoundation = BuiltInCategory.OST_StructuralFoundation, + ///Site.Property Line Segments + OST_SitePropertyLineSegment = BuiltInCategory.OST_SitePropertyLineSegment, + ///Site.Property Lines + OST_SiteProperty = BuiltInCategory.OST_SiteProperty, + ///Site.Pads + OST_BuildingPad = BuiltInCategory.OST_BuildingPad, + ///Site + OST_Site = BuiltInCategory.OST_Site, + ///Roads + OST_Roads = BuiltInCategory.OST_Roads, + ///Parking + OST_Parking = BuiltInCategory.OST_Parking, + ///Plumbing Fixtures + OST_PlumbingFixtures = BuiltInCategory.OST_PlumbingFixtures, + ///Mechanical Equipment + OST_MechanicalEquipment = BuiltInCategory.OST_MechanicalEquipment, + ///Lighting Fixtures + OST_LightingFixtures = BuiltInCategory.OST_LightingFixtures, + ///Furniture Systems + OST_FurnitureSystems = BuiltInCategory.OST_FurnitureSystems, + ///Electrical Fixtures + OST_ElectricalFixtures = BuiltInCategory.OST_ElectricalFixtures, + ///Electrical Equipment + OST_ElectricalEquipment = BuiltInCategory.OST_ElectricalEquipment, + ///Casework + OST_Casework = BuiltInCategory.OST_Casework, + ///Shaft Openings + OST_ShaftOpening = BuiltInCategory.OST_ShaftOpening, + ///Railings.Terminations + OST_RailingTermination = BuiltInCategory.OST_RailingTermination, + ///Railings.Supports + OST_RailingSupport = BuiltInCategory.OST_RailingSupport, + ///Railings.Handrails + OST_RailingHandRail = BuiltInCategory.OST_RailingHandRail, + ///Railings.Top Rails + OST_RailingTopRail = BuiltInCategory.OST_RailingTopRail, + ///Stairs.Landings + OST_StairsLandings = BuiltInCategory.OST_StairsLandings, + ///Stairs.Runs + OST_StairsRuns = BuiltInCategory.OST_StairsRuns, + ///Materials + OST_Materials = BuiltInCategory.OST_Materials, + ///Curtain Systems + OST_CurtaSystem = BuiltInCategory.OST_CurtaSystem, + ///Views + OST_Views = BuiltInCategory.OST_Views, + ///Parts + OST_Parts = BuiltInCategory.OST_Parts, + ///Assemblies + OST_Assemblies = BuiltInCategory.OST_Assemblies, + ///Levels + OST_Levels = BuiltInCategory.OST_Levels, + ///Grids + OST_Grids = BuiltInCategory.OST_Grids, + ///Walls.Wall Sweeps + OST_Cornices = BuiltInCategory.OST_Cornices, + ///Ramps + OST_Ramps = BuiltInCategory.OST_Ramps, + ///Curtain Wall Mullions + OST_CurtainWallMullions = BuiltInCategory.OST_CurtainWallMullions, + ///Curtain Panels + OST_CurtainWallPanels = BuiltInCategory.OST_CurtainWallPanels, + ///Rooms + OST_Rooms = BuiltInCategory.OST_Rooms, + ///Generic Models + OST_GenericModel = BuiltInCategory.OST_GenericModel, + ///Railings + OST_StairsRailing = BuiltInCategory.OST_StairsRailing, + ///Stairs + OST_Stairs = BuiltInCategory.OST_Stairs, + ///Columns + OST_Columns = BuiltInCategory.OST_Columns, + ///Furniture + OST_Furniture = BuiltInCategory.OST_Furniture, + ///Ceilings + OST_Ceilings = BuiltInCategory.OST_Ceilings, + ///Roofs + OST_Roofs = BuiltInCategory.OST_Roofs, + ///Floors + OST_Floors = BuiltInCategory.OST_Floors, + ///Doors + OST_Doors = BuiltInCategory.OST_Doors, + ///Windows + OST_Windows = BuiltInCategory.OST_Windows, + ///Walls + OST_Walls = BuiltInCategory.OST_Walls + } + #endregion // Todd's enums + + #region Todd's sample code snippet + void f( Document doc ) + { + Application app = doc.Application; + + bool isInstanceBinding = false; // true = Instance, false = Type + bool bStatus = true; + string szBIC_Name = "OST_MechanicalEquipment"; + Autodesk.Revit.DB.CategorySet catSet = app.Create.NewCategorySet(); + + if( isInstanceBinding ) + { + BIC_AllowsBoundParametersAsInstance BIC_ToInsert; + + if( Enum.TryParse( szBIC_Name, out BIC_ToInsert ) ) + { + catSet.Insert( doc.Settings.Categories.get_Item( (BuiltInCategory) BIC_ToInsert ) ); + } + else + { + // Invalid Category + bStatus = false; + } + //else ? + { + BIC_AllowsBoundParametersAsType BIC_ToInsert2; + + if( Enum.TryParse( szBIC_Name, out BIC_ToInsert2 ) ) + { + catSet.Insert( doc.Settings.Categories.get_Item( (BuiltInCategory) BIC_ToInsert2 ) ); + } + else + { + // Invalid Category + bStatus = false; + } + } + + if( bStatus ) + { + Autodesk.Revit.DB.Binding binding = isInstanceBinding + ? app.Create.NewTypeBinding( catSet ) as Autodesk.Revit.DB.Binding + : app.Create.NewInstanceBinding( catSet ) as Autodesk.Revit.DB.Binding; + + //BuiltInParameterGroup parameterGroup; + Definition def = null; + + doc.ParameterBindings.Insert( def, binding ); + } + else + { + // Notify User Invalid Category was given.... + } + + // test for enum equlity + + string szMessage = string.Empty; + + // Without cast + if( BuiltInCategory.OST_MechanicalEquipment.Equals( BIC_AllowsBoundParametersAsType.OST_MechanicalEquipment ) ) + { + szMessage = "We are Equal"; + } + else + { + // we get here + szMessage = "We are not Equal"; + } + //MessageBox.Show( szMessage ); + + // With cast + if( BuiltInCategory.OST_MechanicalEquipment.Equals( (BuiltInCategory) BIC_AllowsBoundParametersAsType.OST_MechanicalEquipment ) ) + { + // we get here + szMessage = "We are Equal"; + } + else + { + szMessage = "We are not Equal"; + } + //MessageBox.Show( szMessage ); + } + } + #endregion // Todd's sample code snippet + + static readonly Dictionary + _bicSupportsTypeParameters + = _bicAllowsBoundParametersAsType + .ToDictionary( + c => c ); + + static readonly Dictionary + _bicSupportsInstanceParameters + = _bicAllowsBoundParametersAsInstance + .ToDictionary( + c => c ); + + /// + /// Return true if the given built-in + /// category supports type parameters. + /// + static bool BicSupportsTypeParameters( + BuiltInCategory bic ) + { + return _bicSupportsTypeParameters.ContainsKey( + bic ); + } + + /// + /// Return true if the given built-in + /// category supports instance parameters. + /// + static bool BicSupportsInstanceParameters( + BuiltInCategory bic ) + { + return _bicSupportsInstanceParameters.ContainsKey( + bic ); + } + + static string SupportsOrNotString( bool b ) + { + return b + ? "supports" + : "does not support"; + } + + public Result Execute( + ExternalCommandData revit, + ref string message, + ElementSet elements ) + { + UIApplication uiapp = revit.Application; + UIDocument uidoc = uiapp.ActiveUIDocument; + Document doc = uidoc.Document; + + int nCategories = 0; + int nSupportType = 0; + int nSupportInstance = 0; + bool bType, bInstance; + + foreach( BuiltInCategory bic in + Enum.GetValues( typeof( BuiltInCategory ) ) ) + { + bType = BicSupportsTypeParameters( bic ); + bInstance = BicSupportsInstanceParameters( bic ); + + ++nCategories; + nSupportType += bType ? 1 : 0; + nSupportInstance += bInstance ? 1 : 0; + + Debug.Print( "{0} {1} instance and {2} type parameters", + bic, + SupportsOrNotString( bInstance ), + SupportsOrNotString( bType ) ); + } + + string caption = "Categories supporting type " + + "and instance parameters"; + + string msg = string.Format( + "Tested {0} built-in categories " + + "in total, {1} supporting instance and {2} " + + "supporting type parameters.", nCategories, + nSupportInstance, nSupportType ); + + Debug.Print( "\n" + caption + ":\n" + msg ); + + TaskDialog.Show( caption, msg ); + + return Result.Succeeded; + } + } +} diff --git a/BuildingCoder/BuildingCoder/CmdCreateSlopedSlab.cs b/BuildingCoder/BuildingCoder/CmdCreateSlopedSlab.cs new file mode 100644 index 00000000..e27175c6 --- /dev/null +++ b/BuildingCoder/BuildingCoder/CmdCreateSlopedSlab.cs @@ -0,0 +1,173 @@ +#region Header +// +// CmdSlopedFloor.cs - create a sloped floor +// +// Copyright (C) 2008-2014 by Jeremy Tammik, +// Autodesk Inc. All rights reserved. +// +#endregion // Header + +#region Namespaces +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Autodesk.Revit.ApplicationServices; +using Autodesk.Revit.Attributes; +using Autodesk.Revit.DB; +using Autodesk.Revit.UI; +using Autodesk.Revit.UI.Selection; +#endregion // Namespaces + +namespace BuildingCoder +{ + /// + /// Create sloped slab using the NewSlab method. + /// Also demonstrate checking whether a specific + /// level exists and creating it is not. + /// + [Transaction( TransactionMode.Manual )] + public class CmdCreateSlopedSlab : IExternalCommand + { + public Result Execute( + ExternalCommandData revit, + ref string message, + ElementSet elements ) + { + UIApplication uiapp = revit.Application; + UIDocument uidoc = uiapp.ActiveUIDocument; + Document doc = uidoc.Document; + + using( Transaction tx = new Transaction( doc ) ) + { + tx.Start( "Create Sloped Slab" ); + + double width = 19.685039400; + double length = 59.055118200; + double height = 9.84251968503937; + + XYZ[] pts = new XYZ[] { + new XYZ( 0.0, 0.0, height ), + new XYZ( width, 0.0, height ), + new XYZ( width, length, height ), + new XYZ( 0, length, height ) + }; + + CurveArray profile + = uiapp.Application.Create.NewCurveArray(); + + Line line = null; + + int n = pts.GetLength( 0 ); + + XYZ q = pts[n - 1]; + + foreach( XYZ p in pts ) + { + line = Line.CreateBound( q, p ); + profile.Append( line ); + q = p; + } + + Level level + = new FilteredElementCollector( doc ) + .OfClass( typeof( Level ) ) + .Where( + e => e.Name.Equals( "CreateSlopedSlab" ) ) + .FirstOrDefault() as Level; + + if( null == level ) + { + level = doc.Create.NewLevel( height ); + level.Name = "Sloped Slab"; + } + + Floor floor = doc.Create.NewSlab( + profile, level, line, 0.5, true ); + + tx.Commit(); + } + return Result.Succeeded; + } + } + + #region Unsuccessful attempt to modify existing floor slope + /// + /// Unsuccessful attempt to change the + /// slope of an existing floor element. + /// + [Transaction( TransactionMode.Manual )] + public class CmdChangeFloorSlope : IExternalCommand + { + public Result Execute( + ExternalCommandData revit, + ref string message, + ElementSet elements ) + { + UIApplication uiapp = revit.Application; + UIDocument uidoc = uiapp.ActiveUIDocument; + Document doc = uidoc.Document; + Selection sel = uidoc.Selection; + + Reference ref1 = sel.PickObject( + ObjectType.Element, "Please pick a floor." ); + + Floor f = doc.GetElement( ref1 ) as Floor; + + if( f == null ) + return Result.Failed; + + // Retrieve floor edge model line elements. + + ICollection deleted_ids; + + using( Transaction tx = new Transaction( doc ) ) + { + tx.Start( "Temporarily Delete Floor" ); + + deleted_ids = doc.Delete( f.Id ); + + tx.RollBack(); + } + + // Grab the first floor edge model line. + + ModelLine ml = null; + + foreach( ElementId id in deleted_ids ) + { + ml = doc.GetElement( id ) as ModelLine; + + if( null != ml ) + { + break; + } + } + + if( null != ml ) + { + using( Transaction tx = new Transaction( doc ) ) + { + tx.Start( "Change Slope Angle" ); + + // This parameter is read only. Therefore, + // the change does not work and we cannot + // change the floor slope angle after the + // floor is created. + + ml.get_Parameter( + BuiltInParameter.CURVE_IS_SLOPE_DEFINING ) + .Set( 1 ); + + ml.get_Parameter( + BuiltInParameter.ROOF_SLOPE ) + .Set( 1.2 ); + + tx.Commit(); + } + } + return Result.Succeeded; + } + } + #endregion // Unsuccessful attempt to modify existing floor slope +} diff --git a/BuildingCoder/BuildingCoder/Properties/AssemblyInfo.cs b/BuildingCoder/BuildingCoder/Properties/AssemblyInfo.cs index db238e93..becf4da1 100644 --- a/BuildingCoder/BuildingCoder/Properties/AssemblyInfo.cs +++ b/BuildingCoder/BuildingCoder/Properties/AssemblyInfo.cs @@ -31,5 +31,6 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion( "2014.0.108.0" )] -[assembly: AssemblyFileVersion( "2014.0.108.0" )] +// 2014-04-11 2014.0.109.0 renamed CmdSlopedFloor.cs to CmdCreateSlopedSlab.cs, implemented CmdCategorySupportsTypeParameter +[assembly: AssemblyVersion( "2014.0.109.0" )] +[assembly: AssemblyFileVersion( "2014.0.109.0" )]