@buerli.io/headless 0.13.1-beta.1 → 0.13.1-beta.10

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.
@@ -4,5 +4,5 @@ export { Solid, solid, History, history, createPolyline };
4
4
  // Re-export types form @buerli.io/classcad for easier usage
5
5
  export { init, BooleanOperationType, ChamferType, DataType, FlipType, ReorientedType, WorkAxisType, WorkCoordSystemType, WorkPlaneType, WorkPointType, ViewType, OrientationType, ExtrusionType, SVGModusType, } from '@buerli.io/classcad';
6
6
  // Re-export types form @buerli.io/core for easier usage
7
- export { GraphicType, ContainerType, MeshTypes, EdgeTypes, CurveTypes, EntityTypes, PointTypes } from '@buerli.io/core';
7
+ export { GraphicType, ContainerType, MeshTypes, EdgeTypes, CurveTypes, EntityTypes, PointTypes, } from '@buerli.io/classcad';
8
8
  //#endregion Re-export type definitions
@@ -6,13 +6,12 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
6
6
  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
7
7
  };
8
8
  /* eslint-disable max-lines */
9
- import { ccAPI } from '@buerli.io/classcad';
9
+ import { createApi, BuerliCadFacade } from '@buerli.io/classcad';
10
10
  import { api, getDrawing } from '@buerli.io/core';
11
11
  import { Group, Mesh, MeshStandardMaterial, Scene } from 'three';
12
12
  import { mergeBufferGeometries } from 'three-stdlib';
13
13
  import { getDifferentColoredMeshesFromEntity } from './utils/meshes';
14
14
  const isShape = (entity) => entity && entity.type === 'Shape';
15
- const solidAPI = ccAPI.solid;
16
15
  const toCCVec = (args) => ({ x: args[0], y: args[1], z: args[2] });
17
16
  const toCCNbrVec = (args) => ({ x: args[0], y: args[1], z: args[2] });
18
17
  const toArray = (v) => (Array.isArray(v) ? v : v.toArray());
@@ -195,46 +194,47 @@ export class Solid {
195
194
  }
