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 +84 -0
- package/package.json +2 -1
- package/slvs.d.ts +191 -0
- package/slvs.js-3.wasm +0 -0
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.
|
|
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
|