mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-29 20:07:01 +01:00
fix update bounds
This commit is contained in:
parent
b305388240
commit
0e533c2b2b
2 changed files with 58 additions and 13 deletions
|
|
@ -327,17 +327,27 @@ TCAD.TWO.Viewer.prototype.mark = function(obj, style) {
|
|||
|
||||
TCAD.TWO.Viewer.prototype.activeLayer = function() {
|
||||
var layer = this._activeLayer;
|
||||
if (layer == null) {
|
||||
if (this.layers.length == 0) {
|
||||
this.layers.push(new TCAD.TWO.Layer("JustALayer", TCAD.TWO.Styles.DEFAULT));
|
||||
if (layer == null || layer.readOnly) {
|
||||
layer = null;
|
||||
for (var i = 0; i < this.layers.length; i++) {
|
||||
var l = this.layers[i];
|
||||
if (!l.readOnly) {
|
||||
layer = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
layer = this.layers[0];
|
||||
}
|
||||
if (layer == null) {
|
||||
layer = new TCAD.TWO.Layer("JustALayer", TCAD.TWO.Styles.DEFAULT);
|
||||
this.layers.push(layer);
|
||||
}
|
||||
return layer;
|
||||
};
|
||||
|
||||
TCAD.TWO.Viewer.prototype.setActiveLayer = function(layer) {
|
||||
this._activeLayer = layer;
|
||||
if (!layer.readOnly) {
|
||||
this._activeLayer = layer;
|
||||
}
|
||||
};
|
||||
|
||||
TCAD.TWO.Viewer.prototype.deselectAll = function() {
|
||||
|
|
@ -351,6 +361,7 @@ TCAD.TWO.Layer = function(name, style) {
|
|||
this.name = name;
|
||||
this.style = style;
|
||||
this.objects = [];
|
||||
this.readOnly = false;
|
||||
};
|
||||
|
||||
TCAD.TWO.Viewer.prototype.fullHeavyUIRefresh = function() {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ TCAD.IO.prototype._loadSketch = function(sketch) {
|
|||
viewer.layers.push(layer);
|
||||
return layer;
|
||||
}
|
||||
var activeLayerCandidate = this.viewer.layers.length;
|
||||
if (sketch.layers !== undefined) {
|
||||
for (var l = 0; l < sketch.layers.length; ++l) {
|
||||
var layer = getLayer(this.viewer, sketch.layers[l].name);
|
||||
|
|
@ -107,14 +106,15 @@ TCAD.IO.prototype._loadSketch = function(sketch) {
|
|||
|
||||
if (sketch.constraints !== undefined) {
|
||||
for (var i = 0; i < sketch.constraints.length; ++i) {
|
||||
var c = this.parseConstr(sketch.constraints[i], index);
|
||||
this.viewer.parametricManager._add(c);
|
||||
try {
|
||||
var c = this.parseConstr(sketch.constraints[i], index);
|
||||
this.viewer.parametricManager._add(c);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
this.viewer.parametricManager.notify();
|
||||
}
|
||||
if (activeLayerCandidate < this.viewer.layers.length) {
|
||||
this.viewer.setActiveLayer(this.viewer.layers[activeLayerCandidate]);
|
||||
}
|
||||
};
|
||||
|
||||
TCAD.IO.prototype.cleanUpData = function() {
|
||||
|
|
@ -144,7 +144,7 @@ TCAD.IO.prototype._serializeSketch = function() {
|
|||
var layers = toSave[t];
|
||||
for (var l = 0; l < layers.length; ++l) {
|
||||
var layer = layers[l];
|
||||
var isBoundary = layer.name === '';
|
||||
if (layer.readOnly) continue;
|
||||
var toLayer = {name : layer.name, data : []};
|
||||
sketch.layers.push(toLayer);
|
||||
for (var i = 0; i < layer.objects.length; ++i) {
|
||||
|
|
@ -188,7 +188,8 @@ TCAD.IO.prototype._serializeSketch = function() {
|
|||
TCAD.IO.prototype.updateBoundary = function (boundary) {
|
||||
if (this.boundaryLayer === undefined) {
|
||||
this.boundaryLayer = new TCAD.TWO.Layer("bounds", TCAD.TWO.Styles.BOUNDS);
|
||||
this.viewer.layers.push(this.boundaryLayer);
|
||||
this.boundaryLayer.readOnly = true;
|
||||
this.viewer.layers.splice(0, 0, this.boundaryLayer);
|
||||
}
|
||||
var edges = [];
|
||||
var bbox = [Number.MAX_VALUE, Number.MAX_VALUE, - Number.MAX_VALUE, - Number.MAX_VALUE];
|
||||
|
|
@ -260,6 +261,39 @@ TCAD.IO.prototype.serializeConstr = function (c) {
|
|||
|
||||
TCAD.IO.prototype.svgExport = function (c) {
|
||||
|
||||
|
||||
var toExport = [this.viewer.layers];
|
||||
for (var t = 0; t < toExport.length; ++t) {
|
||||
var layers = toExport[t];
|
||||
for (var l = 0; l < layers.length; ++l) {
|
||||
var layer = layers[l];
|
||||
if (layer.readOnly) continue;
|
||||
var toLayer = {name : layer.name, data : []};
|
||||
for (var i = 0; i < layer.objects.length; ++i) {
|
||||
var obj = layer.objects[i];
|
||||
var to = {id: obj.id, _class: obj._class};
|
||||
if (obj.aux) to.aux = obj.aux;
|
||||
if (obj.edge !== undefined) to.edge = obj.edge;
|
||||
toLayer.data.push(to);
|
||||
if (obj._class === 'TCAD.TWO.Segment') {
|
||||
to.points = [point(obj.a), point(obj.b)];
|
||||
} else if (obj._class === 'TCAD.TWO.EndPoint') {
|
||||
to.location = point(obj);
|
||||
} else if (obj._class === 'TCAD.TWO.Arc') {
|
||||
to.points = [point(obj.a), point(obj.b), point(obj.c)];
|
||||
} else if (obj._class === 'TCAD.TWO.Circle') {
|
||||
to.c = point(obj.c);
|
||||
to.r = obj.r.get();
|
||||
} else if (obj._class === 'TCAD.TWO.Dimension' || obj._class === 'TCAD.TWO.HDimension' || obj._class === 'TCAD.TWO.VDimension') {
|
||||
to.a = obj.a.id;
|
||||
to.b = obj.b.id;
|
||||
to.flip = obj.flip;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
//<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
|
||||
//</svg>
|
||||
|
|
|
|||
Loading…
Reference in a new issue