不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

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

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

NULL

ad.jpg

二次開發(fā)教程:Revit開發(fā)AddinManager原理探索

發(fā)布于:2019-08-26 16:07:33

網(wǎng)友投稿

更多

Revit開發(fā)中AddinManager是一個非常好用的工具,它可以快速的運行我們寫好的命令


并且生成addin文件,最近突然好奇,它是怎么實現(xiàn)這些功能的,然后研究了一下,


發(fā)現(xiàn)這里面似乎是通過反射來實現(xiàn)的,他能運行我們的寫的命令最關(guān)鍵的是因為下面的代碼


             IExternalCommand externalCommand = assembly.CreateInstance(FullClassName) as IExternalCommand;

            if (externalCommand != null)

            {

                result = externalCommand Execute( commandData, ref message,  elements)

            }          




因為用反射創(chuàng)建我們寫的命令的類之前,我們要先加載dll,而加載dl后,如果加載dll的位置和我們生成dll的位置相同


當我們再編譯原來的工程就會失敗,因為我們生成的dll要替換原來的dll,而原來的dll已經(jīng)被占用,所有就會替換失敗,


我想著就是AddInManager 運行命令之前,要先把dll文件復制到其他地方的原因吧




下面嘗試些一個簡單的AddInManager,并不包括將dll復制到其他地方,和生成addin文件的功能




   //創(chuàng)建界面


    public class MyApp:IExternalApplication

    {

        public Result OnShutdown(UIControlledApplication application)

        {

            return Result.Succeeded;

        }

        public Result OnStartup(UIControlledApplication application)

        {

            RibbonPanel panel = application.CreateRibbonPanel(Tab.AddIns, "NewAddInManager");

            PushButtonData data = new PushButtonData("NewAddinManager", "MyCommand", this.GetType().Assembly.Location, "NewAddinManager.MyAddInCommand");

            panel.AddItem(data);

            return Result.Succeeded;

        }

    }


// addinManager 命令


    public class MyAddInCommand : IExternalCommand

    {

        public string path = null;

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

        {

            AppDomain.CurrentDomain.AssemblyResolve += LoadAssemble;

            Result result;

            OpenFileDialog dialog = new OpenFileDialog();

            if (dialog.ShowDialog() == DialogResult.OK)

            {

                string file = dialog.FileName;

                path = new FileInfo(file).DirectoryName;

                Assembly ab = Assembly.LoadFile(file);

                foreach (Type tp in ab.DefinedTypes)

                {

                    IExternalCommand icmd = ab.CreateInstance(tp.FullName) as IExternalCommand;

                    if (icmd != null)

                    {

                        result = icmd.Execute(commandData, ref message, elements);

                        break;

                    }

                }

            }

            return Result.Succeeded;

        }



        private Assembly LoadAssemble(object sender, ResolveEventArgs args)

        {        

            string dllName = args.Name.Split(new char[] { ',' }).First();

            Assembly tab = args.RequestingAssembly;        

            FileInfo fileInfo = new FileInfo(tab.Location);

            DirectoryInfo dir = fileInfo.Directory;// new DirectoryInfo(path);

            FileInfo[] files = dir.GetFiles("*.dll", SearchOption.TopDirectoryOnly);

            foreach (FileInfo f in files)

            {               

                if (f.Name.Contains(dllName))

                {

                    Assembly ab = Assembly.LoadFile(f.FullName);

                    return ab;

                }

            }           

            return null;

        }

    }

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

未標題-1.jpg

上一篇:二次開發(fā)教程:Revit開發(fā)之梁柱分段

下一篇:二次開發(fā)教程:Revit開發(fā)之AddInManager安裝包簡單制作