196
195
  init(callback) {
197
196
  const promise = new Promise(async (resolve, reject) => {
198
- const drawingId = await ccAPI.base.createCCDrawing('solid');
197
+ const drawingId = await BuerliCadFacade.utils.connect('solid');
199
198
  if (!drawingId)
200
- throw new Error('Drawing could not be created');
199
+ throw new Error('Connection/Drawing could not be created');
201
200
  this.drawingId = drawingId;
202
- await solidAPI.init(drawingId);
201
+ const { solid: solidAPI, baseModeler: baseModelerAPI, common: commonAPI } = createApi(drawingId).v0;
202
+ await solidAPI.init();
203
203
  const publicApi = {
204
204
  getDrawingId: () => drawingId,
205
205
  getDrawing: () => getDrawing(drawingId),
206
206
  getState: () => api.getState(),
207
- setFacetingParameters: (distanceTol, angleTol) => this.resolve(async () => ccAPI.common.setFacetingParameters(drawingId, distanceTol, angleTol)),
207
+ setFacetingParameters: (distanceTol, angleTol) => this.resolve(async () => commonAPI.setFacetingParameters(distanceTol, angleTol)),
208
208
  box: (length, width, height) => {
209
209
  return this.resolve(async () => {
210
- return solidAPI.createBox(drawingId, length, width, height);
210
+ return solidAPI.createBox(length, width, height);
211
211
  });
212
212
  },
213
213
  clearSolids: () => {
214
214
  return this.resolve(async () => {
215
- return solidAPI.clearSolids(drawingId);
215
+ return solidAPI.clearSolids();
216
216
  });
217
217
  },
218
218
  clearSolid: (target) => {
219
219
  return this.resolve(async ([rTarget]) => {
220
- return solidAPI.clearSolid(drawingId, rTarget);
220
+ return solidAPI.clearSolid(rTarget);
221
221
  }, target);
222
222
  },
223
223
  cone: (length, diameter1, diameter2) => {
224
224
  return this.resolve(async () => {
225
- return solidAPI.createCone(drawingId, length, diameter1, diameter2);
225
+ return solidAPI.createCone(length, diameter1, diameter2);
226
226
  });
227
227
  },
228
228
  copy: (target) => {
229
229
  return this.resolve(async ([rTarget]) => {
230
- return solidAPI.copy(drawingId, rTarget);
230
+ return solidAPI.copy(rTarget);
231
231
  }, target);
232
232
  },
233
233
  createBufferGeometry: async (_solid) => {
234
234
  await this.queue;
235
235
  this.queue = Promise.resolve(0);
236
236
  const rSolid = await _solid;
237
- await ccAPI.baseModeler.requestVisualisationOfObject(drawingId, rSolid);
237
+ await baseModelerAPI.requestVisualisationOfObject(rSolid);
238
238
  const entity = await getEntity(drawingId, rSolid);
239
239
  if (entity != null) {
240
240
  return mergeBufferGeometries(entity.meshes.map(m => m.geometry));
@@ -253,7 +253,7 @@ export class Solid {
253
253
  try {
254
254
  for (var solids_1 = __asyncValues(solids), solids_1_1; solids_1_1 = await solids_1.next(), !solids_1_1.done;) {
255
255
  const _solid = solids_1_1.value;
256
- await ccAPI.baseModeler.requestVisualisationOfObject(drawingId, _solid);
256
+ await baseModelerAPI.requestVisualisationOfObject(_solid);
257
257
  const cDrawing = getDrawing(drawingId);
258
258
  const solidObject = cDrawing.structure.tree[_solid];
259
259
  if (solidObject) {
@@ -313,56 +313,56 @@ export class Solid {
313
313
  },
314
314
  cylinder: (length, diameter) => {
315
315
  return this.resolve(async () => {
316
- return solidAPI.createCylinder(drawingId, length, diameter);
316
+ return solidAPI.createCylinder(length, diameter);
317
317
  });
318
318
  },
319
319
  edgeLoops: (breps) => {
320
320
  return this.resolve(async ([rBreps]) => {
321
- return solidAPI.edgeLoops(drawingId, rBreps);
321
+ return solidAPI.edgeLoops(rBreps);
322
322
  }, breps);
323
323
  },
324
324
  export: (solidIds) => {
325
325
  return this.resolve(async ([rSolidIds]) => {
326
- return solidAPI.export(drawingId, 'stp', rSolidIds);
326
+ return solidAPI.export('stp', rSolidIds);
327
327
  }, solidIds);
328
328
  },
329
329
  extendSolidAtPlane: (target, point, normal, distance) => {
330
330
  return this.resolve(async ([rTarget]) => {
331
- return solidAPI.solidExtendAtPlane(drawingId, rTarget, makeNbrVec(point), makeNbrVec(normal), distance);
331
+ return solidAPI.solidExtendAtPlane(rTarget, makeNbrVec(point), makeNbrVec(normal), distance);
332
332
  }, target);
333
333
  },
334
334
  extrude: (height, region) => {
335
335
  return this.resolve(async () => {
336
336
  if (isShape(region)) {
337
337
  const curveArray = makeCCData(region.curves);
338
- return solidAPI.createExtrudeRegion(drawingId, makeNbrVec(height), curveArray);
338
+ return solidAPI.createExtrudeRegion(makeNbrVec(height), curveArray);
339
339
  }
340
340
  else {
341
- return solidAPI.createExtrude(drawingId, makeNbrVec(height), region.points, region.bulges);
341
+ return solidAPI.createExtrude(makeNbrVec(height), region.points, region.bulges);
342
342
  }
343
343
  });
344
344
  },
345
345
  fillet: (radius, edges) => {
346
346
  return this.resolve(async ([rEdges]) => {
347
- return solidAPI.createFillet(drawingId, radius, rEdges);
347
+ return solidAPI.createFillet(radius, rEdges);
348
348
  }, edges);
349
349
  },
350
350
  import: (data) => {
351
351
  return this.resolve(async () => {
352
- return solidAPI.import(drawingId, data, 'stp');
352
+ return solidAPI.import(data, 'stp');
353
353
  });
354
354
  },
355
355
  intersect: (solidId, keepSolid, ...bodies) => {
356
356
  return this.resolve(async ([rSolidId, ...rBodies]) => {
357
357
  for (const rBody of rBodies) {
358
- solidAPI.intersect(drawingId, rSolidId, keepSolid, rBody);
358
+ solidAPI.intersect(rSolidId, keepSolid, rBody);
359
359
  }
360
360
  return rSolidId;
361
361
  }, solidId, ...bodies);
362
362
  },
363
363
  load: (data) => {
364
364
  return this.resolve(async () => {
365
- const productId = await solidAPI.load(drawingId, data, 'ofb', true);
365
+ const productId = await solidAPI.load(data, 'ofb', true);
366
366
  if (productId !== null) {
367
367
  const drawing = getDrawing(drawingId);
368
368
  const solids = drawing.structure.tree[productId].solids;
@@ -375,23 +375,23 @@ export class Solid {
375
375
  },
376
376
  mirror: (target, point, normal) => {
377
377
  return this.resolve(async ([rTarget]) => {
378
- return solidAPI.mirror(drawingId, rTarget, makeNbrVec(point), makeNbrEuler(normal));
378
+ return solidAPI.mirror(rTarget, makeNbrVec(point), makeNbrEuler(normal));
379
379
  }, target);
380
380
  },
381
381
  moveTo: (target, position) => {
382
382
  return this.resolve(async ([rTarget]) => {
383
- return solidAPI.moveTo(drawingId, rTarget, makeNbrVec(position));
383
+ return solidAPI.moveTo(rTarget, makeNbrVec(position));
384
384
  }, target);
385
385
  },
386
386
  offset: (target, offsetDistance) => {
387
387
  return this.resolve(async ([rTarget]) => {
388
- return solidAPI.offset(drawingId, rTarget, offsetDistance);
388
+ return solidAPI.offset(rTarget, offsetDistance);
389
389
  }, target);
390
390
  },
391
391
  pick: (target, type, ...points) => {
392
392
  return this.resolve(async ([rTarget]) => {
393
393
  const pts = points.map(pt => makeNbrVec(pt));
394
- const breps = await solidAPI.pick(drawingId, rTarget, type, ...pts);
394
+ const breps = await solidAPI.pick(rTarget, type, ...pts);
395
395
  if (breps !== null) {
396
396
  return Array.isArray(breps) ? breps : [breps];
397
397
  }
@@ -401,48 +401,48 @@ export class Solid {
401
401
  return this.resolve(async () => {
402
402
  if (isShape(region)) {
403
403
  const curveArray = makeCCData(region.curves);
404
- return solidAPI.createRevolveRegion(drawingId, makeNbrVec(position), makeNbrVec(direction), angle, curveArray);
404
+ return solidAPI.createRevolveRegion(makeNbrVec(position), makeNbrVec(direction), angle, curveArray);
405
405
  }
406
406
  else {
407
- return solidAPI.createRevolve(drawingId, makeNbrVec(position), makeNbrVec(direction), (angle / Math.PI) * 180, region.points, region.bulges);
407
+ return solidAPI.createRevolve(makeNbrVec(position), makeNbrVec(direction), (angle / Math.PI) * 180, region.points, region.bulges);
408
408
  }
409
409
  });
410
410
  },
411
411
  rotateTo: (target, point) => {
412
412
  return this.resolve(async ([rTarget]) => {
413
- return solidAPI.rotateTo(drawingId, rTarget, makeNbrEuler(point));
413
+ return solidAPI.rotateTo(rTarget, makeNbrEuler(point));
414
414
  }, target);
415
415
  },
416
416
  save: () => {
417
417
  return this.resolve(async () => {
418
- return solidAPI.save(drawingId, 'ofb');
418
+ return solidAPI.save('ofb');
419
419
  });
420
420
  },
421
421
  scale: (target, pointOrFactor) => {
422
422
  return this.resolve(async ([rTarget]) => {
423
423
  const lPointOrFactor = typeof pointOrFactor === 'number' ? pointOrFactor : makeNbrVec(pointOrFactor);
424
- return solidAPI.scale(drawingId, rTarget, lPointOrFactor);
424
+ return solidAPI.scale(rTarget, lPointOrFactor);
425
425
  }, target);
426
426
  },
427
427
  setFacetingParams: (distanceTol, angleTol) => {
428
428
  return this.resolve(async () => {
429
- return ccAPI.common.setFacetingParameters(drawingId, distanceTol, angleTol);
429
+ return commonAPI.setFacetingParameters(distanceTol, angleTol);
430
430
  });
431
431
  },
432
432
  slice: (target, point, normal) => {
433
433
  return this.resolve(async ([rTarget]) => {
434
- return solidAPI.slice(drawingId, rTarget, makeNbrVec(point), makeNbrVec(normal));
434
+ return solidAPI.slice(rTarget, makeNbrVec(point), makeNbrVec(normal));
435
435
  }, target);
436
436
  },
437
437
  sphere: (radius) => {
438
438
  return this.resolve(async () => {
439
- return solidAPI.createSphere(drawingId, radius);
439
+ return solidAPI.createSphere(radius);
440
440
  });
441
441
  },
442
442
  subtract: (solidId, keepSolid, ...bodies) => {
443
443
  return this.resolve(async ([rSolidId, ...rBodies]) => {
444
444
  for (const rBody of rBodies) {
445
- solidAPI.subtract(drawingId, rSolidId, keepSolid, rBody);
445
+ solidAPI.subtract(rSolidId, keepSolid, rBody);
446
446
  }
447
447
  return rSolidId;
448
448
  }, solidId, ...bodies);
@@ -450,7 +450,7 @@ export class Solid {
450
450
  union: (solidId, keepSolid, ...bodies) => {
451
451
  return this.resolve(async ([rSolidId, ...rBodies]) => {
452
452
  for (const rBody of rBodies) {
453
- solidAPI.union(drawingId, rSolidId, keepSolid, rBody);
453
+ solidAPI.union(rSolidId, keepSolid, rBody);
454
454
  }
455
455
  return rSolidId;
456
456
  }, solidId, ...bodies);
@@ -1,7 +1,9 @@
1
- import { BooleanOperationType, ChamferType, FlipType, ReorientedType, WorkAxisType, WorkCoordSystemType, WorkPlaneType, WorkPointType, ViewType, ExtrusionType, WorkGeomType, SVGModusType, LimitsParam, DimensionParam, LimitedValue } from '@buerli.io/classcad';
2
- import { DrawingID, ObjectIdent, ObjectID, GraphicType, InteractionInfo, GeometryElement, DrawingState, BuerliState } from '@buerli.io/core';
1
+ import { BooleanOperationType, ChamferType, FlipType, ReorientedType, WorkAxisType, WorkCoordSystemType, WorkPlaneType, WorkPointType, ViewType, ExtrusionType, WorkGeomType, SVGModusType, LimitsParam, DimensionParam, LimitedValue, GraphicType, ObjectID, ObjectIdent } from '@buerli.io/classcad';
2
+ import { DrawingID, InteractionInfo, GeometryElement, DrawingState, BuerliState } from '@buerli.io/core';
3
3
  import { BufferGeometry, Material, Object3D, Scene } from 'three';
4
4
  /**
5
+ * @deprecated replaced by @see BuerliCadFacade in buerli.io/classcad
6
+ *
5
7
  * History based modeling is similar to solid modeling, but it is non-destructive and
6
8
  * parametric. You can move back and forth in the modeling history and create feature
7
9
  * expressions which you can alter at a later time, prompting your model to re-calculate.
@@ -1515,6 +1517,24 @@ export declare type ApiHistory = {
1515
1517
  value: number | string;
1516
1518
  }[];
1517
1519
  }[]) => Promise<boolean>;
1520
+ /**
1521
+ * Renames existing expressions.
1522
+ * @param partId id or identifier of part to rename expressions from
1523
+ * @param members name of members to rename
1524
+ * @example
1525
+ * // Renames an expression from part's expression set
1526
+ * const part = api.createPart('Part')
1527
+ * api.createExpressions(part, { name: 'width', value: 20 }, { name: 'h', value: 40 })
1528
+ * api.renameExpressions(part, [{ name: 'h', newName: 'height'}])
1529
+ * await api.box(part, [], 20, 20, 'ExpressionSet.height')
1530
+ * const geoms = await api.createBufferGeometry(part)
1531
+ * return geoms.map(geom => new THREE.Mesh(geom, new THREE.MeshStandardMaterial()))
1532
+ * @return true or false, depending on whether renaming the expressions was successful or not
1533
+ */
1534
+ renameExpressions: (partId: VID | ObjectIdent, members: {
1535
+ name: string;
1536
+ newName: string;
1537
+ }[]) => Promise<boolean>;
1518
1538
  /**
1519
1539
  * Creates a mirror operation.
1520
1540
  * Mirrors the entities of an operation at the position of the plane reference
@@ -1759,11 +1779,11 @@ export declare type LinearPatternConstraintType = {
1759
1779
  /** distance between copies over the first direction (set by z-axis of mate1) */
1760
1780
  firstDirDistance: number | string;
1761
1781
  /** second mate constraint (z-axis sets the second direction) */
1762
- mate2: MateParam;
1782
+ mate2?: MateParam;
1763
1783
  /** number of copies over the second direction (set by z-axis of mate2) */
1764
- secondDirInstanceCount: number | string;
1784
+ secondDirInstanceCount?: number | string;
1765
1785
  /** number of copies over the second direction (set by z-axis of mate2) */
1766
- secondDirDistance: number | string;
1786
+ secondDirDistance?: number | string;
1767
1787
  };
1768
1788
  export declare type CircularPatternConstraintType = {
1769
1789
  /** id of the constraint */
@@ -2,7 +2,7 @@ import { History, history } from './history';
2
2
  import { Solid, solid, createPolyline } from './solid';
3
3
  export { Solid, solid, History, history, createPolyline };
4
4
  export { init, BooleanOperationType, ChamferType, DataType, FlipType, ReorientedType, WorkAxisType, WorkCoordSystemType, WorkPlaneType, WorkPointType, ViewType, OrientationType, ExtrusionType, SVGModusType, } from '@buerli.io/classcad';
5
- export { GraphicType, ContainerType, MeshTypes, EdgeTypes, CurveTypes, EntityTypes, PointTypes } from '@buerli.io/core';
5
+ export { GraphicType, ContainerType, MeshTypes, EdgeTypes, CurveTypes, EntityTypes, PointTypes, } from '@buerli.io/classcad';
6
6
  /**
7
7
  * Because babel typescript tools can not handle the type definitions
8
8
  * in an other way, they have to be re-exported as you can see in this code region.
@@ -1,6 +1,9 @@
1
- import { BuerliState, DrawingID, DrawingState, ObjectID } from '@buerli.io/core';
1
+ import { ObjectID } from '@buerli.io/classcad';
2
+ import { BuerliState, DrawingID, DrawingState } from '@buerli.io/core';
2
3
  import { BufferGeometry, Scene, Vector3 } from 'three';
3
4
  /**
5
+ * @deprecated replaced by @see BuerliCadFacade in buerli.io/classcad
6
+ *
4
7
  * A simple and intuitive javascript based api that incorporates solid operations like
5
8
  * shapes, booleans (unions, subtracts, intersections), extrusions, revolves, blends,
6
9
  * chamfers, slices, arrays, patterns, offsets, etc. The api is compatible with THREEJS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buerli.io/headless",
3
- "version": "0.13.1-beta.1",
3
+ "version": "0.13.1-beta.10",
4
4
  "description": "A non-manifold CAD workflow for the web",
5
5
  "author": "AWV Informatik AG <info@awv-informatik.ch>",
6
6
  "license": "ISC",
@@ -32,7 +32,7 @@
32
32
  "three-stdlib": ">=2.11.0"
33
33
  },
34
34
  "dependencies": {
35
- "@buerli.io/classcad": "0.13.1-beta.1",
35
+ "@buerli.io/classcad": "0.13.1-beta.10",
36
36
  "flat-promise": "^1.0.3"
37
37
  }
38
38
  }