前言
上一篇,介绍了族相关的知识,里面用到了创建族的方法。
这篇呢,就系统的讲一讲有关于“创建”方面的东西。
如上图所示,Creation命名空间下,有6个类。那就都看看吧。
一、AreaCreationData 与 FamilyInstanceCreationData
我们先来看看这两个Data,因为这两个类都是提供一些数据,而无法直接创建Area
或者FamilyInstance
对象。
如上图所示,AreaCreationData
,只能通过Document.NewAreas(datas)
方法使用,生成Area对象。除了本身的构造函数外,还能通过方法Application.NewAreaCreationData(..)
创建。
除此之外,该类便无用处。
FamilyInstanceCreationData
呢,看名称,就是创建族实例用的,而且它是用来批量创建族的。
在上一篇中,提到了Document上有12
个NewFamilyInstance(..)
重载方法,也提供了一个唯一使用此Data的方法:
public ICollection<ElementId> NewFamilyInstances2(
List<FamilyInstanceCreationData> dataList
)
回到 FamilyInstanceCreationData,它有10
个构造函数,和两个用以旋转的属性 Axis与 RotateAngle。
有意思的是,这10个构造函数,与Document上的12个族实例创建方法,并非是一一对应的。
到这里,这两个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中,Document
和FamilyItemFactory
都派生自基类ItemFactoryBase
,先看看这个基类。
创建族实例的方法在基类上,族是可以嵌套的毕竟。
三、Document
Document上的创建方法,大多于建筑结构有关,部分东西我都不知道说的是什么。
所以,这里就放一个图,不多做介绍。
四、FamilyItemFactory
FamilyItemFactory虽是从FamilyCreation属性上获取,但并不是只用在族创建上,也用在了标注创建上。
在几何体的创建,除了用于族文档的
GenericForm
,还有GeometryCreationUtilities
、DirectShape
、BRepBuilder
。
这里的方法所创建的对象,本身都没有构造函数。
总结
这一篇,过了一遍Creation命名空间下各个方法,将它们分类,并说明它们的用处。
我们看到,一些没有暴露出构造函数的对象,是能够通过一定方法创建出来的。
这篇又提到了些什么新东西呢,来统计下:Transform
(变换)、Curve
(曲线)、Face
(面)、Dimension
(标注)、Profile
(轮廓)、GenericForm
、GeometryCreationUtilities
(几何工具类)、DirectShape
、BRepBuilder
(BRep构造器)。
这些是加粗的,还有很多没加粗的。
真是越来越多了😶。