slvs 3.1.0-dev.14 → 3.1.0-dev.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # slvs
2
+
3
+ SolveSpace's geometric constraint solver for the browser and node.js
4
+
5
+ ## example
6
+
7
+ ```html
8
+ <script src="slvs.js"></script>
9
+ <script type="text/javascript">
10
+ solvespace().then(function (slvs) {
11
+ slvs.clearSketch()
12
+ var g = 1
13
+ var wp = slvs.addBase2D(g)
14
+ var p0 = slvs.addPoint2D(g, 0, 0, wp)
15
+ slvs.dragged(g, p0, wp)
16
+ var p1 = slvs.addPoint2D(g, 90, 0, wp)
17
+ slvs.dragged(g, p1, wp)
18
+ var line0 = slvs.addLine2D(g, p0, p1, wp)
19
+ var p2 = slvs.addPoint2D(g, 20, 20, wp)
20
+ var p3 = slvs.addPoint2D(g, 0, 10, wp)
21
+ var p4 = slvs.addPoint2D(g, 30, 20, wp)
22
+ slvs.distance(g, p2, p3, 40, wp)
23
+ slvs.distance(g, p2, p4, 40, wp)
24
+ slvs.distance(g, p3, p4, 70, wp)
25
+ slvs.distance(g, p0, p3, 35, wp)
26
+ slvs.distance(g, p1, p4, 70, wp)
27
+ var line1 = slvs.addLine2D(g, p0, p3, wp)
28
+ // slvs.angle(g, line0, line1, 45, wp, false)
29
+ slvs.addConstraint(
30
+ g,
31
+ slvs.C_ANGLE,
32
+ wp,
33
+ 45.0,
34
+ slvs.E_NONE,
35
+ slvs.E_NONE,
36
+ line0,
37
+ line1,
38
+ slvs.E_NONE,
39
+ slvs.E_NONE,
40
+ false,
41
+ false,
42
+ )
43
+ var result = slvs.solveSketch(g, false)
44
+ console.log(result['result'], '==', 0)
45
+ var x = slvs.getParamValue(p2, 0)
46
+ var y = slvs.getParamValue(p2, 1)
47
+ console.log(39.54852, x)
48
+ console.log(61.91009, y)
49
+
50
+
51
+ var r = 10
52
+ angle = 45
53
+ slvs.clearSketch()
54
+ var g = 1
55
+ var wp = slvs.addBase2D(g)
56
+ var p0 = slvs.addPoint2D(g, 0, 0, wp)
57
+ slvs.dragged(g, p0, wp)
58
+ var p1 = slvs.addPoint2D(g, 0, 10, wp)
59
+ slvs.distance(g, p0, p1, r, wp)
60
+ var line0 = slvs.addLine2D(g, p0, p1, wp)
61
+
62
+ var p2 = slvs.addPoint2D(g, 10, 10, wp)
63
+ var line1 = slvs.addLine2D(g, p1, p2, wp)
64
+ slvs.distance(g, p1, p2, r * (angle * (Math.PI / 180)), wp)
65
+ slvs.perpendicular(g, line0, line1, wp, false)
66
+
67
+ var p3 = slvs.addPoint2D(g, 10, 0, wp)
68
+ slvs.dragged(g, p3, wp)
69
+ var lineBase = slvs.addLine2D(g, p0, p3, wp)
70
+ slvs.angle(g, line0, lineBase, angle, wp, false)
71
+
72
+ var result = slvs.solveSketch(g, false)
73
+ console.log(result['result'], '==', 0)
74
+ var x = slvs.getParamValue(p2, 0)
75
+ var y = slvs.getParamValue(p2, 1)
76
+ console.log(12.62467, '==', x)
77
+ console.log(1.51746, '==', y)
78
+
79
+ q1 = slvs.Quaternion.from(1, 2, 3, 4)
80
+ q2 = slvs.Quaternion.from(1, 2, 3, 4)
81
+ console.log(q1.times(q2).rotationU().x)
82
+ })
83
+ </script>
84
+ ```
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "slvs",
3
- "version": "3.1.0-dev.14",
3
+ "version": "3.1.0-dev.15",
4
4
  "description": "<img src=\"res/freedesktop/solvespace-scalable.svg\" width=\"70\" height=\"70\" alt=\"SolveSpace Logo\" align=\"left\">",
5
5
  "main": "slvs.js",
6
+ "types": "slvs.d.ts",
6
7
  "scripts": {
7
8
  "test": "echo \"Error: no test specified\" && exit 1"
8
9
  },
