mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-23 17:04:00 +01:00
apply fillet and exit if there is selection on point #13
This commit is contained in:
parent
0ccbe50c7c
commit
d6e6ec0dcd
2 changed files with 40 additions and 16 deletions
|
|
@ -441,6 +441,19 @@ ParametricManager.prototype.unlinkObjects = function(a, b) {
|
|||
_unlink(b, a);
|
||||
};
|
||||
|
||||
ParametricManager.prototype.findCoincidentConstraint = function(point1, point2) {
|
||||
for (let subSys of this.subSystems) {
|
||||
for (let c of subSys.constraints) {
|
||||
if (c.NAME === 'coi' &&
|
||||
((c.a.id === point1.id && c.b.id === point2.id) ||
|
||||
(c.b.id === point1.id && c.a.id === point2.id))) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
ParametricManager.prototype.coincident = function(objs) {
|
||||
if (objs.length == 0) return;
|
||||
this.linkObjects(objs);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,20 @@ export class FilletTool extends Tool {
|
|||
this.viewer = viewer;
|
||||
}
|
||||
|
||||
restart() {
|
||||
for (let master of this.viewer.selected) {
|
||||
if (master instanceof EndPoint) {
|
||||
for (let slave of master.linked) {
|
||||
if (slave instanceof EndPoint) {
|
||||
if (this.breakLinkAndMakeFillet(master, slave)) {
|
||||
this.viewer.toolManager.releaseControl();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
makeFillet(point1, point2) {
|
||||
function shrink(point1) {
|
||||
var a, b;
|
||||
|
|
@ -78,24 +92,21 @@ export class FilletTool extends Tool {
|
|||
mouseup(e) {
|
||||
var candi = this.getCandidate(e);
|
||||
if (candi == null) return;
|
||||
var point1 = candi[0];
|
||||
var point2 = candi[1];
|
||||
const point1 = candi[0];
|
||||
const point2 = candi[1];
|
||||
this.breakLinkAndMakeFillet(point1, point2)
|
||||
}
|
||||
|
||||
var pm = this.viewer.parametricManager;
|
||||
for (var i = 0; i < pm.subSystems.length; i++) {
|
||||
var subSys = pm.subSystems[i];
|
||||
for (var j = 0; j < subSys.constraints.length; j++) {
|
||||
var c = subSys.constraints[j];
|
||||
if (c.NAME === 'coi' &&
|
||||
((c.a.id === point1.id && c.b.id === point2.id) ||
|
||||
(c.b.id === point1.id && c.a.id === point2.id))) {
|
||||
pm.remove(c);
|
||||
this.makeFillet(point1, point2);
|
||||
this.viewer.deselectAll();
|
||||
return;
|
||||
}
|
||||
}
|
||||
breakLinkAndMakeFillet(point1, point2) {
|
||||
const pm = this.viewer.parametricManager;
|
||||
const coi = pm.findCoincidentConstraint(point1, point2);
|
||||
if (coi != null) {
|
||||
pm.remove(coi);
|
||||
this.makeFillet(point1, point2);
|
||||
this.viewer.deselectAll();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static isLine(line) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue