17. Revit API: Creation

前言

上一篇,介绍了族相关的知识,里面用到了创建族的方法。

这篇呢,就系统的讲一讲有关于“创建”方面的东西。

如上图所示,Creation命名空间下,有6个类。那就都看看吧。

在这里插入图片描述

一、AreaCreationData 与 FamilyInstanceCreationData

我们先来看看这两个Data,因为这两个类都是提供一些数据,而无法直接创建Area或者FamilyInstance对象。

如上图所示,AreaCreationData,只能通过Document.NewAreas(datas)方法使用,生成Area对象。除了本身的构造函数外,还能通过方法Application.NewAreaCreationData(..)创建。
除此之外,该类便无用处。

FamilyInstanceCreationData呢,看名称,就是创建族实例用的,而且它是用来批量创建族的。
在上一篇中,提到了Document上有12NewFamilyInstance(..)重载方法,也提供了一个唯一使用此Data的方法:

public ICollection<ElementId> NewFamilyInstances2(
    List<FamilyInstanceCreationData> dataList
)

回到 FamilyInstanceCreationData,它有10个构造函数,和两个用以旋转的属性 AxisRotateAngle

有意思的是,这10个构造函数,与Document上的12个族实例创建方法,并非是一一对应的。

image.png

到这里,这两个Data就结束了,关于Area、族实例,关于它们创建方法的使用和差异,就不做介绍了。就几个方法而已,对着参数使用就是了。


二、Application

我们知道,除了Creation.Application,还有一个ApplicationServices.Application,还有UIApplication、UIControlledApplication等等。

前面的文章说过,UI与非UI的关系,是“由UI级别到DB级别的入口”,那么这里,就是

“在DB级别提供快速创建对象的方法”

这也是Creation下几个类的作用。

var appCreation = commandData.Application.Application.Create;

在这里插入图片描述

回到Application,里面是真的只有方法,那么就看方法。
我把它分为了几类:
在这里插入图片描述

2.1. 对象有构造函数

创建的对象本身存在构造函数,这里只是提供了一个快捷方法。

这种做法,与过滤器FilteredElementCollector如出一辙。

看导图,关联类和作用都写了,加粗表示后续会讲的。

在这里插入图片描述

2.2. 对象无构造函数

无构造函数的类,就只能通过Revit提供的方法创建了。

在Application中,我目前只接触到了CurveLoopsProfile,那几个PointOn的,更是连使用的地方都没有检索到,很迷惑。

在这里插入图片描述

二、ItemFactoryBase

Document(DB) 上,可以获取到两种Create,一个是Create,另一个是FamilyCreate

稍稍回忆下,Document分为项目文档和族文档。通过属性IsFamilyDocument可以判断。

所以,这里分为两个就好理解了。

var uiDoc = commandData.Application.ActiveUIDocument; 
var docCreation = uiDoc.Document.Create;  // Document
var familyDocCreation = uiDoc.Document.FamilyCreate;  // FamilyItemFactory

Creation中,DocumentFamilyItemFactory都派生自基类ItemFactoryBase,先看看这个基类。

创建族实例的方法在基类上,族是可以嵌套的毕竟。

在这里插入图片描述


三、Document

Document上的创建方法,大多于建筑结构有关,部分东西我都不知道说的是什么。

所以,这里就放一个图,不多做介绍。

在这里插入图片描述

四、FamilyItemFactory

FamilyItemFactory虽是从FamilyCreation属性上获取,但并不是只用在族创建上,也用在了标注创建上。

在几何体的创建,除了用于族文档的GenericForm,还有GeometryCreationUtilitiesDirectShape BRepBuilder

这里的方法所创建的对象,本身都没有构造函数。

在这里插入图片描述


总结

这一篇,过了一遍Creation命名空间下各个方法,将它们分类,并说明它们的用处。

我们看到,一些没有暴露出构造函数的对象,是能够通过一定方法创建出来的。

这篇又提到了些什么新东西呢,来统计下:Transform(变换)、Curve(曲线)、Face(面)、Dimension(标注)、Profile(轮廓)、GenericFormGeometryCreationUtilities(几何工具类)、DirectShapeBRepBuilder(BRep构造器)。

这些是加粗的,还有很多没加粗的。

真是越来越多了😶。

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值