using Autodesk.Revit.DB; using ShrlAlgoToolkit.RevitCore.Assists; using System.Reflection; namespace ShrlAlgoToolkit.RevitCore.Extensions; public static class ParameterExtensions { /// /// 设置参数对象对用户是否可见. /// /// /// /// public static bool SetVisibility(this Parameter parameter, bool visible) { var parameterIntPtr = parameter.ToParamDef(); if (parameterIntPtr == IntPtr.Zero) { return false; } var result = EncryptParameters.InvokeModule("ParamDef.setUserVisible", [parameterIntPtr, visible]); return result; } /// /// 将参数对象转为非托管指针. /// /// /// public static IntPtr ToParamDef(this Parameter parameter) { try { var m = typeof(Parameter).GetMethod("getParamDef", BindingFlags.NonPublic | BindingFlags.Instance); return (m?.Invoke(parameter, null) as Pointer).ToIntPtr(); } catch { return IntPtr.Zero; } } }