当前位置: 澳门新濠3559 > 编程 > 正文

Revit作为一个平台类的软件,进入设计院两周

时间:2019-11-07 12:30来源:编程
  结语        正式学习Revit开发的第一天,千里之行始于足下! 话不多说,直接上代码! 插件调用       1、添加RevitAPI.dll和RevitUI.dll到项目的参考引用中。它们可以Revit的安装目录

 

结语

       正式学习Revit开发的第一天,千里之行始于足下!

话不多说,直接上代码!

插件调用

      1、 添加RevitAPI.dll和RevitUI.dll到项目的参考引用中。它们可以Revit的安装目录下或者SDK包中找到。2、继承IExternalCommand接口并实现接口的Execute()方法。

代码示例:

//一、命令调用

using Autodesk.Revit.DB; 

using Autodesk.Revit.UI; 

using Autodesk.Revit.Attributes; 

 

namespace HelloWorld 

    [澳门新濠3559,Transaction(TransactionMode.Manual)] 

    public class HelloWorld : IExternalCommand 

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

        { 

            TaskDialog.Show("Title", "Hello World"); 

            return Result.Succeeded; 

        } 

    } 

//二、外部应用程序 

using Autodesk.Revit.DB; 

Revit作为一个平台类的软件,进入设计院两周。using Autodesk.Revit.UI; 

using Autodesk.Revit.Attributes; 

 

namespace App 

    [Transaction(TransactionMode.Manual)] 

    public class App : IExternalApplication 

    { 

        public Result OnShutdown(UIControlledApplication application) 

        { 

            TaskDialog.Show("结束", "结束"); 

            return Result.Succeeded; 

        } 

 

        public Result OnStartup(UIControlledApplication application) 

        { 

            TaskDialog.Show("开始", "开始"); 

            return Result.Succeeded; 

        } 

    } 

}

 public class WorkSetHelper
 {
        public void AddElementsToWorkSet(Document doc, List<Element> elements)
        {
            if (doc.IsWorkshared == true)
            {
                var workset = GetWorkset(doc);
                if (workset != null)
                {
                    var worksetID = workset.Id.IntegerValue;
                    using (Transaction tran = new Transaction(doc, "[ToolSet] Add Elemens To WorkSet"))
                    {
                        tran.Start();
                        foreach (var ele in elements)
                        {
                            Parameter wsparam = ele.get_Parameter(BuiltInParameter.ELEM_PARTITION_PARAM);
                            if (wsparam != null)
                            {
                                wsparam.Set(worksetID);
                            }                          
                        }
                        tran.Commit();
                    }                   
                }               
            }
        }

        public Workset GetWorkset(Document doc)
        {
            Workset newWorkset = null;
            // Worksets can only be created in a document with worksharing enabled
            if (doc.IsWorkshared)
            {
                string worksetName = "WorkSetName";
                // Workset name must not be in use by another workset
                if (WorksetTable.IsWorksetNameUnique(doc, worksetName))
                {
                    using (Transaction tran = new Transaction(doc, "[ToolSet] Create Work Set For ToolSet"))
                    {
                        tran.Start();
                        newWorkset = Workset.Create(doc, worksetName);
                        tran.Commit();
                    }
                }
                else
                {
                    IList<Workset> worksetList = new FilteredWorksetCollector(doc).OfKind(WorksetKind.UserWorkset).ToWorksets();
                    foreach (Workset workset in worksetList)
                    {
                        if (workset.Name.Contains(worksetName))
                        {
                            return workset;
                        }
                    }
                }
            }
            return newWorkset;
        }
 }

Revit介绍

       Revit专为建筑信息模型(BIM)构建的一款建模软件。随着BIM概念在国内的兴起,各大设计院对Revit建模的需求增多,相关的基于Revit的二次开发也逐渐增多。具体介绍不在搬运。

       Revit是专为BIM构建的软件,了解Revit必须先了解BIM。BIM的概念不仅仅是二维图纸到三维模型的变化,BIM是一个信息管理和交互的平台。Revit既然作为专为BIM构建的软件,那么他就必须能够管理模型和信息。

参考:

       Revit作为一个平台类的软件,那么必须有平台的功能:1、可自定义的菜单2、加载外部插件3、提供外部插件调用的借口。

结尾:

注册插件

Revit通过AddIn文件本质是Xml文件)来加载外部插件。文件格式如下:

<?xml version="1.0" encoding="utf-8"?>

<RevitAddIns>

<!—调用外部插件的类型[Command]和[Application]-->

<AddIn Type="Command">

<!—程序集用于反射调用插件-->

<Assembly>D:HelloWorldbinDebugHelloWorld.dll</Assembly>

<!—唯一标示-->

<AddInId>4d8936ea-82ca-49b0-abc0-d0904d8bd716</AddInId>

<FullClassName>HelloWorld.Class1</FullClassName>

<!—显示的名称-->

<Text>HelloWorld</Text>

<!—开发商信息-->

<VendorId>ABC</VentorId>

</AddIn>

</RevitAddIns>

       进入设计院两周,发现市面上的Revit插件与设计院的需求差距还是很大的,设计院对视图的显示方面的要求较高。一个人在中心从事Revit插件开发压力山大啊,告诉自己慢慢来,能赢!

序言:

此分类记录自己的Revit学习之路。初学者难免一叶障目,不见泰山,欢迎一起交流学习!

Revit菜单

Revit 二次开发创建自定义外部选项卡时 需要引用Revit·外部应用接口,然后在Revit启动的时候(OnStartup)创建 Tab,Panel,Button。由于二次开发菜单经常变动,总去调程序十分麻烦。所以应该将菜单定义到一个配置文件中,Revit启动的时候去读取菜单配置。这部分博主刚做过,后续会详细介绍。

编辑:编程 本文来源:Revit作为一个平台类的软件,进入设计院两周

关键词:

  • 上一篇:没有了
  • 下一篇:没有了