symmetry constraint

This commit is contained in:
Val Erastov 2016-05-24 21:07:48 -07:00
parent 9efe277da0
commit b182e8aa4d
3 changed files with 42 additions and 2 deletions

View file

@ -184,7 +184,11 @@ TCAD.App2D = function() {
this.registerAction('llAngle', "Angle Between 2 Lines", function () {
app.viewer.parametricManager.llAngle(app.viewer.selected, prompt);
});
this.registerAction('symmetry', "Symmetry", function () {
app.viewer.parametricManager.symmetry(app.viewer.selected, prompt);
});
this.registerAction('analyzeConstraint', "Analyze Constraint", function () {
app.viewer.parametricManager.analyze(alert);
});

View file

@ -221,6 +221,11 @@ TCAD.TWO.ParametricManager.prototype.pointInMiddle = function(objs) {
this.add(new TCAD.TWO.Constraints.PointInMiddle(pl[0], pl[1]));
};
TCAD.TWO.ParametricManager.prototype.symmetry = function(objs) {
var pl = this._fetchPointAndLine(objs);
this.add(new TCAD.TWO.Constraints.Symmetry(pl[0], pl[1]));
};
TCAD.TWO.ParametricManager.prototype.pointOnArc = function(objs) {
var points = this._fetch(objs, ['TCAD.TWO.EndPoint'], 1);
var arcs = this._fetch(objs, ['TCAD.TWO.Arc', 'TCAD.TWO.Circle'], 1);
@ -1276,6 +1281,36 @@ TCAD.TWO.Constraints.PointInMiddle.prototype.getObjects = function() {
// ------------------------------------------------------------------------------------------------------------------ //
/** @constructor */
TCAD.TWO.Constraints.Symmetry = function(point, line) {
this.point = point;
this.line = line;
this.length = new TCAD.TWO.Ref(TCAD.math.distanceAB(line.a, line.b) / 2);
};
TCAD.TWO.Constraints.Symmetry.prototype.NAME = 'Symmetry';
TCAD.TWO.Constraints.Symmetry.prototype.UI_NAME = 'Symmetry';
TCAD.TWO.Constraints.Symmetry.prototype.getSolveData = function() {
var pointInMiddleData = TCAD.TWO.Constraints.PointInMiddle.prototype.getSolveData.call(this);
var pointOnLineData = TCAD.TWO.Constraints.PointOnLine.prototype.getSolveData.call(this);
return pointInMiddleData.concat(pointOnLineData);
};
TCAD.TWO.Constraints.Symmetry.prototype.serialize = function() {
return [this.NAME, [this.point.id, this.line.id]];
};
TCAD.TWO.Constraints.Factory[TCAD.TWO.Constraints.Symmetry.prototype.NAME] = function(refs, data) {
return new TCAD.TWO.Constraints.Symmetry(refs(data[0]), refs(data[1]));
};
TCAD.TWO.Constraints.Symmetry.prototype.getObjects = function() {
return [this.point, this.line];
};
// ------------------------------------------------------------------------------------------------------------------ //
/** @constructor */
TCAD.TWO.Constraints.Angle = function(p1, p2, p3, p4, angle) {
this.p1 = p1;

View file

@ -83,11 +83,12 @@
<button class="btn rbtn act-EntityEqualityConstraint" style="background-image: url(img/eq.png);"></button>
<button class="btn rbtn act-tangentConstraint" style="background-image: url(img/tgn.png);"></button>
<button class="btn rbtn act-RadiusConstraint" style="background-image: url(img/rad.png);"></button>
<button class="btn rbtn act-lockConstraint" ><i class="fa fa-lock"></i></button>
<button class="btn rbtn act-pointOnLine" style="background-image: url(img/vec/pointOnLine.svg);"></button>
<button class="btn rbtn act-pointOnArc" style="background-image: url(img/vec/pointOnArc.svg);" ></button>
<button class="btn rbtn act-pointInMiddle" style="background-image: url(img/vec/pointInMiddle.svg);"></button>
<button class="btn rbtn act-llAngle" style="background-image: url(img/vec/angle.svg);"></button>
<button class="btn rbtn act-symmetry" style="background-image: url(img/vec/symmetry.svg);"></button>
<button class="btn rbtn act-lockConstraint" ><i class="fa fa-lock"></i></button>
</div>
<div style="background: black; overflow: hidden; height: 100%;">
<canvas width="300" height="300" id="viewer"></canvas>