revit二次开发

【转】Revit二次开发——读取cad中的文字信息

人盡茶涼 提交于 2019-12-06 08:29:44
Revit读取cad的文字信息需要借助Teigha的开源dll,在程序中添加下图中红色框的dll文件的引用,其他的dll文件全部放在同一个文件夹中即可,运行的时候,会自动把这些dll文件全部复制到bin文件当中,同时,在Revit中运行插件,Revit也会自动加载这些dll文件。 以下是关键方法,在Revit里读取cad文字信息,图层信息,几何信息等。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using CreatBridgeForRevit2018.ElementsSelect; using CreatBridgeForRevit2018.Filter; using Teigha.Runtime; using Teigha.DatabaseServices; using System.IO; using System.Collections; using Teigha.Geometry; namespace

Revit二次开发之十五 RevitNet.dll 的使用

不羁岁月 提交于 2019-12-05 14:26:30
在revit开发中,经常面临如下问题 1、不开启revit创建项目; 2、不开启revit读取rvt的数据信息等 RevitNet.dll是Autodesk 用于开启一个revit操作的基本DLL 、无需启动界面并对 Revit 进行操作。也就是使用此dll可做到无需启动Revit便可进行创建、修改、读取等等。其基本API定义如下: 主要是获取Product对象,其代码如下: using Autodesk.Revit; using Autodesk.Revit.DB; using Autodesk.RevitAddIns; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace Sample { class Program { static readonly string[] Searchs = RevitProductUtility.GetAllInstalledRevitProducts().Select(x => x.InstallLocation).ToArray(); static Program

Revit二次开发的解决方式

匿名 (未验证) 提交于 2019-12-03 00:03:02
根据当前的程序,有以下几个点进行改良 1 日志每次revit生成的之后,就不会del,下次再次生成的时候,发现有日志,就不会在生成。采用将日志的名字修改为时间戳,每次运行的时候,产生独立的日志文件。 示例代码 string date = DateTime.Now.ToLongDateString().ToString() + DateTime.Now.ToLongTimeString(); date = date.Replace(":", "_"); roller.File = @"EventLogByrevit" + date + ".txt"; 这个代码放在log.cs中。在revit的命令中执行。这种方法调试的时候很有用。 2 在Model类中,增加一个每次都drop原来的库,单独重新生成一个库。 在Model类中的构造函数中增加 Database.SetInitializer<m构件>(new DropCreateDatabaseAlways<m构件>()); 3 DB中增加一个时间字段,看是什么时间保存的数据。 4 DB中增加一个文件名的字段,这个文件名是全文件名,所以在类中设置这个属性的时候,要保持1000个字符左右。不然个别的会很长,在保持的时候会报错。 5 在保持的时候,因为构建比较多,从网站上下载构建 在Negut的控制台上,执行以下命令 Install

revit二次开发addin文件

匿名 (未验证) 提交于 2019-12-02 22:06:11
command命令: <?xml version="1.0" encoding="utf-8"?> <AddIn Type="Command"> <Assembly>D:\HelloWorld\bin\Debug\HelloWorld.dll</Assembly> <AddInId>4d8936ea-82ca-49b0-abc0-d0904d8bd716</AddInId> <FullClassName>HelloWorld.Class1</FullClassName> <Text>HelloWorld</Text> <VendorId>ABC</VentorId> </AddIn> </RevitAddIns> application: <?xml version="1.0" encoding="utf-8"?> <RevitAddIns> <AddIn Type="Application"> <Name>External Tool</Name> <Assembly>E:\10.24\hello\Ribbon\bin\Debug\Ribbon.dll</Assembly> <ClientId>27f422f8-cde3-4004-8a6b-157aaa1a3ae2</ClientId> <FullClassName>HY.Ribbon</FullClassName>

Revit二次开发之 视图

我们两清 提交于 2019-11-30 13:20:09
视图是Revit所有显示的基础,Revit中包含二维和三维部分,其视图也有严格的区分,以下说明视图的分类情况。 TableView TableView有两个子类,分别是是所有表格视图,主要用于呈现明细表和电气视图 PanelScheduleView表示一个面板时间表,该时间表显示有关面板,连接到面板的电路及其相应负载的信息。 您可以创建一个计划表,该计划表列出连接到面板的电路,并显示有关每个电路的信息,例如面板上的位置,电路名称和视在负载。面板明细表显示四个主要信息部分:页眉,电路表,负载摘要和页脚。所选面板的新面板明细表视图显示在绘图区域中,并且面板明细表被添加到"面板明细表"文件夹下的项目浏览器中。面板计划显示以下数据: ViewSchedule表是数据的表格表示形式。典型的时间表显示类别的所有元素(门,房间等),每行代表一个元素,每列代表一个参数。 类表示计划表和其他类似计划表的视图,包括单类别和多类别计划表,关键计划表,物料起飞,视图列表,工作表列表,主题报告图例,修订计划表和注释块。 ViewSchedule.Export()方法将计划数据导出到文本文件。 View3D View3D 是自由定向的三维视图。 3D 视图有两种,透视图和等轴测图,在 Revit 用户界面中也称为正交视图。差异基于投影射线的关系。 View3D.IsPerspective 属性指示 3D

Revit二次开发 屏蔽复制构件产生的重复类型提示窗

ⅰ亾dé卋堺 提交于 2019-11-29 08:23:01
做了很久码农,也没个写博客的习惯,这次开始第一次写博客。 这个问题也是折腾了我接近一天时间,网上也没有任何的相关博文,于是决定分享一下,以供同样拥有此问题的小伙伴们参考。 内容源于目前在做的一个项目,已经封好的功能里,在生成构件时,会产生以 下弹窗。 原以为是前辈留下的信息提示,没想到是revit自带的信息提示,起因是在搜索构件时会查找当前文档的构件,查找到之后仅进行复制操作,于是就涉及到调用ElementTransformUtils.CopyElements()这个函数。 API如下: 其中最后一个参数就是我们要设置的部分。 因为源代码中在调用此函数时参数如下 于是跳到CopyPasteOptions类,发现有IDuplicateTypeNamesHandler这个事件接口。 这个接口就是专门处理上面的弹窗事件的,而由于在调用copy函数时传参时直接默认构造了CopyPasteOptions类,所以我猜测此时revit不确定该如何处理,于是给出弹窗提示。 那么接下来就好办了,我们自己创建一个CopyPasteOptions类,然后给它一个处理方式就行了。 改过后代码如下: transaction.Start("copyElement"); CopyPasteOptions opt = new CopyPasteOptions(); opt