UNPKG

awv3

Version:
1 lines 17.3 kB
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_map=require("babel-runtime/core-js/map"),_map2=_interopRequireDefault(_map),_log=require("babel-runtime/core-js/math/log10"),_log2=_interopRequireDefault(_log),_promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_weakSet=require("babel-runtime/core-js/weak-set"),_weakSet2=_interopRequireDefault(_weakSet),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_ccobjects=require("sketcher/ccobjects"),_sketcher=require("sketcher/sketcher"),_sketcher2=_interopRequireDefault(_sketcher),_constraint=require("sketcher/constraint"),_constraint2=_interopRequireDefault(_constraint),_constraintgen=require("sketcher/constraintgen"),_constraintgen2=_interopRequireDefault(_constraintgen),_cchelpers=require("sketcher/cchelpers"),_geomobjects=require("sketcher/geomobjects"),_object=require("three/object3"),_object2=_interopRequireDefault(_object),_view=require("core/view"),_view2=_interopRequireDefault(_view),_three=require("three"),_three2=_interopRequireDefault(_three),Sketch=function(e){function t(){var r;(0,_classCallCheck3["default"])(this,t);var i=(0,_possibleConstructorReturn3["default"])(this,e.call(this));i.sketchObjects=new _weakSet2["default"],i.infiniteBoxMaterial=new _three2["default"].MeshBasicMaterial({color:4144959,wireframe:!0,visible:!1}),i.frameBoxMaterial=new _three2["default"].MeshPhongMaterial({color:16777215,emissive:16777215,specular:16777215,shininess:1,transparent:!0,opacity:.3,depthWrite:!1}),i.__box=new _three2["default"].Mesh(new _three2["default"].BoxGeometry(1,1,1),i.infiniteBoxMaterial),i.sketcher=window.globalSketcher;var n=i,o=i.sketcher,s=o.__parentView;return i.__box.createInteraction({priority:1}).on((r={},r[_object2["default"].Events.Interaction.Clicked]=function(e){switch(s.input.recent.mouseup.button){case 0:(0,_cchelpers.trackPromise)(_promise2["default"].resolve(o.sketchAreaClicked(n)));break;case 2:o.sketchAreaRightClicked(n)}},r)),i.__grid=new _three2["default"].LineSegments(new _three2["default"].Geometry,new _three2["default"].LineBasicMaterial({color:5263440})),i.__axis=new _three2["default"].LineSegments(new _three2["default"].Geometry,new _three2["default"].LineBasicMaterial({color:16711680})),i.__grid.frustumCulled=!1,i.__axis.frustumCulled=!1,i.__dimensions=new _three2["default"].Object3D,i.gridScale=4,i.gridSize=1e3,i.snappingSizeInGrid=.1,i.pointSizeInGrid=.1/i.gridScale,i.chosenItemOpacity=.5,i.updateGrid(),i}return(0,_inherits3["default"])(t,e),t.FindSketchOf=function(e){for(;e;){if(e instanceof t)return e;e=e.parent}},t.FindSketchSetOf=function(e){var t;return e.traverseAncestors(function(e){t=t||e.members.SketchSet}),t},t.prototype.getPart=function(){return this.parent.parent},t.prototype.addToSketch=function(e){var r=this,i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];void 0===i.onServer&&(i.onServer=!0),void 0===i.onClient&&(i.onClient=!0),void 0===i.updateSketch&&(i.updateSketch=!1),void 0===i.autoconstraint&&(i.autoconstraint=!1),e=[].concat(e);var n=this.sketcher,o=n.__parentView;0!==e.length&&i.onClient&&this.add.apply(this,e);var s=function(){if(e.forEach(function(e){r.sketchObjects.has(e)||(r.sketchObjects.add(e),_sketcher2["default"].registerVisualization(o,e),r.emit("SketchAdded",e))}),i.autoconstraint&&n.modelData.autoconstraintIncremental){var s=new _constraintgen2["default"](r),a=s.generateImpliedConstraints(t.ForObjectsWithChildren(e));if(a.length>0)return r.addToSketch(a,{updateSketch:!0})}};if(i.onServer){var a=e.map(function(e){return e.prepareAddOnServer(r)});return(i.updateSketch?this.updateFromServer(n.server,a):(0,_cchelpers.executePrepared)(n.server,a)).then(s)}return _promise2["default"].resolve(s())},t.prototype.removeFromSketch=function(e){var r=this,i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];void 0===i.onServer&&(i.onServer=!0),void 0===i.onClient&&(i.onClient=!0),void 0===i.updateSketch&&(i.updateSketch=!1),e=[].concat(e);var n=this.sketcher,o=(n.__parentView,t.ForObjectsWithChildren(e)),s=this.getConstraintsOnSketch(o);e=s.concat(e.filter(function(e){return s.indexOf(e)===-1})),o=s.concat(o.filter(function(e){return s.indexOf(e)===-1})),o.forEach(function(e){e.interact.removeInteraction(),e.removeInteraction()});var a=function(){e.forEach(function(e){i.onClient&&r.remove(e),r.sketchObjects["delete"](e),r.emit("SketchRemoved",e)})};if(i.onServer){var c=e.map(function(e){return e.prepareRemoveOnServer(r)});return(i.updateSketch?this.updateFromServer(n.server,c):(0,_cchelpers.executePrepared)(n.server,c)).then(a)}return _promise2["default"].resolve(a())},t.prototype.getObjectsOnSketch=function(){var e=this;return this.children.filter(function(t){return e.sketchObjects.has(t)})},t.prototype.getConstraintsOnSketch=function(e){e&&(e=[].concat(e));var t=function(t){return!e||e.indexOf(t)!==-1},r=function(e){return e.args.some(t)},i=this.getObjectsOnSketch().filter(function(e){return e instanceof _constraint2["default"]}).filter(r);return i},t.prototype.getAncestorOnSketch=function(e){var t=this;return e.traverseAncestors(function(r){r.parent===t&&(e=r)}),e},t.prototype.isOnSketch=function(e){return this.sketchObjects.has(e)},t.prototype.addAuxObject=function(e){var t=this;e=[].concat(e);var r=this.sketcher.__parentView;if(e.some(function(e){return this.isOnSketch(e)},this))throw"Sketch.addAuxObject: can't add object on sketch. Remove it first";e.forEach(function(e){t.add(e);try{_sketcher2["default"].registerVisualization(r,e)}catch(i){}})},t.prototype.removeAuxObject=function(e){var t=this;e=[].concat(e);this.sketcher.__parentView;e.forEach(function(e){t.remove(e)})},t.prototype.addMember=function(e){_ccobjects.ClassCadObject.prototype.addMember.apply(this,arguments),"objectMem"===e.userData.memberInfo.type&&this.addToSketch(e,{onServer:!1,onClient:!1})},t.prototype.removeSuperfluousMembers=function(){var e=_ccobjects.ClassCadObject.prototype.removeSuperfluousMembers.apply(this,arguments);return this.removeFromSketch(e,{onServer:!1,onClient:!1}),e},t.prototype.showBox=function(){this.addAuxObject(this.__box)},t.prototype.hideBox=function(){this.removeAuxObject(this.__box)},t.prototype.updateBox=function(){var e=this;this.updateMatrixWorld();var t=new _three2["default"].Box3,r=new _three2["default"].Vector3;this.getObjectsOnSketch().forEach(function(i){return i.traverseVisible(function(i){i.geometry instanceof _three2["default"].Geometry&&i.geometry.vertices.forEach(function(n){r.copy(n),i.localToWorld(r),e.worldToLocal(r),t.expandByPoint(r)})})});var i=this.__box;i.material=this.frameBoxMaterial,t.isEmpty()?(i.scale.set(.001,.001,.001),i.position.set(0,0,0)):(t.min.z=-.001,t.max.z=.001,t.size(i.scale),t.center(i.position))},t.prototype.infiniteBox=function(){var e=new _three2["default"].Box3;e.max.set(1e3,1e3,.001),e.min.copy(e.max),e.min.negate();var t=this.__box;t.material=this.infiniteBoxMaterial,e.size(t.scale),e.center(t.position)},t.prototype.showGrid=function(){this.addAuxObject([this.__grid,this.__axis]),this.zoom=-250},t.prototype.hideGrid=function(){this.removeAuxObject([this.__grid,this.__axis])},t.prototype.updateGrid=function(e){var t=this;e=e||100;var r=this.calcGridStep(e,this.gridStep),i=this.calcAxisSize(e,r),n=r*this.gridSize*2;if(this.gridStep!==r||this.axisSize!==i){this.gridStep=r,this.axisSize=i;for(var o=0,s=0,a=function(e,r,i){t.__grid.geometry.vertices[o++]=new _three2["default"].Vector3(e,r,i)},c=function(e,r,i){t.__axis.geometry.vertices[s++]=new _three2["default"].Vector3(e,r,i)},h=1;h<=this.gridSize;++h)a(-n/2,r*h,0),a(n/2,r*h,0),a(-n/2,-r*h,0),a(n/2,-r*h,0),a(r*h,n/2,0),a(r*h,-n/2,0),a(-r*h,n/2,0),a(-r*h,-n/2,0),1===h&&(a(-n/2,0,0),a(-i,0,0),a(n/2,0,0),a(i,0,0),a(0,n/2,0),a(0,i,0),a(0,-n/2,0),a(0,-i,0));c(-i,0,0),c(i,0,0),c(0,-i,0),c(0,i,0);var u=this.gridStep/4;c(i-this.gridStep,-u,0),c(i,0,0),c(i-this.gridStep,+u,0),c(i,0,0),c(-u,i-this.gridStep,0),c(0,i,0),c(u,i-this.gridStep,0),c(0,i,0);var p=3*r/10,l=r-2*p,d=.6*l;c(i+p,p,0),c(i+p+d,p+l,0),c(i+p,p+l,0),c(i+p+d,p,0),c(p,i+p,0),c(p+d,i+p+l,0),c(p,i+p+l,0),c(p+d/2,i+p+l/2,0),o==this.__grid.geometry.vertices.length&&s==this.__axis.geometry.vertices.length||console.error("Grid and axis vertex count has changed!"),this.__grid.geometry.verticesNeedUpdate=!0,this.__axis.geometry.verticesNeedUpdate=!0}},t.prototype.calcGridStep=function(e,t){var r=Math.floor((0,_log2["default"])(Math.abs(e*this.gridScale)))-1;return Math.pow(10,r)},t.prototype.calcAxisSize=function(e,t){if(e<=10)return this.axisSize;var r=5*Math.floor(e/(20*t));return r<5&&(r=5),r*t},t.prototype.getClosestGeomPoint=function(e,r,i){i||(i=function(e){return!1});var n=r,o=e.clone(),s=!1;return this.getObjectsOnSketch().forEach(function(r){t.ForObjectsWithChildren(r,function(t){if(!i(t)&&t instanceof _geomobjects.Point){var r=t,a=r.position.distanceTo(e);a<n&&(n=a,o=r.position.clone(),s=!0)}})}),{snappedPosition:o,snappingShift:o.clone().sub(e),isSnapped:s}},t.prototype.getClosestGridPoint=function(e,t,r){var i=e.clone(),n=!1;if(this.gridStep>0){var o=Math.min(t,this.gridStep/3),s=Math.round(e.x/this.gridStep)*this.gridStep,a=Math.round(e.y/this.gridStep)*this.gridStep;(s-e.x)*(s-e.x)+(a-e.y)*(a-e.y)<o*o&&(i.x=s,i.y=a,n=!0)}return{snappedPosition:i,snappingShift:i.clone().sub(e),isSnapped:n}},t.prototype.getClosestSnapPoint=function(e,t,r){var i=e.clone(),n=this.getClosestGridPoint(i,t,r),o=this.getClosestGeomPoint(i,t,r);return o.isSnapped&&n.isSnapped?o.snappingShift.length()<n.snappingShift.length()?o:n:o.isSnapped?o:n},t.prototype.getSnappedPointWrap=function(e,r,i){function n(){var t=e.clone(),i=r.parent,n=i.points[0]==r?0:1,o=i.points[1-n].position,s=new _three2["default"].Vector3;s.subVectors(t,o),s.z=0;var c=s.length();if(c>.001){var h=new _three2["default"].Vector3(1,0,0),u=s.angleTo(h);u=s.y<-1e-6?2*Math.PI-u:u;var p=h,l=p.angleTo(h);l=p.y<-1e-6?2*Math.PI-l:l;var d=u>l?u-l:2*Math.PI+u-l,f=Math.round(d*a/(2*Math.PI)),_=2*Math.PI*f/a;_+=l;var v=new _three2["default"].Vector3(Math.cos(_),Math.sin(_),0);v.multiplyScalar(v.dot(s)),t.addVectors(o,v)}return t}if(!r)return e;var o=this.sketcher,s=this.snappingSizeInGrid*this.gridStep,a=o.__parentView.interaction.shiftKey?o.__sketchControlsHandler.shiftDirections:0;if(a&&r.parent instanceof _geomobjects.Line)return n();var c=e.clone(),h=[];r instanceof _geomobjects.Point?h=[r]:t.ForObjectsWithChildren(r,function(e){e instanceof _geomobjects.Point&&h.push(e)});var u=new _three2["default"].Vector3(0,0,0),p=s,l=this;return h.forEach(function(n){void 0!==i&&(u=n.position.clone().sub(i));var o=e.clone();"center"!==r.name&&o.add(u);var a=l.getClosestSnapPoint(o,s,function(e){return t.ForObjectsWithChildren(e).indexOf(n)!==-1});a.isSnapped&&a.snappingShift.length()<p&&(p=a.snappingShift.length(),c=a.snappedPosition,r instanceof _geomobjects.Point||c.sub(u))}),c},t.prototype.showDimensions=function(){this.addAuxObject(this.__dimensions)},t.prototype.hideDimensions=function(){this.removeAuxObject(this.__dimensions)},t.prototype.updateDimensionsFactory=function(e){var t=e.data,r=(new _three2["default"].Matrix4).getInverse(this.matrix);switch(e.type){case"Cone":var i=(new _three2["default"].Vector3).fromArray(t.position).applyMatrix4(r),n=(new _three2["default"].Vector3).fromArray(t.axis).transformDirection(r),o=n.length(),s=Math.max(t.diameters[0],t.diameters[1]),a=new _three2["default"].Geometry;a.vertices.push(new _three2["default"].Vector3(o,-s/2,0),new _three2["default"].Vector3(o,s/2,0),new _three2["default"].Vector3(0,0,0)),a.faces.push(new _three2["default"].Face3(0,1,2),new _three2["default"].Face3(0,2,1)),a.computeFaceNormals();var c=new _three2["default"].Mesh(a,new _three2["default"].MeshBasicMaterial({color:8388479}));c.position.copy(i),c.quaternion.setFromUnitVectors(new _three2["default"].Vector3(1,0,0),n),this.__dimensions.add(c);break;case"Text":if("@"==t.text)break;var h={size:1,height:0,font:this.sketcher.font},a=new _three2["default"].TextGeometry(t.text,h);a.computeBoundingBox();var c=new _three2["default"].Mesh(a,new _three2["default"].MeshBasicMaterial({color:4194239})),u=new _three2["default"].Object3D;u.mesh=c,u.add(c),u.position.fromArray(t.position).applyMatrix4(r),u.setGeomSizes=function(e){var t=e[0];this.mesh.scale.set(t,t,t)},_sketcher2["default"].mixinPixelSizedGeometry.call(u,t.fontSize||12);var p=this.sketcher.__parentView;_sketcher2["default"].registerVisualization(p,u),this.__dimensions.add(u);break;case"Line":t.geometry.applyMatrix(r),t.material=new _three2["default"].MeshBasicMaterial({color:8388479}),this.__dimensions.add(t)}},t.prototype.showConstraints=function(e){var t=this.getConstraintsOnSketch(e);0!==t.length&&(e.constraintsSubstrate.visible=!0,this.updateConstraints(e),t.forEach(function(e){return e.show()}))},t.prototype.hideConstraints=function(){var e=this.getConstraintsOnSketch();e.forEach(function(e){e.args.forEach(function(e){e.hovered=!1}),e.hide()}),this.getObjectsOnSketch().forEach(function(e){t.ForObjectsWithChildren(e,function(e){e.constraintsSubstrate&&(e.constraintsSubstrate.visible=!1)})})},t.prototype.updateConstraints=function(e){var t=e.constraintsSubstrate,r=this.getConstraintsOnSketch(e);if(0===r.length)return e.constraintsSubstrate.visible=!1,e.interact.unhover&&e.interact.unhover(),0;var i=r.length,n=r[0].mesh.scale.x,o=1.2*n;t.scale.set(o*r.length,o,Math.min(o,1));var s=e.getSubstratePosition(t.scale.x,o);t.position.set(s.x,s.y,-1);for(var a=t.position.x+e.position.x-t.scale.x/2,c=t.position.y+e.position.y,h=0;h<i;++h)r[h].position.set(a+(h+.5)*o,c,0)},t.prototype.getState=function(){for(var e=new _map2["default"],t=this.getObjectsOnSketch(),r=Array.isArray(t),i=0,t=r?t:(0,_getIterator3["default"])(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var o=n;e.set(o,o.getState())}return e},t.prototype.getStateLinearContinuation=function(e){function t(e){return Array.isArray(e)?new _map2["default"]([["x",e[1].get("x")-e[0].get("x")],["y",e[1].get("y")-e[0].get("y")]]):new _map2["default"]([["x",0],["y",0]])}function r(e,r){var i=new _map2["default"];r[0].has("startPoint")&&i.set("startPoint",t([r[0].get("startPoint"),r[1].get("startPoint")])),r[0].has("endPoint")&&i.set("endPoint",t([r[0].get("endPoint"),r[1].get("endPoint")])),n.set(e,i)}function i(e,r){var i=new _map2["default"];r[0].has("startPoint")&&i.set("startPoint",t([r[0].get("startPoint"),r[1].get("startPoint")])),r[0].has("endPoint")&&i.set("endPoint",t([r[0].get("endPoint"),r[1].get("endPoint")])),r[0].has("center")&&i.set("center",t([r[0].get("center"),r[1].get("center")])),r[0].has("clockwise")&&i.set("clockwise",r[0].get("clockwise")),n.set(e,i)}if(null!==e[0]&&null!==e[1]){var n=new _map2["default"];return e[0].forEach(function(n,o){if(0!==n.size){var s=e[1].get(o);o instanceof _geomobjects.Point?n.set(o,t(o,[n,s])):o instanceof _geomobjects.Line?r(o,[n,s]):o instanceof _geomobjects.Arc&&i(o,[n,s])}},this),n}},t.prototype.applyStateDiff=function(e){e.forEach(function(e,t){return void 0===e?(this.isOnSketch(t)||console.error("sketch invariant fail: don't have",t.id),void this.removeFromSketch(t)):(this.isOnSketch(t)||this.addToSketch(t),void t.applyStateDiff(e))},this);for(var t=this.getObjectsOnSketch(),r=Array.isArray(t),i=0,t=r?t:(0,_getIterator3["default"])(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var o=n;o.updateGeometry()}},t.prototype.addStateDiff=function(e,t){e.forEach(function(e,r){null!==e&&this.isOnSketch(r)&&r.addStateDiff(e,t)},this);for(var r=this.getObjectsOnSketch(),i=Array.isArray(r),n=0,r=i?r:(0,_getIterator3["default"])(r);;){var o;if(i){if(n>=r.length)break;o=r[n++]}else{if(n=r.next(),n.done)break;o=n.value}var s=o;s.updateGeometry()}},t.prototype.finishedUpdating=function(){this.sketcher.currentSketch===this?this.infiniteBox():this.updateBox(),this.showBox()},t.prototype.updateFromServer=function(e,t){var r=this.getPart();this.__dimensions.remove.apply(this.__dimensions,this.__dimensions.children);var i=(t||[]).concat([_cchelpers.Interop.CreateSketchDimensions(this,!0),(0,_cchelpers.getObjectStatement)(r).parseToObject(r)]);return(0,_cchelpers.executePrepared)(e,i,this.updateDimensionsFactory.bind(this))},t.prototype.solveConstraints=function(){return this.updateFromServer(this.sketcher.server,[_cchelpers.Interop.SolveConstraints(this)]).then(function(e){return e[0]})},t.ForObjectsWithChildren=function(e,t){var r=void 0;return t||(r=[],t=function(e){return r.push(e)}),e=[].concat(e),e.forEach(function(e){e&&(t(e),e instanceof _geomobjects.Point||(e.points&&e.points.forEach(t),e.centerPoint&&t(e.centerPoint)))}),r},t}(_ccobjects.ClassCadObject);exports["default"]=Sketch,_ccobjects.ClassCadObject.classMapping.CC_Sketch=Sketch;