diff --git a/web/app/cad/craft/craftPlugin.ts b/web/app/cad/craft/craftPlugin.ts index a1c0c42c..30e33a15 100644 --- a/web/app/cad/craft/craftPlugin.ts +++ b/web/app/cad/craft/craftPlugin.ts @@ -5,6 +5,7 @@ import CadError from '../../utils/errors'; import {MObject, MObjectIdGenerator} from '../model/mobject'; import {intercept} from "lstream/intercept"; import {CoreContext} from "context"; +import {MFace} from "../model/mface"; export function activate(ctx: CoreContext) { @@ -17,6 +18,13 @@ export function activate(ctx: CoreContext) { const models$ = state([]); const update$ = stream(); + models$.attach(models => models.forEach(model => model.traverse(m => { + if (m instanceof MFace) { + let sketch = ctx.sketchStorageService.readSketch(m.defaultSketchId); + m.setSketch(sketch); + } + }))); + let preRun = null; function modifyWithPreRun(request, modificationsUpdater, onAccepted, onError) { diff --git a/web/app/cad/model/mdatum.ts b/web/app/cad/model/mdatum.ts index 4e12c233..43be347f 100644 --- a/web/app/cad/model/mdatum.ts +++ b/web/app/cad/model/mdatum.ts @@ -27,7 +27,7 @@ export class MDatum extends MObject { } } - traverse(callback: (obj: MObject) => {}) { + traverse(callback: (obj: MObject) => void) { super.traverse(callback); this.xAxis.traverse(callback); this.yAxis.traverse(callback); diff --git a/web/app/cad/model/mface.ts b/web/app/cad/model/mface.ts index 833839aa..319b9bde 100644 --- a/web/app/cad/model/mface.ts +++ b/web/app/cad/model/mface.ts @@ -160,10 +160,10 @@ export class MFace extends MObject { return this._productionInfo; } - traverse(callback: (obj: MObject) => {}) { + traverse(callback: (obj: MObject) => void) { callback(this); - this.sketchObjects.forEach(callback); - this.sketchLoops.forEach(callback); + this.sketchObjects.forEach(i => i.traverse(callback)); + this.sketchLoops.forEach(i => i.traverse(callback)); } } diff --git a/web/app/cad/model/mobject.ts b/web/app/cad/model/mobject.ts index c8c24b9a..f60655fd 100644 --- a/web/app/cad/model/mobject.ts +++ b/web/app/cad/model/mobject.ts @@ -11,7 +11,7 @@ export abstract class MObject { this.id = id; } - traverse(callback: (obj: MObject) => {}) { + traverse(callback: (obj: MObject) => void): void { callback(this); } } diff --git a/web/app/cad/model/mshell.ts b/web/app/cad/model/mshell.ts index 0e9047b3..c9e9c5fe 100644 --- a/web/app/cad/model/mshell.ts +++ b/web/app/cad/model/mshell.ts @@ -7,22 +7,23 @@ import CSys from '../../math/csys'; export class MShell extends MObject { static TYPE = 'shell'; + csys: CSys; - constructor() { - super(MShell.TYPE, MObjectIdGenerator.next(MShell.TYPE, 'S')) - } - shell; faces = []; edges = []; vertices = []; - traverse(callback: (obj: MObject) => {}) { + constructor() { + super(MShell.TYPE, MObjectIdGenerator.next(MShell.TYPE, 'S')) + } + + traverse(callback: (obj: MObject) => void): void { callback(this); - this.faces.forEach(callback); - this.edges.forEach(callback); - this.vertices.forEach(callback); + this.faces.forEach(i => i.traverse(callback)); + this.edges.forEach(i => i.traverse(callback)); + this.vertices.forEach(i => i.traverse(callback)); } } diff --git a/web/app/cad/scene/selectionMarker/markerPlugin.js b/web/app/cad/scene/selectionMarker/markerPlugin.js index b4827670..c45b3e72 100644 --- a/web/app/cad/scene/selectionMarker/markerPlugin.js +++ b/web/app/cad/scene/selectionMarker/markerPlugin.js @@ -23,6 +23,7 @@ function createMarker(findEntity, requestRender) { let mObj = findEntity(entity, id); if (!mObj) { console.warn('no entity found to highlight: ' + entity + ' ' + id); + return; } marked.set(id, mObj); mObj.ext.view && mObj.ext.view.mark(color); diff --git a/web/app/cad/scene/viewSyncPlugin.js b/web/app/cad/scene/viewSyncPlugin.js index 9e0a80d1..1f03896c 100644 --- a/web/app/cad/scene/viewSyncPlugin.js +++ b/web/app/cad/scene/viewSyncPlugin.js @@ -2,9 +2,7 @@ import * as SceneGraph from '../../../../modules/scene/sceneGraph'; import {ShellView} from './views/shellView'; import {getAttribute} from '../../../../modules/scene/objectData'; import {MOpenFaceShell} from '../model/mopenFace'; -import {EDGE, FACE, SHELL, SKETCH_OBJECT} from './entites'; import {OpenFaceShellView} from './views/openFaceView'; -import {findDiff} from '../../../../modules/gems/iterables'; import {MShell} from '../model/mshell'; import {MDatum} from '../model/mdatum'; import DatumView from './views/datumView'; @@ -53,5 +51,6 @@ function sceneSynchronizer({services: {cadScene, cadRegistry, viewer, wizard, ac SceneGraph.addToGroup(cadScene.workGroup, modelView.rootGroup); } } + viewer.requestRender(); } } \ No newline at end of file diff --git a/web/app/cad/scene/views/faceView.js b/web/app/cad/scene/views/faceView.js index 134c17db..e3d1e5a2 100644 --- a/web/app/cad/scene/views/faceView.js +++ b/web/app/cad/scene/views/faceView.js @@ -15,6 +15,7 @@ export class SketchingView extends View { this.sketchLoopViews = []; this.rootGroup = SceneGraph.createGroup(); SceneGraph.addToGroup(this.rootGroup, this.sketchGroup); + this.updateSketch(); } updateSketch() { diff --git a/web/app/cad/sketch/sketcherPlugin.ts b/web/app/cad/sketch/sketcherPlugin.ts index d6b2f50e..a3df08a7 100644 --- a/web/app/cad/sketch/sketcherPlugin.ts +++ b/web/app/cad/sketch/sketcherPlugin.ts @@ -125,7 +125,6 @@ export function activate(ctx) { services.viewer.requestRender(); } - streams.craft.models.attach(updateAllSketches); streams.craft.models.attach(() => { if (inPlaceEditor.inEditMode) { if (!inPlaceEditor.face.ext.view) {