Revit二次开发 零件创建

Revit中的零件,可以将一个图元元素,分割成许多小的零件,而这些零件对原来元素的图元没影响,只会是显示一个效果,零件可以单独列入明细表、进行标记、过滤和导出。

一、不是所有元素都可以创建零件,能够创建零件的元素有以下几个

  • 墙(不包括叠层墙和幕墙);
  • 基础墙;
  • 楼板(不包括多层的形状编辑楼板);
  • 屋顶;
  • 天花板;
  • 结构楼板基础;
  • 楼板边缘;
  • 封檐带;
  • 檐沟;
  • 结构框架;
  • 柱;
  • 结构柱。
  • 可以进行零件创建的图元有:

二、创建零件主要通过PartUtils的几个静态方法:

1、AreElementsValidForCreateParts 验证给定的元素是否能创建零件

//给定的元素是否能够创建零件
public static bool AreElementsValidForCreateParts(
    Document document,
    ICollection<ElementId> elementIds
)

2、ArePartsValidForDivide 验证给定的元素是否能被当前零件分割

public static bool ArePartsValidForDivide(
    Document document,
    ICollection<ElementId> elementIdsToDivide
)

3、ArePartsValidForMerge 验证给定的零件元素是否能够合并

public static bool ArePartsValidForMerge(
    Document document,
    ICollection<ElementId> partIds
)

4、CreateMergedPart 将指定的部件合并为一个部件

public static PartMaker CreateMergedPart(
    Document document,
    ICollection<ElementId> partIds
)

5、CreateParts 将指定的元素创建为部件

//将指定元素创建为零件
public static void CreateParts(
    Document document,
    ICollection<ElementId> elementIds
)
//将链接元素创建为零件
public static void CreateParts(
    Document document,
    ICollection<LinkElementId> hostOrLinkElementIds
)

5、DivideParts 拆分零件类,比较核心,需要详细讲解,其函数功能是将传入的零件对象拆分更多小的零件,其函数的定义如下:

public static PartMaker DivideParts(
    Document document,
    ICollection<ElementId> elementIdsToDivide,
    ICollection<ElementId> intersectingReferenceIds,
    IList<Curve> curveArray,
    ElementId sketchPlaneId
)

参数说明如下:

elementIdsToDivide 需要拆分的元素对象

intersectingReferenceIds 和当前元素相交的参照面

curveArray 用于划分元素的线段

sketchPlaneId :当前对应的草图平面

其基本理解为:主要是在草图平面上绘制线段和参照面,把草图平面分割,然后拆分为小零件,比如一个楼板,其平行的两个面共享一个草图平面,所以一个楼板总共有三个草图平面,墙体也是。

6、FindMergeableClusters 查找指定元素的子部件

public static IList<ICollection<ElementId>> FindMergeableClusters(
    Document doc,
    ICollection<ElementId> partIds
)

7、GetAssociatedPartMaker 获取指定元素关联的部件集合

public static PartMaker GetAssociatedPartMaker(
    Document hostDocument,
    ElementId elementId
)

8、HasAssociatedParts 判断指定元素是否存在部件

public static bool HasAssociatedParts(
    Document hostDocument,
    ElementId elementId
)

9、其他几个函数,可以看API,很容易理解。

三、PartMaker与Part的区别

看类的名字就知道,PartMaker是零件创建器,Part是零件,零件不用说,代表一个零件的定义,那么零件创建器PartMaker是干什么用的呢?

我们将一个墙体创建零件后,会直接返回PartMaker对象,PartMaker对象起始就是Part的一个集合,PartMake元素管为一个或多个原始元素生成零件元素的策略。

原文地址:https://www.cnblogs.com/minhost/p/12702414.html

时间: 2024-11-09 04:43:10

Revit二次开发 零件创建的相关文章

Revit二次开发实现BIM盈利(以橄榄山快模为例讲解) 视频讲座下载

