mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-19 15:02:21 +01:00
symmetry constraint
This commit is contained in:
parent
9efe277da0
commit
b182e8aa4d
3 changed files with 42 additions and 2 deletions
|
|
@ -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);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue