Revit二次开发 零件创建

Posted minhost

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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元素管为一个或多个原始元素生成零件元素的策略。

 

以上是关于Revit二次开发 零件创建的主要内容,如果未能解决你的问题,请参考以下文章

在Revit二次开发里,如何在代码实现获得Revit里 所有的族的类别?

Revit API二次开发入门,完整学习流程,附源码

Revit二次开发之 视图

revit 二次开发之读取参数

Revit二次开发_外部事件

revit文件发生不可恢复的错误(二次开发)