前言
本文介绍 Revit API 的填充样式,主要涉及FillPatternElement
、FillPattern
、FillGrid
。
内容
下面介绍FillPatternElement
、FillPattern
、FillGrid
,以及它们之间的关系。
FillPatternElement
对应的是这里的填充样式。
从类接口中可以看出,一个 FillPatternElement
实际上就是通过一个 FillPattern
来创建的,它实际上是包了一个 FillPattern
。
namespace Autodesk.Revit.DB
{
// An element that represents a fill pattern.
public class FillPatternElement : Element
{
public static FillPatternElement Create(Document document, FillPattern fillPattern);
public static FillPatternElement GetFillPatternElementByName(Document document, FillPatternTarget target, string name);
public FillPattern GetFillPattern();
public void SetFillPattern(FillPattern newFillPattern);
}
}
上图中的砖块部分可以看做是 FillPattern
的一个显示:
每一个 FillPattern
有一个或者多个 FillGrid
,简简单单一个砖的 FillPattern
有 2 个FillGrid
。
先来看两个最简单的 FillPattern
。
对于 100mm Horizontal 这个样式,它实际上是一组平行线,线间距是 100mm,可以用这个 FillPattern
的构造方法创建:
public FillPattern(string name, FillPatternTarget target, FillPatternHostOrientation orientation, double angle, double spacing1);
通过 LookUp 查看,内容对应的是 API 暴露出来的 FillPattern
的属性和方法:
这个例子里面只有一个 FillGrid
:
这个样式是水平线,100mm 等于 0.328083989501312 feet,而 feet 是 Revit 内部单位,即表示线间距1(1)。
通过 FillGrid
的接口 public UV GetHatchingDirection()
得到 (0, -0.328083989501312)
,这是平行的实线之间的距离。另外,为什么是负数,根据API文档的说明,这本来就是反着保存的,即实际上是 (0, 0.328083989501312)
。
public double CalculateLengthPerArea();
public double CalculateLinesPerLength();
因为只有一个 FillGrid
,所以都是 1/ 0.328083989501312 = 3.048
。
对于 100mm Squares 这个样式,它实际上是两组平行线,线间距是 100mm,可以用这个 FillPattern
的构造方法创建,和 100mm Horizontal 比多了一个参数,double spacing2
:
public FillPattern(string name, FillPatternTarget target, FillPatternHostOrientation orientation, double angle, double spacing1, double spacing2);
通过 LookUp 查看,内容对应的是 API 暴露出来的 FillPattern
的属性和方法,和上一个比,它有两个 FillGrid
:
其中一个 FillGrid
和上面的相同,下面这个是不同的:
内容和规则两个 FillGrid
是一致的。FillPattern
中的 Area 和 Length 是它里面的 FillGrid
之和。
下面回到砖头,Brick 75x225。
比较它和 100mm Squares 的 FillGrid
的不同,主要集中在竖线部分。
从文件中找到 Brick 75x225 的定义,竖线的位移是 75, 112.5
,画 75
,不画的长度也是 75
。
*Brick 75x225 UK Std, UK standard brick running bond
;%TYPE=MODEL
0, 0, 0, 0, 75
90, 0, 0, 75, 112.5, 75, -75
注: 默认填充图案存储在以下位置的 revit.pat 和 revit metric.pat 文件中:%ProgramFiles%\Autodesk\Autodesk Revit 2019\Data。“revit metric.pat”文件包含各种公制的砖石填充图案和 ISO 填充图案。
对于这个定义的解释,可以参考:
Revit API 开发周边:自定义填充样式 Fill Pattern
官方文档:创建自定义填充图案文件