应笔墨闲谈群的邀请, 在10月11号晚8:30分在其群做了一次关于BIM二次开发的讲座. 由于参与者基本上都是从设计院和施工单位来的,所以对Revit二次开发做了纵览性的讲解, 以非程序员能听懂的方式讲解Revit二次开发.使这些行业领导或负责人能明白Revit二次开发的大概特点,以及其能实现的功能. 便于他们在自己的业务需要Revit插件时,能更好的思考和决策插件项目的立项和推动. 下面是这次讲座的提纲: Revit二次开发纵览,以橄榄山快模为例演示API概念Revit二次开发原理Revit二

踏上Revit二次开发之路 1 准备工作

1 准备工作 工欲善其事,必先利其器.在正式开始之前,我觉得有必要先盘点一下需要准备些什么. 1.1 硬件设备 PC机一台(谢绝Apple). 配置不能太低,至少要i3以上的cpu.4g以上的内存和支持DX11的独立显卡,否则跑不动Revit,建议不低于i5 CPU和8g内存.SSD不是必须品,我敢保证,当你把360.电脑管家和金山毒霸之类装了四五个以后,开机时间肯定会比裸奔的5400转机械硬盘长很多(珍爱生命,远离国产软件全家桶). 1.2 必要软件 1.2.1 64位Windows 7或8操

Revit 二次开发 修改对象的颜色

//修改对象颜色 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class ChangeColor : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { ChangeElementColor(comm

Revit二次开发实现BIM盈利(以橄榄山快模为例解说) 视频讲座下载

应笔墨闲谈群的邀请, 在10月11号晚8:30分在其群做了一次关于BIM二次开发的讲座. 因为參与者基本上都是从设计院和施工单位来的,所以对Revit二次开发做了纵览性的解说, 以非程序猿能听懂的方式解说Revit二次开发.使这些行业领导或负责人能明确Revit二次开发的大概特点,以及其能实现的功能. 便于他们在自己的业务须要Revit插件时,能更好的思考和决策插件项目的立项和推动. 以下是这次讲座的提纲: Revit二次开发纵览,以橄榄山快模为例演示API概念Revit二次开发原理Revit二

Revit 二次开发 自动选中对象

//获取选中对象 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class setSelectEle : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { SetSelectionElement(co

Revit二次开发基础-在附加模块中添加外部工具选项

想必想投身与Revit二次开发的朋友们可能会出现这样的一种情景,当我们打开自己的revit(2014版本以上)时,点击附加模块,会发现缺少一个外部工具这个按钮!!!是不是Autodesk给你藏起来了,其实还真是! 接下来我就给大家演示下如何在附加模块下添加外部工具这个按钮. 本人使用的是Revit2016,所以以下是以该版本进行演示. 首先我们需要在Autodesk官网下载一个2016版本的SDK,如图所示: 另附网站:http://usa.autodesk.com/adsk/servlet/i

Revit二次开发,删除载入的族

Document doc = commandData.Application.ActiveUIDocument.Document; Family family = null; string s = "c:/xxx.rfa"; Transaction tran = new Transaction(doc,"载入族"); tran.Start(); bool b = doc.LoadFamily(s, out family); tran.Commit(); if (b)

Revit二次开发(一)获取参数

对于Revit的二次开发,基本技能需要Revit熟练使用,C#基本的语法,WPF的使用(MVVM或其他框架的使用),在此基础上进行开发 基本的格式 namespace ClassLibrary2 { [Transaction(TransactionMode.Manual)] public class Class1:IExternalCommand # 外部命令的接口 { public Result Execute(ExternalCommandData commandData, ref stri

Revit二次开发之十六 IExportContext的使用

如何将revit文件进行数据导出和数据转换,是非常重要的问题,是解决我们如何将revit的数据解析为我们自己的数据,在revit的二次开发中,给我们提供IExportContext接口.当前接口可用户模型轻量化导出.自定义格式导出等. 当前接口在数据导出中,执行如下的顺序: 通过以上的导出,可以将revit的信息全部导出为需要的数据格式. 原文地址:https://www.cnblogs.com/minhost/p/12005635.html