UNPKG

awv3

Version:
200 lines (162 loc) 7.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DimensionsVisualizer = exports.Dimension = undefined; var _get2 = require("babel-runtime/helpers/get"); var _get3 = _interopRequireDefault(_get2); var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of"); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); var _three = require("three"); var THREE = _interopRequireWildcard(_three); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Dimension = exports.Dimension = function (_THREE$Object3D) { (0, _inherits3.default)(Dimension, _THREE$Object3D); function Dimension() { (0, _classCallCheck3.default)(this, Dimension); var _this = (0, _possibleConstructorReturn3.default)(this, (Dimension.__proto__ || (0, _getPrototypeOf2.default)(Dimension)).call(this)); _this.clear(); return _this; } (0, _createClass3.default)(Dimension, [{ key: "clear", value: function clear() { while (this.children.length > 0) { this.children.remove(this.children[this.children.length - 1]); }this.lines = []; this.texts = []; this.arrows = []; } }, { key: "addLine", value: function addLine(startPos, endPos) { var geom = new THREE.Geometry(); geom.vertices = [startPos, endPos]; var mat = new THREE.LineBasicMaterial({ color: 0xFF4444 }); var line = new THREE.LineSegments(geom, mat); this.lines.push(line); this.add(line); } }, { key: "addText", value: function addText(point, dir, text) { if (!text) { text = this.paramName + ": "; text += this.getParamValue(); } //TODO: } }, { key: "addArrow", value: function addArrow(point, dir) { //TODO } }, { key: "update", value: function update(ccData) { this.paramName = ccData.paramName; } }, { key: "getParamValue", value: function getParamValue() { return 0.0; } }]); return Dimension; }(THREE.Object3D); var LinearDimension = function (_Dimension) { (0, _inherits3.default)(LinearDimension, _Dimension); function LinearDimension() { (0, _classCallCheck3.default)(this, LinearDimension); return (0, _possibleConstructorReturn3.default)(this, (LinearDimension.__proto__ || (0, _getPrototypeOf2.default)(LinearDimension)).call(this)); } (0, _createClass3.default)(LinearDimension, [{ key: "getParamValue", value: function getParamValue() { return this.startFootPos.distanceTo(this.endFootPos); } }, { key: "update", value: function update(ccData) { (0, _get3.default)(LinearDimension.prototype.__proto__ || (0, _getPrototypeOf2.default)(LinearDimension.prototype), "update", this).call(this, ccData); this.startPos = ccData.startPt; this.endPos = ccData.endPt; this.textPos = ccData.dimPt; this.angle = ccData.angle; var ori = ccData.orientationType; //TODO //all points assumed to be on {Z = 0} plane this.lineDir = new THREE.Vector3(Math.cos(this.angle), Math.sin(this.angle), 0.0); if (this.endPos.clone().sub(this.startPos).dot(this.lineDir) < 0.0) this.lineDir.negate(); this.startFootPos = this.startPos.clone().sub(this.textPos).projectOnVector(this.lineDir).add(this.textPos); this.endFootPos = this.endPos.clone().sub(this.textPos).projectOnVector(this.lineDir).add(this.textPos); this.clear(); this.addLine(this.startFootPos, this.endFootPos); this.addLine(this.startPos, this.startFootPos); this.addLine(this.endPos, this.endFootPos); this.addArrow(this.startFootPos, this.lineDir.clone().negate()); this.addArrow(this.endFootPos, this.lineDir); this.addText(this.textPos, this.lineDir); } }]); return LinearDimension; }(Dimension); var CircularDimension = function (_Dimension2) { (0, _inherits3.default)(CircularDimension, _Dimension2); function CircularDimension() { (0, _classCallCheck3.default)(this, CircularDimension); return (0, _possibleConstructorReturn3.default)(this, (CircularDimension.__proto__ || (0, _getPrototypeOf2.default)(CircularDimension)).call(this)); } return CircularDimension; }(Dimension); //TODO: other types /*class RadiusDimension extends Dimension { constructor() { super(); } } class DiameterDimension extends Dimension { constructor() { super(); } }*/ var DimensionTypes = [["CC_LinearFeatureDimension", LinearDimension], ["CC_CircularFeatureDimension", CircularDimension]]; var DimensionsVisualizer = exports.DimensionsVisualizer = function () { function DimensionsVisualizer() { (0, _classCallCheck3.default)(this, DimensionsVisualizer); } (0, _createClass3.default)(DimensionsVisualizer, [{ key: "update", //update old dimension object or create new (if type have changed) //returns updated dimension object value: function update(dimension, ccData) { var typeChanged = true; for (var i = 0; i < DimensionTypes.length; i++) { if (ccData.type === DimensionTypes[i][0] && dimension.constructor === DimensionTypes[i][1]) typeChanged = false; }if (typeChanged) return create(ccData); dimension.update(ccData); return dimension; } //create new dimension object }, { key: "create", value: function create(ccData) { var constr = undefined; for (var i = 0; i < DimensionTypes.length; i++) { if (ccData.type === DimensionTypes[i][0]) constr = DimensionTypes[i][1]; }if (!constr) return undefined; var dimension = new constr(); dimension.update(ccData); return dimension; } }]); return DimensionsVisualizer; }();