#
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
    • Matrix4(四阶矩阵)

      • 定义方式:
      // 空参构造一个4 X 4的单位矩阵
      var matrix = new Matrix4();
      
      1
      2
      • 属性:
      .elements 	// 使用一维数组模拟存储四阶矩阵 List<Number>类型
      
      1

# 规则和语法介绍

  • 变量赋值:
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
  • if语句:
if (a > 10) {
    b = a + 1;
} else if (a > 5) {
    b = a-2;
} else {
    b = a;
}
1
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
  • 方法定义:
function methodName(arg1) {
    var a = arg1 + 5;
    return a;
}
1
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
  • 其它:
// 注释方法
// var a = 10;

//打印输出
print(100);
1
2
3
4
5