前端扩展命令开发
本部分内容主要以示例的方式展示如何开发前端命令。
以下是具体说明:
# 一、依赖的接口
ZwGetPoint:用于获取图纸选中点的坐标。 ZwCreateEntityByJson:用于通过 json 对象创建实体。
# 二、扩展命令样例
# 1.创建多段线命令
1、如何获取多段线的点?
(1) 写一个while循环通过ZwGetPoint函数获取点,详见下列代码。
设置按钮,点击按钮调用createPolylineFn函数,开始执行多段线命令,键盘输入enter或者ecs结束命令(退出while循环),并绘制创建好的实体。
async createPolylineFn() {
let getPoints = [];
let flag = true;
while(flag) {
let res = await window.ZwCloud2D.ZwDataManager.ZwGetPoint();
if (res.type === 0) {
getPoints.push(res.data.point.mX, res.data.point.mY, res.data.point.mZ);
} else if (res.type === 3) {
<!-- ECS取消命令 -->
flag = false;
getPoints = [];
} else {
flag = false;
break;
}
}
if (getPoints.length > 6) {
this.createPolyline(getPoints); // 见步骤2的函数
getPoints = []
}
}
(2) 构造多段线JSON,用于生成实体。
详细代码可参考https://cloud2d.zwsoft.cn/doc/open/questions/1.2 中的“一、演示基于 VUE 框架的图纸显示、打印、图纸编辑、电子签章、json实体转换功能”。
createPolyline(getPoints) {
let points = [];
for (let index = 0; index < getPoints.length - 2; index += 3) {
points.push([getPoints[index], getPoints[index + 1], getPoints[index + 2]])
}
<!-- 经过遍历后,points数据格式样例如下
points = [
[
120.0,
60.0,
100.0
],
[
146.0,
60.0,
20.0
],
[
142.0,
50.0,
30.0
],
[
117.0,
52.0,
50.0
]
]
-->
ZwCloud2D.ZwDataManager.ZwCreateEntityByJson({
"entityList": [
{
"type" : "ZcDb3dPolyline",
"points" : points,
"isClosed" : true,
"color" : 6,
"layer" : "0",
"lineType" : "ByLayer",
"lineTypeScale" : 1.0,
"lineweight" : -1,
"transparency" : 0
}
]
});
}
# 2.创建圆命令
1、如何获取圆心、半径?
(1) 写一个while循环通过ZwGetPoint函数获取圆心和端点,详见下列代码。
设置按钮,点击按钮调用createCircleFn函数,开始执行圆命令,键盘输入enter或者ecs结束命令(退出while循环),并绘制创建好的实体。
async createCircleFn() {
let getPoints = [];
let flag = true;
while(flag) {
if (getPoints.length === 6) {
flag = false;
break;
}
let res = await window.ZwCloud2D.ZwDataManager.ZwGetPoint();
// type:0表示获取的是点,3表示键盘ESC
if (res.type === 0) {
getPoints.push(res.data.point.mX, res.data.point.mY, res.data.point.mZ);
} else if (res.type === 3) {
flag = false;
getPoints = [];
} else {
flag = false;
break;
}
}
if (getPoints.length === 6) {
this.createCircle(getPoints);
getPoints = []
}
}
(2) 构造圆的JSON,用于生成实体。
详细代码可参考https://cloud2d.zwsoft.cn/doc/open/questions/1.2 中的“一、演示基于 VUE 框架的图纸显示、打印、图纸编辑、电子签章、json实体转换功能”。
createCircle(getPoints) {
let radius = Math.sqrt(
(getPoints[0] - getPoints[3]) * (getPoints[0] - getPoints[3]) +
(getPoints[1] - getPoints[4]) * (getPoints[1] - getPoints[4]) +
(getPoints[2] - getPoints[5]) * (getPoints[2] - getPoints[5])
);
let jsonData = {
"entityList": [
{
"type" : "ZcDbCircle",
"center" :[getPoints[0], getPoints[1], getPoints[2]],
"radius" : radius,
"color" : 6,
"layer" : "0",
"lineType" : "ByLayer",
"lineTypeScale" : 1.0,
"lineweight" : -1,
"normal" : [ 0.0, 0.0, 1.0 ],
"thickness" : 0.0,
"transparency" : 0
}
]
};
window.ZwCloud2D.ZwDataManager.ZwCreateEntityByJson(jsonData);
}