LinetypeManager API
大约 2 分钟
LinetypeManager API
LinetypeManager 管理线型定义的注册、查询和使用。
引入
const { LinetypeManager, LinetypeDefinition, LinetypeParser,
SimpleLinetypeElement, ShapeLinetypeElement,
LinetypeElementType, RotationMode } = vjmapext;通过 mapcadLayer.linetypeManager 访问实例。
LinetypeManager 方法
register(definition)
注册一个线型定义。
| 参数 | 类型 | 说明 |
|---|---|---|
| definition | LinetypeDefinition | 线型定义对象 |
mapcadLayer.linetypeManager.register({
name: 'MY_DASH',
description: '自定义虚线',
elements: [
{ type: LinetypeElementType.Simple, length: 10 },
{ type: LinetypeElementType.Simple, length: -5 },
]
});get(name)
获取线型定义。
| 参数 | 类型 | 说明 |
|---|---|---|
| name | string | 线型名称 |
| 返回 | LinetypeDefinition | undefined | 线型定义或 undefined |
getAll()
返回所有已注册的线型定义数组。
getNames()
返回所有已注册的线型名称数组。
类型定义
LinetypeDefinition
interface LinetypeDefinition {
name: string;
description: string;
elements: (SimpleLinetypeElement | ShapeLinetypeElement)[];
}SimpleLinetypeElement
简单线型元素:正数=实线段,负数=间隔,0=点。
interface SimpleLinetypeElement {
type: LinetypeElementType.Simple;
length: number;
}ShapeLinetypeElement
带形(Shape)的复杂线型元素。
interface ShapeLinetypeElement {
type: LinetypeElementType.Shape;
shapeName: string;
shapeScale: number;
shapeRotation: number;
rotationMode: RotationMode;
}枚举
enum LinetypeElementType {
Simple,
Shape
}
enum RotationMode {
Absolute, // 相对世界坐标
Relative // 相对线段方向
}LinetypeParser
解析 AutoCAD PAT 格式字符串。
parse(patString)
| 参数 | 类型 | 说明 |
|---|---|---|
| patString | string | PAT 格式定义字符串 |
| 返回 | LinetypeDefinition | 解析后的线型定义 |
const { LinetypeParser } = vjmapext;
const def = LinetypeParser.parse('*FENCE,Fence ---- X ---- X ----\nA,.25,-.1,[BOX,ltypeshp.shx,x=-.1,s=.1],-.1,1');
mapcadLayer.linetypeManager.register(def);三角化函数
tessellateLinetype(def, start, end, scale)
将线型定义应用到一条线段上,返回可渲染的坐标数组。
| 参数 | 类型 | 说明 |
|---|---|---|
| def | LinetypeDefinition | 线型定义 |
| start | Point2D | 线段起点 |
| end | Point2D | 线段终点 |
| scale | number | 缩放比例 |
| 返回 | Point2D[][] | 分段的坐标数组 |
tessellateSegment(def, start, end, scale)
与 tessellateLinetype 类似,用于单段处理。
形状库
getShape(name)
获取已注册的形状定义。
addShape(name, def)
注册新的形状定义,供 ShapeLinetypeElement 使用。
getShapeNames()
返回所有已注册形状的名称数组。
内置线型
| 名称 | 描述 |
|---|---|
CONTINUOUS | 实线 |
DASHED | 虚线 |
DOTTED | 点线 |
DASHDOT | 点划线 |
CENTER | 中心线 |
PHANTOM | 虚拟线 |
HIDDEN | 隐藏线 |
BORDER | 边界线 |
DIVIDE | 分割线 |