• 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元素管为一个或多个原始元素生成零件元素的策略。

  • 相关阅读:
    spring 中的@Import注解和@ImportResource注解
    注意@Bean中的initMethod和destroyMethod
    AnnotationConfigApplicationContext.的用法的核心代码
    JSR330的注解和spring的原生注解的比较
    用JSR的@Inject代替@Autowired完成自动装配
    用@Component注解代替@Configuration注解,定义bean
    用filters定制化spring的包扫描
    linux 别名设置
    Vmware workstation 安装解压 vmwaretools 提示只读文件
    linux 基础
  • 原文地址:https://www.cnblogs.com/minhost/p/12702414.html
Copyright © 2020-2023  润新知