package/slvs.d.ts ADDED
@@ -0,0 +1,191 @@
1
+ interface Entity {
2
+ h: number;
3
+ group: number;
4
+ type: number;
5
+ wrkpl: number;
6
+ normal: number;
7
+ distance: number;
8
+ param: [number, number, number, number];
9
+ }
10
+
11
+ interface Constraint {
12
+ h: number;
13
+ group: number;
14
+ type: number;
15
+ wrkpl: Entity;
16
+ valA: number;
17
+ ptA: Entity;
18
+ ptB: Entity;
19
+ entityA: Entity;
20
+ entityB: Entity;
21
+ entityC: Entity;
22
+ entityD: Entity;
23
+ other: boolean;
24
+ other2: boolean;
25
+ }
26
+
27
+ interface SolveResult {
28
+ result: number;
29
+ dof: number;
30
+ rank: number;
31
+ bad: number;
32
+ }
33
+
34
+ interface Vector {
35
+ x: number
36
+ y: number
37
+ z: number
38
+ }
39
+
40
+ interface Quaternion {
41
+ w: number
42
+ vx: number
43
+ vy: number
44
+ vz: number
45
+ plus(b: Quaternion): Quaternion;
46
+ minus(b: Quaternion): Quaternion;
47
+ scaledBy(s: number): Quaternion;
48
+ magnitude(): number;
49
+ withMagnitude(s: number): Quaternion;
50
+ rotationU(): Vector;
51
+ rotationV(): Vector;
52
+ rotationN(): Vector;
53
+ rotate(p: Vector): Vector;
54
+ toThe(p: number): Quaternion;
55
+ inverse(): Quaternion;
56
+ times(b: Quaternion): Quaternion;
57
+ mirror(): Quaternion;
58
+ }
59
+
60
+ interface QuaternionConstructor {
61
+ new(): Quaternion;
62
+ prototype: Quaternion;
63
+ from(w: number, vx: number, vy: number, vz: number): Quaternion;
64
+ }
65
+
66
+ interface SlvsModule {
67
+ C_POINTS_COINCIDENT: 100000;
68
+ C_PT_PT_DISTANCE: 100001;
69
+ C_PT_PLANE_DISTANCE: 100002;
70
+ C_PT_LINE_DISTANCE: 100003;
71
+ C_PT_FACE_DISTANCE: 100004;
72
+ C_PT_IN_PLANE: 100005;
73
+ C_PT_ON_LINE: 100006;
74
+ C_PT_ON_FACE: 100007;
75
+ C_EQUAL_LENGTH_LINES: 100008;
76
+ C_LENGTH_RATIO: 100009;
77
+ C_EQ_LEN_PT_LINE_D: 100010;
78
+ C_EQ_PT_LN_DISTANCES: 100011;
79
+ C_EQUAL_ANGLE: 100012;
80
+ C_EQUAL_LINE_ARC_LEN: 100013;
81
+ C_SYMMETRIC: 100014;
82
+ C_SYMMETRIC_HORIZ: 100015;
83
+ C_SYMMETRIC_VERT: 100016;
84
+ C_SYMMETRIC_LINE: 100017;
85
+ C_AT_MIDPOINT: 100018;
86
+ C_HORIZONTAL: 100019;
87
+ C_VERTICAL: 100020;
88
+ C_DIAMETER: 100021;
89
+ C_PT_ON_CIRCLE: 100022;
90
+ C_SAME_ORIENTATION: 100023;
91
+ C_ANGLE: 100024;
92
+ C_PARALLEL: 100025;
93
+ C_PERPENDICULAR: 100026;
94
+ C_ARC_LINE_TANGENT: 100027;
95
+ C_CUBIC_LINE_TANGENT: 100028;
96
+ C_EQUAL_RADIUS: 100029;
97
+ C_PROJ_PT_DISTANCE: 100030;
98
+ C_WHERE_DRAGGED: 100031;
99
+ C_CURVE_CURVE_TANGENT: 100032;
100
+ C_LENGTH_DIFFERENCE: 100033;
101
+ C_ARC_ARC_LEN_RATIO: 100034;
102
+ C_ARC_LINE_LEN_RATIO: 100035;
103
+ C_ARC_ARC_DIFFERENCE: 100036;
104
+ C_ARC_LINE_DIFFERENCE: 100037;
105
+
106
+ E_POINT_IN_3D: 50000;
107
+ E_POINT_IN_2D: 50001;
108
+ E_NORMAL_IN_3D: 60000;
109
+ E_NORMAL_IN_2D: 60001;
110
+ E_DISTANCE: 70000;
111
+ E_WORKPLANE: 80000;
112
+ E_LINE_SEGMENT: 80001;
113
+ E_CUBIC: 80002;
114
+ E_CIRCLE: 80003;
115
+ E_ARC_OF_CIRCLE: 80004;
116
+
117
+ E_NONE: Entity;
118
+ E_FREE_IN_3D: Entity;
119
+
120
+ isFreeIn3D(entity: Entity): boolean;
121
+ is3D(entity: Entity): boolean;
122
+ isNone(entity: Entity): boolean;
123
+ isPoint2D(entity: Entity): boolean;
124
+ isPoint3D(entity: Entity): boolean;
125
+ isNormal2D(entity: Entity): boolean;
126
+ isNormal3D(entity: Entity): boolean;
127
+ isLine(entity: Entity): boolean;
128
+ isLine2D(entity: Entity): boolean;
129
+ isLine3D(entity: Entity): boolean;
130
+ isCubic(entity: Entity): boolean;
131
+ isArc(entity: Entity): boolean;
132
+ isWorkplane(entity: Entity): boolean;
133
+ isDistance(entity: Entity): boolean;
134
+ isPoint(entity: Entity): boolean;
135
+
136
+ addPoint2D(grouph: number, u: number, v: number, workplane: Entity): Entity;
137
+ addPoint3D(grouph: number, x: number, y: number, z: number): Entity;
138
+ addNormal2D(grouph: number, workplane: Entity): Entity;
139
+ addNormal3D(grouph: number, qw: number, qx: number, qy: number, qz: number): Entity;
140
+ addDistance(grouph: number, value: number, workplane: Entity): Entity;
141
+ addLine2D(grouph: number, ptA: Entity, ptB: Entity, workplane: Entity): Entity;
142
+ addLine3D(grouph: number, ptA: Entity, ptB: Entity): Entity;
143
+ addCubic(grouph: number, ptA: Entity, ptB: Entity, ptC: Entity, ptD: Entity, workplane: Entity): Entity;
144
+ addArc(grouph: number, normal: Entity, center: Entity, start: Entity, end: Entity, workplane: Entity): Entity;
145
+ addCircle(grouph: number, normal: Entity, center: Entity, radius: Entity, workplane: Entity): Entity;
146
+ addWorkplane(grouph: number, origin: Entity, nm: Entity): Entity;
147
+ addBase2D(grouph: number): Entity;
148
+
149
+ addConstraint(
150
+ grouph: number,
151
+ type: number,
152
+ workplane: Entity,
153
+ val: number,
154
+ ptA: Entity,
155
+ ptB: Entity,
156
+ entityA: Entity,
157
+ entityB: Entity,
158
+ entityC: Entity,
159
+ entityD: Entity,
160
+ other: boolean,
161
+ other2: boolean,
162
+ ): Constraint;
163
+
164
+ coincident(grouph: number, entityA: Entity, entityB: Entity, workplane: Entity): Constraint;
165
+ distance(grouph: number, entityA: Entity, entityB: Entity, value: number, workplane: Entity): Constraint;
166
+ equal(grouph: number, entityA: Entity, entityB: Entity, workplane: Entity): Constraint;
167
+ equalAngle(grouph: number, entityA: Entity, entityB: Entity, entityC: Entity, entityD: Entity, workplane: Entity): Constraint;
168
+ equalPointToLine(grouph: number, entityA: Entity, entityB: Entity, entityC: Entity, entityD: Entity, workplane: Entity): Constraint;
169
+ ratio(grouph: number, entityA: Entity, entityB: Entity, value: number, workplane: Entity): Constraint;
170
+ symmetric(grouph: number, entityA: Entity, entityB: Entity, entityC: Entity): Constraint;
171
+ symmetricH(grouph: number, ptA: Entity, ptB: Entity, workplane: Entity): Constraint;
172
+ symmetricV(grouph: number, ptA: Entity, ptB: Entity, workplane: Entity): Constraint;
173
+ midpoint(grouph: number, ptA: Entity, ptB: Entity, workplane: Entity): Constraint;
174
+ horizontal(grouph: number, entityA: Entity, workplane: Entity, entityB: Entity): Constraint;
175
+ vertical(grouph: number, entityA: Entity, workplane: Entity, entityB: Entity): Constraint;
176
+ diameter(grouph: number, entityA: Entity, value: number): Constraint;
177
+ sameOrientation(grouph: number, entityA: Entity, entityB: Entity): Constraint;
178
+ angle(grouph: number, entityA: Entity, entityB: Entity, value: number, workplane: Entity, inverse: boolean): Constraint;
179
+ perpendicular(grouph: number, entityA: Entity, entityB: Entity, workplane: Entity, inverse: boolean): Constraint;
180
+ parallel(grouph: number, entityA: Entity, entityB: Entity, workplane: Entity): Constraint;
181
+ tangent(grouph: number, entityA: Entity, entityB: Entity, workplane: Entity): Constraint;
182
+ distanceProj(grouph: number, ptA: Entity, ptB: Entity, value: number): Constraint;
183
+ lengthDiff(grouph: number, entityA: Entity, entityB: Entity, value: number, workplane: Entity): Constraint;
184
+ dragged(grouph: number, ptA: Entity, workplane: Entity): Constraint;
185
+
186
+ getParamValue(entity: Entity, index: number): number;
187
+ solveSketch(hgroup: number, calculateFaileds: boolean): SolveResult;
188
+ clearSketch(): void;
189
+ }
190
+
191
+ export default function ModuleLoader(): Promise<SlvsModule>
package/slvs.js-3.wasm CHANGED
Binary file