Skip to main content

revit-element-and-parameter-access

Read and write Autodesk Revit elements and parameters with the Nice3point.Revit.Extensions fluent accessors. USE FOR: finding an Element by ElementId, finding a parameter by BuiltInParameter/ParameterTypeId/Guid/name, reading its typed value, setting it, and converting internal units. DO NOT USE FOR: querying the model for a set of elements (use revit-element-collector).

Aller à l'installation

Informations de source

Dépôt
Nice3point/revit-skills
Dernière activité de la source
6 septembre 2026 à 12:40
Langue détectée de SKILL.md
anglais
Étoiles
13
Forks
3

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
revit-element-and-parameter-access
description
Read and write Autodesk Revit elements and parameters with the Nice3point.Revit.Extensions fluent accessors. USE FOR: finding an Element by ElementId, finding a parameter by BuiltInParameter/ParameterTypeId/Guid/name, reading its typed value, setting it, and converting internal units. DO NOT USE FOR: querying the model for a set of elements (use revit-element-collector).
license
MIT
# Revit Element and Parameter Access The `Nice3point.Revit.Extensions` accessors wrap the raw element and parameter API — `document.GetElement(id) as T`, raw different parameter getters, manual `StorageType` switching, and `UnitUtils` — into one fluent, nullable chain. `FindParameter` also falls back to the element type when the instance lacks the parameter. ## When to use - Finding an `Element` by `ElementId`. - Reading or writing a parameter value, or converting a stored length to display units. ## When not to use - Finding a set of elements from the model — use `revit-element-collector`. ## Workflow ### Step 1: Get a typed element from an id ```csharp var wall = wallId.ToElement<Wall>(document); ``` Returns null when the element is missing or not that type. ### Step 2: Find a parameter ```csharp var parameter = wall.FindParameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM); ``` `FindParameter` accepts a `BuiltInParameter`, `ParameterTypeId`, `Guid`, or name, and returns the type's parameter when the instance has none. It returns null when the parameter is absent — null-check for optional parameters. ### Step 3: Read the typed value ```csharp double heightFeet = parameter.AsDouble(); // native api call bool isStructural = wall.FindParameter(BuiltInParameter.WALL_STRUCTURAL_SIGNIFICANT).AsBool(); Color color = door.FindParameter("Door color").AsColor(); Level level = wall.FindParameter(BuiltInParameter.WALL_BASE_CONSTRAINT).AsElement<Level>(); ``` ### Step 4: Convert internal units at the boundary Revit stores lengths in feet; convert when values leave or enter the model. ```csharp double heightMm = parameter.AsDouble().ToMillimeters(); ``` ### Step 5: Write inside a transaction ```csharp parameter.Set(3.0.FromMeters()); door.FindParameter("Door color").Set(new Color(66, 69, 96)); ``` Writes require an open transaction. ## Validation - [ ] `ElementId` is resolved with `ToElement<T>`, not `GetElement(id) as T`. - [ ] Parameters are found with `FindParameter`, and optional ones are null-checked. - [ ] Stored lengths are converted at the boundary with the unit conversion extensions. - [ ] Writes happen inside a transaction. ## Common Pitfalls | Pitfall | Correct approach | |-----------------------------------------------------------------|--------------------------------------------------------------| | `document.GetElement(id) as Wall` | `id.ToElement<Wall>(document)`. | | Choosing among `get_Parameter`/`LookupParameter`/`GetParameter` | `FindParameter(...)` handles instance and type. | | Using a raw feet value as millimeters | Convert with `.ToMillimeters()` / `.FromMeters()`. | | `ToElement`/`FindParameter` not found | The `Nice3point.Revit.Extensions` package is not referenced. |
Voir sur GitHub