awv3
Version:
AWV client CAD framework
1 lines • 19.5 kB
JavaScript
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function transformWorldToScreen(e,t,r,n){r instanceof _three2["default"].Object3D&&(r.updateMatrixWorld(),r=r.matrixWorld),r instanceof _three2["default"].Matrix4||(r=new _three2["default"].Matrix4),e.camera.updateMatrixWorld();var i=new _three2["default"].Matrix4;i.getInverse(e.camera.matrixWorld),i.multiplyMatrices(i,r),i.multiplyMatrices(e.camera.projectionMatrix,i);var o=(new _three2["default"].Vector4).copy(t).applyMatrix4(i),a=1/o.w,s=(new _three2["default"].Vector3).copy(o).multiplyScalar(a),c=new _three2["default"].Matrix4;if(n){var u=new _three2["default"].Matrix4;u.set(a,0,0,-o.x*a*a,0,a,0,-o.y*a*a,0,0,a,-o.z*a*a,0,0,0,0),c.multiplyMatrices(u,i)}var l=e.dom.clientWidth/2,h=e.dom.clientHeight/2,p=l,d=-h,f=l,_=h,m={};if(m.position=new _three2["default"].Vector2,m.position.x=s.x*p+f,m.position.y=s.y*d+_,n){var k=m.derivatives=[],v=c.elements;k.push(new _three2["default"].Vector2(p*v[0],d*v[1])),k.push(new _three2["default"].Vector2(p*v[4],d*v[5])),k.push(new _three2["default"].Vector2(p*v[8],d*v[9]))}return m}function calculateWorldToScreenRadiusMultiplier(e){var t=e.derivatives,r=(new _three2["default"].Vector3).set(t[0].x,t[1].x,t[2].x),n=(new _three2["default"].Vector3).set(t[0].y,t[1].y,t[2].y),i=r.lengthSq(),o=n.lengthSq(),a=r.dot(n),s=(i+o)/2,c=(i-o)/2,u=c*c+a*a,l=s+Math.sqrt(Math.max(u,0));return Math.sqrt(Math.max(l,0))}function updateSizesAndVisualization(){_sketch2["default"].ForObjectsWithChildren(this,function(e){e&&(e.updateSizes&&e.view&&e.updateSizes(e.view),e.updateVisualization&&e.updateVisualization())})}exports.__esModule=!0;var _promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_map=require("babel-runtime/core-js/map"),_map2=_interopRequireDefault(_map),_getPrototypeOf=require("babel-runtime/core-js/object/get-prototype-of"),_getPrototypeOf2=_interopRequireDefault(_getPrototypeOf),_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),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_cchelpers=require("sketcher/cchelpers"),_constraintgen=require("sketcher/constraintgen"),_constraintgen2=_interopRequireDefault(_constraintgen),_sketch=require("sketcher/sketch"),_sketch2=_interopRequireDefault(_sketch),_geomobjects=require("sketcher/geomobjects"),_constraint=require("sketcher/constraint"),_constraint2=_interopRequireDefault(_constraint),_controls=require("sketcher/controls"),Controls=_interopRequireWildcard(_controls),_orbit=require("controls/orbit"),_orbit2=_interopRequireDefault(_orbit),_object=require("three/object3"),_object2=_interopRequireDefault(_object),_three=require("three"),_three2=_interopRequireDefault(_three),_droid_sans_regularTypeface=require("json!../../node_modules/three/examples/fonts/droid/droid_sans_regular.typeface.json"),_droid_sans_regularTypeface2=_interopRequireDefault(_droid_sans_regularTypeface),CursorPosition=function(e){function t(r){(0,_classCallCheck3["default"])(this,t);var n=(0,_possibleConstructorReturn3["default"])(this,e.call(this));return n._x=n._y=0,n.notifier=r,n}return(0,_inherits3["default"])(t,e),t.prototype.set=function(e,t){this._x=e,this._y=t,this.notifier()},t.prototype.copy=function(e){this.set(e.x,e.y)},t.prototype.clone=function(){return new _three2["default"].Vector3(this.x,this.y,this.z)},(0,_createClass3["default"])(t,[{key:"x",get:function(){return this._x}},{key:"y",get:function(){return this._y}},{key:"z",get:function(){return 0}}]),t}(_three2["default"].Vector3),Sketcher=function(e){function t(r,n,i){(0,_classCallCheck3["default"])(this,t);var o=(0,_possibleConstructorReturn3["default"])(this,e.call(this));o.currentSketch=null,r.scene.add(o),o.__parentView=r,o.server=n,o.rootObject=i,o.__sketchControlsHandler=null;var a=new _three2["default"].FontLoader;o.font=a.parse(_droid_sans_regularTypeface2["default"]),_constraint2["default"].TextParameters.font=o.font,o.createInteraction().on(_object2["default"].Events.Lifecycle.Rendered,function(){if(this.currentSketch&&(this.currentSketch.updateGrid(this.__parentView.camera.size),this.__parentView.input.recent.mousemove)){var e=new _three2["default"].Vector2(this.__parentView.input.recent.mousemove.offsetX,this.__parentView.input.recent.mousemove.offsetY),t=this.__parentView.getViewLine3(e),r=(new _three2["default"].Matrix4).getInverse(this.currentSketch.matrixWorld);t.applyMatrix4(r);var n=(0-t.start.z)/(t.end.z-t.start.z),i=t.at(n);i.z=0,i.equals(this.modelData.interactionPoint)||this.sketchAreaMouseMoved(this.currentSketch,i),this.refresh()}}),o.modelData={isSketchSelected:!1,promptText:"",isConstraintFormVisible:!1,constraintExpression:"",constraintValue:0,constraintFixed:!0,get constraint(){return{expression:this.constraintExpression,value:this.constraintValue,fixed:this.constraintFixed}},set constraint(e){this.constraintExpression=e.expression,this.constraintValue=e.value,this.constraintFixed=e.fixed},acceptConstraint:function(){},declineConstraint:function(){},_incrementalLevel:!1,expressionSet:[],isHiddenVisible:!1,previousInteractionPoint:new _three2["default"].Vector3,interactionPoint:new CursorPosition(o.interactionPointMoved.bind(o)),autoconstraintIncremental:!0,consoleText:""};var s=o;return Object.defineProperty(o.modelData,"incrementalLevel",{enumerable:!0,configurable:!0,get:function(){return this._incrementalLevel},set:function(e){s.setIncrementalLevel(e)}}),o.modelMethods={addExpression:function(){this.expressionSet.push({name:"",value:0,expression:"",fixed:!0,visible:!0})},removeExpression:function(e){var t=this.expressionSet.indexOf(e);t!==-1&&this.expressionSet.splice(t,1)},resetExpressionSet:function(){(0,_cchelpers.trackPromise)(s.currentSketch.updateFromServer(s.server))},submitExpressionSet:function(){var e=this,t=this.expressionSet.map(function(e){return[e.name,e.value,e.expression,e.fixed]}),r=_cchelpers.Interop.UpdateExpressionSet(s.currentSketch,t).execute(s.server);this.incrementalLevel&&(r=r.then(function(){return e.solveConstraints()})),(0,_cchelpers.trackPromise)(r)},chooseTool:o.chooseTool.bind(o),deselectSketch:o.deselectSketch.bind(o),deleteSketch:o.deleteSketch.bind(o),click:o.click.bind(o),undo:o.undo.bind(o),redo:o.redo.bind(o),solveConstraints:o.solveConstraints.bind(o),autoconstraintAll:o.autoconstraintAll.bind(o),consoleExecute:function(){var e=this.consoleText;if(this.consoleText="",s.__sketchControlsHandler)return s.__sketchControlsHandler.consoleExecute(e)}},o}return(0,_inherits3["default"])(t,e),t.prototype.refresh=function(){this.__parentView.invalidate()},t.prototype.sketchAreaClicked=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){return _regenerator2["default"].wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(this.currentSketch===e){t.next=4;break}return t.next=3,this.selectSketch(e);case 3:return t.abrupt("return");case 4:return t.next=6,this.click();case 6:case"end":return t.stop()}},r,this)}));return e}(),t.prototype.sketchAreaMouseMoved=function(){function e(e,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e,t){return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(e===this.currentSketch){r.next=2;break}return r.abrupt("return");case 2:this.modelData.interactionPoint.copy(t),this.setActionCursor();case 4:case"end":return r.stop()}},r,this)}));return e}(),t.prototype.sketchAreaRightClicked=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var t,n;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(e===this.currentSketch){r.next=2;break}return r.abrupt("return");case 2:return t=(0,_getPrototypeOf2["default"])(this.__sketchControlsHandler),r.next=5,this.chooseTool("empty");case 5:if(n=(0,_getPrototypeOf2["default"])(this.__sketchControlsHandler),t!==n){r.next=9;break}return r.next=9,this.deselectSketch();case 9:case"end":return r.stop()}},r,this)}));return e}(),t.prototype.setActionCursor=function(e){var t=new _map2["default"]([["empty","default"],["delete","no-drop"],["point","crosshair"],["line","crosshair"],["arc","crosshair"],["polyline","crosshair"],["fixation","default"],["incidence","default"],["distance","default"],["angle","default"],["angleOX","default"],["tangency","default"],["horizontality","default"],["verticality","default"],["perpendicularity","default"],["parallelity","default"],["concentric","default"],["midpoint","default"],["symmetric","default"],["colinear","default"],["equal_distance","default"],["radius","default"],["equal_radius","default"],["horizontal_distance","default"],["vertical_distance","default"],["autoconstraint","default"]]),r=this.__parentView;void 0===e&&this.currentCursor?r.setCursor(this.currentCursor):t.has(e)?(this.currentCursor=t.get(e),r.setCursor(this.currentCursor)):this.currentCursor=null},t.prototype.chooseTool=function(e){if(this.setActionCursor(e),e){"empty"===e&&this.modelData.incrementalLevel&&this.currentSketch.solveConstraints();var t=Controls[e+"Handler"];if(void 0===t)return}return this.__sketchControlsHandler instanceof Controls.polylineHandler&&e&&(e.startsWith("line")||e.startsWith("arc"))?this.__sketchControlsHandler.changeEdgeType(e):(this.__sketchControlsHandler&&this.__sketchControlsHandler.finish(),void(e?this.__sketchControlsHandler=new t(this):this.__sketchControlsHandler=null))},t.prototype.solveConstraints=function(){function e(){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(){var e;return _regenerator2["default"].wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(this.currentSketch){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,this.currentSketch.solveConstraints();case 4:e=t.sent;case 5:case"end":return t.stop()}},r,this)}));return e}(),t.prototype.setIncrementalLevel=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){return _regenerator2["default"].wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(this.modelData._incrementalLevel=e,!e){t.next=4;break}return t.next=4,this.solveConstraints();case 4:case"end":return t.stop()}},r,this)}));return e}(),t.prototype.autoconstraintAll=function(){var e=new _constraintgen2["default"](this.currentSketch),t=e.generateImpliedConstraints();(0,_cchelpers.trackPromise)(this.currentSketch.addToSketch(t,{updateSketch:!0}))},t.prototype.moveUnderConstraints=function(e,t){function r(e){this.sketchStates[1]=this.sketchStates[0],this.sketchStates[0]=this.currentSketch.getState(),this.stateDiff=this.currentSketch.getStateLinearContinuation(this.sketchStates)}function n(){this.mouseStates[1]=this.mouseStates[0],this.mouseStates[0]=t}function i(e){var t=[];return _sketch2["default"].ForObjectsWithChildren(e,function(e){e instanceof _geomobjects.Point&&t.push(e)}),t}var o=this;if(this.currentSketch){var a=i(e);if(!this.currentSketch.solveInProgress){this.currentSketch.solveInProgress=!0,n.call(this);var s=_cchelpers.Interop.MoveObjects(this.currentSketch,this.movedObject,this.mouseStates[0].clone().sub(this.mouseStates[1])).execute(this.server).then(function(){return o.currentSketch.updateFromServer(o.server)}).then(function(){r.call(o,a),o.currentSketch.solveInProgress=!1})["catch"](function(){o.currentSketch.solveInProgress=!1});(0,_cchelpers.trackPromise)(s)}}},t.prototype.newSketch=function(e,t,r){var n=[new _three2["default"].Vector3(1,0,0),new _three2["default"].Vector3(0,1,0),new _three2["default"].Vector3(0,0,1)];n.forEach(function(e){return e.applyQuaternion(t)}),n.unshift(e);var i=_sketch2["default"].FindSketchSetOf(r);return _cchelpers.Interop.AddSketch(r,n).parseToChildOf(i).execute(this.server)},t.prototype.newSketchFromPlane=function(e){var t=_sketch2["default"].FindSketchSetOf(e);return _cchelpers.Interop.AddSketchFromPlane(e).parseToChildOf(t).execute(this.server)},t.prototype.deleteSketch=function(){var e=this;if(confirm("Do you really want to irreversibly delete current sketch and all its contents?")){var t=this.currentSketch;if(t)return this.deselectSketch({skipServerCalls:!0}),t.__box.removeInteraction(),(0,_cchelpers.trackPromise)(_cchelpers.Interop.RemoveSketch(t).execute(this.server).then(function(){t.parent&&t.parent.remove(t),e.refresh()}))}},t.prototype.switchToOrthographicCamera=function(e){if(!e.__orthographicCamera){var t=new _three2["default"].OrthographicCamera(0,0,0,0,1,2e4),r=(new _three2["default"].Box3).setFromObject(this.rootObject);t.defSize=t.size=1.5*r.max.clone().sub(r.min).length();var n=this.__parentView.dom.clientWidth/this.__parentView.dom.clientHeight;t.left=-t.size*n/2,t.right=t.size*n/2,t.top=t.size/2,t.bottom=-t.size/2,t.target=new _three2["default"].Vector3(0,0,0),t.lookAt(t.target),t.position.set(0,0,1e3),t.up.set(0,0,1),e.__perspectiveCamera=e.camera,e.__orthographicCamera=t,e.__orthographicAspect=1e3/t.size}e.__orthographicCamera.position.set(e.camera.position.x,e.camera.position.y,e.camera.position.z),e.__orthographicCamera.quaternion.set(e.camera.quaternion.x,e.camera.quaternion.y,e.camera.quaternion.z,e.camera.quaternion.w),e.__orthographicCamera.rotation.set(e.camera.rotation.x,e.camera.rotation.y,e.camera.rotation.z,e.camera.rotation.order),e.__orthographicCamera.updateProjectionMatrix(),e.camera=e.__orthographicCamera,e.controls=new _orbit2["default"](e,{camera:e.camera})},t.prototype.switchToPerspectiveCamera=function(e){e.__perspectiveCamera.position.set(e.camera.position.x,e.camera.position.y,e.camera.position.z),e.__perspectiveCamera.quaternion.set(e.camera.quaternion.x,e.camera.quaternion.y,e.camera.quaternion.z,e.camera.quaternion.w),e.__perspectiveCamera.rotation.set(e.camera.rotation.x,e.camera.rotation.y,e.camera.rotation.z,e.camera.rotation.order),e.__perspectiveCamera.updateProjectionMatrix(),e.callback=null,e.camera=e.__perspectiveCamera,e.controls=new _orbit2["default"](e,{camera:e.camera})},t.prototype.selectSketch=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var t,n,i,o,a,s;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(this.currentSketch!==e){r.next=2;break}return r.abrupt("return",!0);case 2:return r.next=4,this.deselectSketch();case 4:if(r.sent){r.next=6;break}return r.abrupt("return",!1);case 6:return this.__parentView.controls.zoomState=_orbit2["default"].ZoomMode.Mouse,this.switchToOrthographicCamera(this.__parentView),this.currentSketch=e,this.modelData.isSketchSelected=!0,this.modelData.expressionSet=e.getPart().members.ExpressionSet.modelData,e.showBox(),e.infiniteBox(),this.__parentView.controls.focus(e.position),t=new _three2["default"].Vector3,this.__parentView.camera.getWorldDirection(t),n=new _three2["default"].Vector3(0,0,(-1)),i=Math.PI/2+(0===t.length()?Math.PI/2:t.angleTo(n)*(t.clone().cross(n).z>0?1:-1)),t.z=0,t.normalize(),o=new _three2["default"].Vector3(0,1,0),a=0===t.length()?2*Math.PI:t.angleTo(o)*(t.clone().cross(o).z>0?1:-1),this.__parentView.controls.rotate({value:a},{value:i}),this.__parentView.controls.noRotate=!0,r.next=26,e.updateFromServer(this.server);case 26:return r.next=28,this.chooseTool("empty");case 28:return this.refresh(),this.currentSketch.showGrid(),this.currentSketch.showDimensions(),s=e.getPart().item,s&&s.materials&&s.materials.all&&s.materials.all.forEach(function(t){t.transparent=!0,t.opacity=e.chosenItemOpacity}),r.abrupt("return",!0);case 34:case"end":return r.stop()}},r,this)}));return e}(),t.prototype.deselectSketch=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var t,n;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(null!==this.currentSketch){r.next=2;break}return r.abrupt("return",!0);case 2:return t=this.currentSketch.getPart().item,t&&t.materials&&t.materials.all&&t.materials.all.forEach(function(e){e.opacity=1,e.transparent=!1}),this.__parentView.callbackAfterRenderScene=null,this.__parentView.controls.zoomState=_orbit2["default"].ZoomMode.Center,r.next=8,this.chooseTool(null);case 8:if(this.currentSketch.hideGrid(),this.currentSketch.hideDimensions(),this.currentSketch.hideConstraints(),n=this.currentSketch,e=e||{},e.skipServerCalls){r.next=18;break}return r.next=16,_cchelpers.Interop.Recalc(n).execute(this.server);case 16:return r.next=18,n.updateFromServer(this.server);case 18:return this.currentSketch.updateBox(),this.__parentView.controls.noRotate=!1,this.currentSketch=null,this.modelData.isSketchSelected=!1,this.modelData.expressionSet=[],this.refresh(),r.abrupt("return",!0);case 25:case"end":return r.stop()}},r,this)}));return e}(),t.prototype.click=function(){return this.__sketchControlsHandler.click(this.modelData.interactionPoint.clone())},t.prototype.interactionPointMoved=function(){this.__sketchControlsHandler&&this.__sketchControlsHandler.mouseMove(this.modelData.interactionPoint.clone())},t.prototype.undo=function(){},t.prototype.redo=function(){},t.prototype.setPrompt=function(e){this.modelData.promptText=e},t.prototype.askConstraintParams=function(e){var t=this;return this.setPrompt("Enter expression, value, fixed"),this.modelData.constraintExpression=e.expression,this.modelData.constraintValue=e.value,this.modelData.constraintFixed=e.fixed,this.modelData.isConstraintFormVisible=!0,new _promise2["default"](function(e,r){t.modelData.acceptConstraint=e,t.modelData.declineConstraint=r}).then(function(e){return t.setPrompt(""),t.modelData.isConstraintFormVisible=!1,e},function(e){throw t.setPrompt(""),t.modelData.isConstraintFormVisible=!1,e})},t.registerVisualization=function(e,t){var r;t.createInteraction({priority:-1e4}).on((r={},r[_object2["default"].Events.Lifecycle.Rendered]=updateSizesAndVisualization,r))},t.mixinPixelSizedGeometry=function(e){return this instanceof _three2["default"].Object3D?this.setGeomSizes?(e||(e=1),this.pixelSizes=[].concat(e),this.getSizingPoint||(this.getSizingPoint=function(){return new _three2["default"].Vector3}),void(this.updateSizes=function(e){for(var t=this.getSizingPoint(),r=transformWorldToScreen(e,t,this,!0),n=1/calculateWorldToScreenRadiusMultiplier(r),i=this.pixelSizes.slice(0),o=0,a=i.length;o<a;o++)i[o]=i[o]*n;this.setGeomSizes(i)})):void console.warn("PixelSizedGeometry: missing required methods"):void console.warn("PixelSizedGeometry: not a THREE object")},t}(_object2["default"]);exports["default"]=Sketcher;