fix update bounds

This commit is contained in:
Val Erastov 2015-07-16 00:57:31 -07:00
parent b305388240
commit 0e533c2b2b
2 changed files with 58 additions and 13 deletions

View file

@ -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() {

View file

@ -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>