91手机视频在线-91手机视频在线观看-91手机在线-91手机在线播放-91手机在线观看

完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費領(lǐng)取會員

NULL

ad.jpg

Revit二次開發(fā)教程:Revit族參數(shù)可見性設(shè)置

發(fā)布于:2019-06-22 17:52:33

網(wǎng)友投稿

更多

很多人出于某種用途為族設(shè)置特殊的參數(shù)之后,希望可以將其隱藏。在Revit官方暴露出來的API中,是沒有方法來實現(xiàn)的。以下代碼演示了如何將墻體所有參數(shù)隱藏!

using System;

using System.Linq;

using Autodesk.Revit.UI;

using Autodesk.Revit.Attributes;

using Autodesk.Revit.DB;

using System.Reflection;


namespace RevitAPITest

{

    [Transaction(TransactionMode.Manual)]

    public class APITest : IExternalCommand

    {

        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)

        {

            var uiDoc = commandData.Application.ActiveUIDocument;

            var doc = uiDoc.Document;

            var elemIds = uiDoc.Selection.GetElementIds();


            if (elemIds.Count == 0)

            {

                TaskDialog.Show("Error", "Please select an element....!");

                return Result.Failed;

            }


            var elem = doc.GetElement(elemIds.First());


            //var eum = elem.Parameters.GetEnumerator();


            var elemType = doc.GetElement(elem.GetTypeId()) as ElementType;

            if (elemType == null)

            {

                return Result.Failed;

            }

            var eum = elemType.Parameters.GetEnumerator();


            while (eum.MoveNext())

            {

                var parameter = eum.Current as Parameter;

                parameter.SetVisibility(false);

            }

            return Result.Succeeded;

        }

    }


    public class NativeCore

    {

        public static bool InvokeMoudle(string mName, object[] paramters, bool apiMoudle = true)

        {

            try

            {

                MethodInfo m = null;

                if (apiMoudle)

                    m = NativeMoudle.GetAPIMoudlerMethod(mName);

                else

                    m = NativeMoudle.GetUIMoudlerMethod(mName);

                m.Invoke(null, paramters);

                return true;

            }

            catch (Exception ex)

            {

                return false;

            }

        }

    }


    public class NativeMoudle

    {

        /// 獲取RevitAPI程序集Moudle內(nèi)的方法名稱.

        /// <summary>

        /// 獲取RevitAPI程序集Moudle內(nèi)的方法名稱.

        /// </summary>

        /// <param name="name"></param>

        /// <returns></returns>

        public static MethodInfo GetAPIMoudlerMethod(string name)

        {

            var moudle = NativeMoudle.getAPIMoudle();

            var rs = moudle.GetMethods(BindingFlags.NonPublic | BindingFlags.Static).Where(m => m.Name == name);

            return rs.Count() == 0 ? null : rs.First();

        }


        /// 獲取RevitAPIUI程序集Moudle內(nèi)的方法名稱.

        /// <summary>

        /// 獲取RevitAPIUI程序集Moudle內(nèi)的方法名稱.

        /// </summary>

        /// <param name="name"></param>

        /// <returns></returns>

        public static MethodInfo GetUIMoudlerMethod(string name)

        {

            var moudle = NativeMoudle.getUIMoudle();

            var rs = moudle.GetMethods(BindingFlags.NonPublic | BindingFlags.Static).Where(m => m.Name == name);

            return rs.Count() == 0 ? null : rs.First();

        }


        /// 獲取RevitAPI Modules.

        /// <summary>

        /// 獲取RevitAPI Modules.

        /// </summary>

        /// <returns></returns>

        internal static Module getAPIMoudle()

        {

            return typeof(Document).Assembly.Modules.First();

        }


        /// 獲取RevitAPIUI Modules.

        /// <summary>

        /// 獲取RevitAPIUI Modules.

        /// </summary>

        /// <returns></returns>

        internal static Module getUIMoudle()

        {

            return typeof(UIDocument).Assembly.Modules.First();

        }


    }


    public static class ParameterExtension

    {

        /// <summary>

        /// 設(shè)置參數(shù)對象對用戶是否可見.

        /// </summary>

        /// <param name="parameter"></param>

        /// <param name="visible"></param>

        /// <returns></returns>

        public static bool SetVisibility(this Parameter parameter, bool visible)

        {

            var parameterIntPtr = parameter.ToParamDef();

            if (parameterIntPtr == IntPtr.Zero)

            {

                return false;

            }


            var result = NativeCore.InvokeMoudle("ParamDef.setUserVisible", new object[] 

                {

                    parameterIntPtr, visible

                });


            return result;

        }


        /// <summary>

        /// 將參數(shù)對象轉(zhuǎn)為非托管指針.

        /// </summary>

        /// <param name="parameter"></param>

        /// <returns></returns>

        public static IntPtr ToParamDef(this Parameter parameter)

        {

            try

            {

                var m = typeof(Parameter).GetMethod("getParamDef", BindingFlags.NonPublic | BindingFlags.Instance);

                return ((Pointer)m.Invoke(parameter, null)).ToIntPtr();

            }

            catch

            {

                return IntPtr.Zero;

            }

        }

    }


    public static class PointerExtension

    {

        /// 將指針轉(zhuǎn)為句柄.

        /// <summary>

        /// 將指針轉(zhuǎn)為句柄.

        /// </summary>

        /// <param name="p"></param>

        /// <returns></returns>

        public unsafe static IntPtr ToIntPtr(this Pointer p)

        {

            return (IntPtr)p

                .GetType()

                .GetMethod("GetPointerValue", BindingFlags.NonPublic | BindingFlags.Instance)

                .Invoke(p, null);

        }

    }

}

圖片.png

圖片.png

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

上一篇:REVIT中如何把墻附著到樓梯底部?

下一篇:Revit二次開發(fā)教程:Revit API Hook 之 攔截鼠標(biāo)雙擊元素事件

主站蜘蛛池模板: 黄色成年人视频 | 91亚洲国产系列精品第56页 | 中文字幕亚洲精品第一区 | 亚洲国产第一区二区香蕉 | 成人两性高清图片视频 | 91精品国产综合久久青草 | 日本大片免a费观看视频+播放器 | 国产制服丝袜在线观看 | 国产精品观看在线亚洲人成网 | aaa级大片| 免费一级真人毛片 | 黄色a三级三级三级免费看 黄色a三级免费看 | 欧美色欧美亚洲另类二区 | 国产免费影院 | 不卡一级毛片免费高清 | a黄色一级 | xxxx免费国产在线视频 | 香蕉欧美 | 日本vs欧美一区二区三区 | 国产亚洲欧美一区二区 | 亚洲经典一区 | 国自产精品手机在线视频香蕉 | 女人午夜色又刺激黄的视频免费 | 国产精品爱久久 | 四色婷婷 | 成年人黄色大片大全 | 免费国产不卡午夜福在线 | 免费看片亚洲 | 国产特黄特色一级特色大片 | 日本一线a视频免费观看 | 亚洲精品a | 小蝌蚪亚洲精品国产 | 亚洲一级毛片在线观 | 在线黄色大片 | 国产精品国产精品国产专区不卡 | 一级黄色免费 | 性亚洲无删减 | 国产精品中文字幕在线观看 | 久久99国产精品免费观看 | 欧美日韩系列 | 国产麻豆精品hdvideoss |