awv3
Version:
AWV client CAD framework
1 lines • 7.19 kB
JavaScript
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _regenerator=require("babel-runtime/regenerator"),_regenerator2=_interopRequireDefault(_regenerator),_asyncToGenerator2=require("babel-runtime/helpers/asyncToGenerator"),_asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_sketch=require("sketcher/sketch"),_sketch2=_interopRequireDefault(_sketch),_constraint=require("sketcher/constraint"),_constraint2=_interopRequireDefault(_constraint),_geomobjects=require("sketcher/geomobjects"),_geomutils=require("sketcher/geomutils"),_three=require("three"),_three2=_interopRequireDefault(_three),FilletProcessor=function(){function e(t,n){(0,_classCallCheck3["default"])(this,e),this.sketcher=t,this.sketch=n,this.linearTolerance=.001,this.angularTolerance=.001}return e.prototype.FindPointsAt=function(e,t){var n=function(e,n){return t?e.distanceTo(n)<=t:e.equals(n)},r=this.sketch.getObjectsOnSketch(),s=[];return _sketch2["default"].ForObjectsWithChildren(r,function(t){t instanceof _geomobjects.Point&&n(t.position,e)&&s.push(t)}),s},e.prototype.FindConstraintsSymmetric=function(e,t,n){var r=this.sketch.getObjectsOnSketch(),s=r.filter(function(r){return r instanceof _constraint2["default"]&&r.typename===e[0]&&(r.args[0]==t&&r.args[1]==n||r.args[0]==n&&r.args[1]==t)});return s},e.prototype.FindIncidenceConstraints=function(e,t){return this.FindConstraintsSymmetric(_constraint2["default"].Type.INCIDENCE,e,t)},e.prototype.FindTangencyConstraints=function(e,t){return this.FindConstraintsSymmetric(_constraint2["default"].Type.TANGENCY,e,t)},e.prototype.RecognizeFilletableAngle=function(e){var t=this,n=this.FindPointsAt(e);if(n=n.filter(function(e){return t.sketch.isOnSketch(e.parent)}),2!==n.length)return null;var r=this.FindIncidenceConstraints(n[0],n[1]);if(1!==r.length)return null;var s=n.map(function(e){return e.parent});if(!s.every(function(e){return e instanceof _geomobjects.Line}))return null;var i=s[0].getTangent(),a=s[1].getTangent(),o=(new _three2["default"].Vector3).crossVectors(i,a).z;return Math.abs(o)<=this.angularTolerance?null:{lines:s,lineEnds:n,incidence:r}},e.prototype.GetMaxFilletDistance=function(e){for(var t=(e.vertex?e.vertex:e.lineEnds[0]).position.clone(),n=0,r=0;r<2;r++){var s=e.lines[r].points[0]===e.lineEnds[r]?1:0,i=e.lines[r].points[s].position.distanceTo(t);n=Math.max(n,i)}return i-this.linearTolerance},e.prototype.CalculateFilletParamsByRadius=function(e,t){for(var n=[],r=0;r<2;r++)n[r]=e.lines[r].getTangent().clone(),e.lines[r].points[0]!==e.lineEnds[r]&&n[r].negate();for(var s=n[0].angleTo(n[1]),i=(e.vertex?e.vertex:e.lineEnds[0]).position.clone(),a=t/Math.tan(s/2),o=[],r=0;r<2;r++)o[r]=n[r].clone().multiplyScalar(a).add(i);if(a>=this.GetMaxFilletDistance(e))return null;var c=(0,_geomutils.drawArcBy_S_E_CPh)(o[0],o[1],i);return c.control=i,c},e.prototype.CreateNewFillet=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function n(e,t){var r,s,i,a,o,c,l;return _regenerator2["default"].wrap(function(n){for(;;)switch(n.prev=n.next){case 0:for(r=[],s=[t.start,t.end],i=0;i<2;i++)a=e.lines[i].points[0]===e.lineEnds[i]?0:1,e.lines[i].points[a].move(s[i]),r.push(e.lines[i].prepareUpdateToServer(this.sketch));for(o=(0,_geomutils.createGeomObject)(t),c=new _geomobjects.Point,c.position.copy(t.control),l=[],i=0;i<2;i++)l.push(new _constraint2["default"](_constraint2["default"].Type.INCIDENCE,[c,e.lines[i]])),l.push(new _constraint2["default"](_constraint2["default"].Type.INCIDENCE,[e.lineEnds[i],o.points[i]])),l.push(new _constraint2["default"](_constraint2["default"].Type.TANGENCY,[o,e.lines[i]]));return n.next=10,this.sketch.removeFromSketch(e.incidence);case 10:return n.next=12,this.sketch.updateFromServer(this.sketcher.server,r);case 12:return n.next=14,this.sketch.addToSketch([o,c]);case 14:return n.next=16,this.sketch.addToSketch(l);case 16:if(n.t0=this.sketcher.modelData.incrementalLevel,!n.t0){n.next=20;break}return n.next=20,this.sketch.solveConstraints();case 20:this.sketcher.refresh();case 21:case"end":return n.stop()}},n,this)}));return e}(),e.prototype.RecognizeFilletByArc=function(e){var t=(this.sketch.getObjectsOnSketch(),{arc:e,lines:[],arcEnds:[],lineEnds:[],vertex:null}),n=Math.PI-e.getAngle();if(n<=this.angularTolerance||n>=Math.PI-this.angularTolerance)return null;for(var r=0;r<2;r++){var s=e.points[r],i=this.FindPointsAt(s.position);if(i=i.filter(function(e){return e.parent instanceof _geomobjects.Line}),1!==i.length)return null;var a=i[0],o=a.parent,c=o.points[0]!==a;if(1!==this.FindIncidenceConstraints(s,a).length||1!==this.FindTangencyConstraints(e,o).length)return null;var l=o.getTangent(),u=e.getTangent(s.position);if(c&&l.negate(),0===r&&u.negate(),l.distanceTo(u)>this.angularTolerance)return null;t.lines[r]=o,t.lineEnds[r]=a,t.arcEnds[r]=s}var h=e.radius/Math.tan(n/2),p=e.getTangent(e.points[0].position),f=p.clone().multiplyScalar(h).add(e.points[0].position),d=this.FindPointsAt(f,this.linearTolerance);if(1!==d.length)return null;t.vertex=d[0];for(var r=0;r<2;r++)if(1!==this.FindIncidenceConstraints(t.vertex,t.lines[r]).length)return null;return t},e.prototype.DeleteFillet=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function n(e){var t,r,s,i,a;return _regenerator2["default"].wrap(function(n){for(;;)switch(n.prev=n.next){case 0:for(t=e.vertex.position.clone(),r=[],s=0;s<2;s++)i=e.lines[s].points[0]===e.lineEnds[s]?0:1,e.lines[s].points[i].move(t),r.push(e.lines[s].prepareUpdateToServer(this.sketch));return a=new _constraint2["default"](_constraint2["default"].Type.INCIDENCE,[e.lineEnds[0],e.lineEnds[1]]),n.next=6,this.sketch.updateFromServer(this.sketcher.server,r);case 6:return n.next=8,this.sketch.addToSketch(a);case 8:return n.next=10,this.sketch.removeFromSketch([e.arc,e.vertex],{updateSketch:!0});case 10:if(n.t0=this.sketcher.modelData.incrementalLevel,!n.t0){n.next=14;break}return n.next=14,this.sketch.solveConstraints();case 14:this.sketcher.refresh();case 15:case"end":return n.stop()}},n,this)}));return e}(),e.prototype.ChangeFillet=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function n(e,t){var r,s,i,a;return _regenerator2["default"].wrap(function(n){for(;;)switch(n.prev=n.next){case 0:for(r=[],s=[t.start,t.end],i=0;i<2;i++)a=e.lines[i].points[0]===e.lineEnds[i]?0:1,e.lines[i].points[a].move(s[i]),r.push(e.lines[i].prepareUpdateToServer(this.sketch)),e.arc.points[i].position.copy(s[i]);return e.arc.modify(t.start,t.end,t.center),r.push(e.arc.prepareUpdateToServer(this.sketch)),n.next=7,this.sketch.updateFromServer(this.sketcher.server,r);case 7:if(n.t0=this.sketcher.modelData.incrementalLevel,!n.t0){n.next=11;break}return n.next=11,this.sketch.solveConstraints();case 11:this.sketcher.refresh();case 12:case"end":return n.stop()}},n,this)}));return e}(),e}();exports["default"]=FilletProcessor;