60acb4e0ef112.png
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      蜜桃av一区二区| 欧美另类视频| 久热精品在线视频| 久久综合久久综合久久| 麻豆久久婷婷| 欧美日本精品| 国产精品一区三区| 极品少妇一区二区三区精品视频 | 国产精品无码永久免费888| 国产精品激情电影| 黄色av成人| 日韩视频三区| 午夜精品久久久久久久99樱桃| 新片速递亚洲合集欧美合集| 老司机67194精品线观看| 欧美日韩免费一区二区三区| 国产精品自拍在线| 亚洲国产欧美一区二区三区丁香婷| 99精品欧美一区| 久久久久久久精| 欧美性一二三区| 在线不卡视频| 西西人体一区二区| 欧美激情导航| 国产精品有限公司| 99pao成人国产永久免费视频| 欧美一级久久久久久久大片| 欧美激情中文字幕一区二区| 国产一区二区三区在线观看免费视频 | 久久久噜噜噜| 国产精品久久97| 亚洲精品乱码久久久久久按摩观| 欧美一级黄色网| 欧美日韩亚洲国产一区| 激情久久久久久久久久久久久久久久| 99精品视频网| 欧美成人按摩| 在线日韩欧美| 欧美中文在线观看| 欧美日韩综合在线| 日韩视频在线一区二区三区| 久热这里只精品99re8久| 国产精品亚洲欧美| 亚洲网站视频| 欧美性开放视频| 日韩午夜在线视频| 欧美激情1区2区3区| 在线观看亚洲| 老司机精品视频一区二区三区| 国产目拍亚洲精品99久久精品| 一区二区三区四区国产| 欧美日本在线播放| 亚洲精品视频在线| 欧美激情第8页| 亚洲精选成人| 欧美黄色一级视频| 亚洲精品中文字幕在线| 欧美极品欧美精品欧美视频| 亚洲国产成人不卡| 免费成人毛片| 亚洲日本中文字幕免费在线不卡| 欧美电影美腿模特1979在线看| 亚洲福利视频网| 欧美国产91| 一道本一区二区| 国产精品第十页| 亚洲免费中文| 国产亚洲精品久久飘花| 久久久久久久999精品视频| 国产综合视频| 欧美成年网站| 中文在线资源观看网站视频免费不卡 | 国产精品久久久久久久久免费樱桃 | 曰本成人黄色| 欧美激情国产日韩| 亚洲午夜女主播在线直播| 国产精品v欧美精品∨日韩| 午夜精品久久久久| 国色天香一区二区| 欧美不卡视频一区发布| 一区二区三区欧美视频| 国产精品乱人伦一区二区| 久久精品女人天堂| 亚洲国产精品一区二区尤物区 | 亚洲网站视频福利| 国产自产精品| 欧美另类综合| 亚洲欧美视频在线观看视频| 国产午夜精品视频免费不卡69堂| 久久婷婷一区| 亚洲午夜激情网页| 激情综合网激情| 国产精品成人免费视频| 久久久久久一区二区| 99国产精品久久久久久久成人热| 国产精品久久久久毛片软件| 美国成人毛片| 午夜精品久久久久| 亚洲精品免费电影| 国产一区久久| 欧美午夜宅男影院在线观看| 久久亚洲精品网站| 亚洲一区二区三区色| 亚洲第一级黄色片| 国产日韩欧美三级| 欧美日韩四区| 另类综合日韩欧美亚洲| 亚洲欧美成人| 亚洲精品在线视频| 国产资源精品在线观看| 国产精品久久久久久av下载红粉| 女同一区二区| 久久亚洲精品中文字幕冲田杏梨| 亚洲一区欧美一区| 亚洲精品美女91| 在线精品视频一区二区| 国产一区二区精品| 国产精品性做久久久久久| 欧美日韩精品免费| 欧美精品午夜| 欧美成人dvd在线视频| 欧美一区二区三区四区夜夜大片| 一区二区三区久久精品| 91久久中文字幕| **欧美日韩vr在线| 激情久久一区| 影音欧美亚洲| 在线观看91精品国产入口| 国产综合久久久久久鬼色| 国产欧美va欧美不卡在线| 国产精品美女久久久免费| 国产精品成人免费精品自在线观看| 欧美精品91| 欧美精品日韩综合在线| 欧美激情一区二区在线 | 亚洲高清视频在线| 一区二区三区在线观看欧美 | 在线观看一区二区视频| 一区二区亚洲精品国产| 一区二区亚洲精品| 亚洲二区在线| 亚洲国产欧美在线| 亚洲精品中文在线| 亚洲一二三区精品| 欧美一区二区三区久久精品| 欧美一区永久视频免费观看| 欧美在线短视频| 久久久国产视频91| 久久夜色精品国产欧美乱极品 | 欧美黄色aa电影| 欧美日韩伦理在线| 国产精品人人做人人爽| 海角社区69精品视频| 亚洲二区三区四区| 亚洲免费观看在线视频| 亚洲一区在线观看视频| 久久精品成人一区二区三区| 欧美 日韩 国产精品免费观看| 欧美精品一卡| 国产麻豆综合| 亚洲国产精品久久久久婷婷老年| 亚洲精品影视在线观看| 亚洲欧美综合v| 美女精品一区| 国产精品日日摸夜夜添夜夜av| 国产一区二区三区在线播放免费观看| 亚洲国产一区二区三区a毛片 | 欧美精品亚洲精品| 国产日韩欧美精品一区| 亚洲精品美女久久7777777| 亚洲影院在线观看| 蜜臀va亚洲va欧美va天堂| 噜噜噜久久亚洲精品国产品小说| 美女主播精品视频一二三四| 国产精品都在这里| 亚洲国产成人av好男人在线观看| 99re热这里只有精品视频| 欧美一区视频在线| 欧美理论电影在线观看| 国产有码在线一区二区视频| 99精品视频网| 久久夜色精品国产欧美乱极品| 国产精品xxxxx| 亚洲国产视频一区二区| 欧美一级理论性理论a| 欧美日韩精品在线| 亚洲国产精品一区在线观看不卡| 午夜精品久久久久久| 欧美日韩国产综合久久| 亚洲国产美女精品久久久久∴| 亚洲欧美制服另类日韩| 欧美少妇一区| 日韩视频三区| 久色成人在线| 国内精品免费在线观看| 午夜精品久久久久影视 | 国产一区二区三区视频在线观看| 亚洲图片在区色| 欧美日韩一区二区免费在线观看 | 亚洲精品综合|