mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-14 20:33:30 +01:00
Validate geometry after solving
This commit is contained in:
parent
e83d605a39
commit
e6e4b2203d
2 changed files with 35 additions and 4 deletions
|
|
@ -76,6 +76,18 @@ TCAD.TWO.Viewer = function(canvas) {
|
|||
this.refresh();
|
||||
};
|
||||
|
||||
TCAD.TWO.Viewer.prototype.validateGeom = function() {
|
||||
for (var i = 0; i < this.layers.length; i++) {
|
||||
var objs = this.layers[i].objects;
|
||||
for (var j = 0; j < objs.length; j++) {
|
||||
if (!objs[j].validate()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
TCAD.TWO.Viewer.prototype.addSegment = function(x1, y1, x2, y2, layer) {
|
||||
var a = new TCAD.TWO.EndPoint(x1, y1);
|
||||
var b = new TCAD.TWO.EndPoint(x2, y2);
|
||||
|
|
@ -339,6 +351,11 @@ TCAD.TWO.SketchObject.prototype.visit = function(onlyVisible, h) {
|
|||
return h(this);
|
||||
};
|
||||
|
||||
TCAD.TWO.SketchObject.prototype.validate = function() {
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
TCAD.TWO.SketchObject.prototype.getDefaultTool = function(viewer) {
|
||||
return new TCAD.TWO.DragTool(this, viewer);
|
||||
};
|
||||
|
|
@ -446,6 +463,10 @@ TCAD.TWO.utils.extend(TCAD.TWO.Segment, TCAD.TWO.SketchObject);
|
|||
|
||||
TCAD.TWO.Segment.prototype._class = 'TCAD.TWO.Segment';
|
||||
|
||||
TCAD.TWO.Segment.prototype.validate = function() {
|
||||
return TCAD.math.distanceAB(this.a, this.b) > TCAD.TOLERANCE;
|
||||
};
|
||||
|
||||
TCAD.TWO.Segment.prototype.collectParams = function(params) {
|
||||
this.a.collectParams(params);
|
||||
this.b.collectParams(params);
|
||||
|
|
|
|||
|
|
@ -354,24 +354,34 @@ TCAD.TWO.ParametricManager.prototype.prepare = function(locked, alg) {
|
|||
}
|
||||
solver.solveSystem(fineLevel);
|
||||
}
|
||||
|
||||
var viewer = this.viewer;
|
||||
function sync() {
|
||||
var rollback = [];
|
||||
for (p in pdict) {
|
||||
_p = pdict[p];
|
||||
rollback.push([_p._backingParam, _p._backingParam.get()]);
|
||||
_p._backingParam.set(_p.get());
|
||||
}
|
||||
|
||||
//Make sure all coincident constraints are equal
|
||||
|
||||
var rollbackCo = [];
|
||||
for (ei = 0; ei < equalsIndex.length; ++ei) {
|
||||
var master = equalsDict[ equalsIndex[ei][0]];
|
||||
for (i = 1; i < equalsIndex[ei].length; ++i) {
|
||||
var slave = equalsDict[equalsIndex[ei][i]];
|
||||
rollbackCo.push([slave.id, slave.get()]);
|
||||
slave.set(master.get());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (false && !viewer.validateGeom()) { //Disabled
|
||||
for (i = 0; i < rollback.length; ++i) {
|
||||
rollback[i][0].set(rollback[i][0]);
|
||||
}
|
||||
for (i = 0; i < rollbackCo.length; ++i) {
|
||||
rollbackCo[i][0].set(rollbackCo[i][0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
solver.solve = solve;
|
||||
|
|
|
|||
Loading…
Reference in a new issue