# CrownCAD二次开发
# 开发语言
二次开发在系统中定义了新的编程语言CrownCAD Script,该语言在形式上与Javascript/Java语言比较相似,减少了用户的学习成本。
# 数据类型介绍
- 基础数据类型:
| 类型 | 标识 | 示例 | 复制方式 |
|---|---|---|---|
| 整数 | Integer | 123 | 值复制 |
| 浮点型 | Number | 123.456 or 123 | 值复制 |
| 布尔类型 | Boolean | true or false | 值复制 |
| 字符串 | String | "String" or 'String' | 值复制 |
| 数组 | List | [] or [123] | 引用复制 |
| 字典类型 | KVObject | {} or {temp1: 123, "temp2":456} | 引用复制 |
- 特殊数据类型:
| 类型 | 标识 | 定义方式 | 复制方式 |
|---|---|---|---|
| 点 | Point | new Point(x,y,z); //三维点 new Point(x,y); //二维点 | 值复制 |
| 方向 | Direction | new Direction(lineId); //通过直线Id创建 new Direction(pnt1, pnt2); //通过两点创建 | 值复制 |
| 轴 | Axis | new Axis(lineId); //通过直线Id创建 new Axis(pnt1, pnt2); //通过两点创建 | 值复制 |
| 变量 | Variable | new Variable(100); // 通过常量创建 new Variable('varRef'); // 通过变量名创建 | 值复制 |
Enum数据类型:
- EntityType(实体类型)
元 素
Solid Sketch Surface Curve DatumPlane DatumLine 含 义 三维体 草图 三维曲面 三维曲线 基准面 基准线 - ElementType(元素类型)
元 素
Vertex Edge Face Point Dimension Curve Surface 含 义 顶点 边 面 点(暂未开放) 约束(暂未开放) 曲线(暂未开放) 曲面(暂未开放) - DocumentType(文档类型)
元 素 Part Assembly Drawing Mesh 含 义 零件 装配 工程图(暂未开放) 网格(暂未开放) - VariableType(变量类型)
元 素 Length Angle Number 含 义 长度 角度 数值 - VariableUnit(变量单位)
元 素 mm cm m degree radian number 含 义 毫米 厘米 米 角度 弧度 数值 对应变量类型 Length Length Length Angle Angle Number - QueryType(拾取元素类型)
元 素
Instance Feature Solid Shell Sketch DatumPlane DatumLine Surface Face Curve Edge Vertex OriginPoint PointOnCurve Point 含 义 装配实例
特征 实体 三维曲面
草图 基准面 基准线 平面 面 曲线 边线 顶点 坐标源点 线上点 草图点
几何数据类型:
Vector3(三维向量)
- 定义方式:
// 空参构建 [0, 0, 0] var b = new Vector3(); // 参数构建 [0, 1, 0] var a = new Vector3(0, 1, 0); // 通过在程序中定义的点构建 [p.x, p.y, p.z] // 无法通过拾取件构建 var p = new Point(); var vector2 = new Vector3(p);1
2
3
4
5
6
7
8
9
10- 属性:
.x // 三维向量的x值, Number类型 .y // 三维向量的y值, Number类型 .z // 三维向量的z值, Number类型1
2
3复制方式:
引用复制方法API: 点次跳转
Matrix4(四阶矩阵)
- 定义方式:
// 空参构造一个4 X 4的单位矩阵 var matrix = new Matrix4();1
2- 属性:
.elements // 使用一维数组模拟存储四阶矩阵 List<Number>类型1复制方式:
引用复制方法API: 点次跳转
# 规则和语法介绍
- 变量赋值:
var a = 10;
var b = 'hello' + a;
var c;
c = true;
var list = [];
list.add(a);
var object1 = {'k1': 1, 'k2': 2};
object1['k1'] = 3;
object1.put('k3',3);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- if语句:
if (a > 10) {
b = a + 1;
} else if (a > 5) {
b = a-2;
} else {
b = a;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
- 循环语句:
//for循环
for (var i = 0; i < 10; ++i) {
print(i)
}
//foreach循环
var list = [1,2,3];
foreach (var item : list) {
print(item);
}
//while循环
while (i < 100) {
if (a == 10) {
i++;
continue;
}
if (a > 20) {
break;
}
i++;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 方法定义:
function methodName(arg1) {
var a = arg1 + 5;
return a;
}
1
2
3
4
2
3
4
- 程序的导入导出:
// 导出
function function1() {
print("function1()");
}
export function function2() {
print("function2()");
}
var a = 200;
export var b = 100.0;
export {a, function1};
// 导入
// import * from "./导出"; // 导入目标程序中的导出的全部变量和方法
import {
function1,
function2 as function3,
a as aa,
b
} from "./导出";
function1();
function3();
print(aa);
print(b);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 其它:
// 注释方法
// var a = 10;
//打印输出
print(100);
1
2
3
4
5
2
3
4
5