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).

الانتقال إلى التثبيت

معلومات المصدر

المستودع
Nice3point/revit-skills
آخر نشاط في المصدر
٦ سبتمبر ٢٠٢٦ في ١٢:٤٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٣
التفرعات
٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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. |
عرض على GitHub