awv3
Version:
⚡ AWV3 embedded CAD
124 lines (90 loc) • 4.96 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
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 _get2 = require('babel-runtime/helpers/get');
var _get3 = _interopRequireDefault(_get2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _geomutils = require('../geomutils');
var _draw = require('./draw');
var _draw2 = _interopRequireDefault(_draw);
var _point = require('./point');
var _point2 = _interopRequireDefault(_point);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ArcTangentHandler = function (_DrawHandler) {
(0, _inherits3.default)(ArcTangentHandler, _DrawHandler);
function ArcTangentHandler() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, ArcTangentHandler);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = ArcTangentHandler.__proto__ || (0, _getPrototypeOf2.default)(ArcTangentHandler)).call.apply(_ref, [this].concat(args))), _this), _this.statesCount = 2, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(ArcTangentHandler, [{
key: 'getPreviewGeomParams',
value: function getPreviewGeomParams(clickPositions) {
if (clickPositions.length >= 2) return (0, _geomutils.drawArcBy_S_T_E)(clickPositions[0], this.from.tangent, clickPositions[1]);
return _point2.default.prototype.getPreviewGeomParams.call(this, clickPositions);
}
}, {
key: 'handleClick',
value: function handleClick(newPosition) {
if (this.clicksPos.length !== 0) return (0, _get3.default)(ArcTangentHandler.prototype.__proto__ || (0, _getPrototypeOf2.default)(ArcTangentHandler.prototype), 'handleClick', this).call(this, newPosition);
var variants = [];
// for all lines/arcs on sketch
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(this.sketch.children), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var object = _step.value;
if (object.state.class !== 'CC_Line' && object.state.class !== 'CC_Arc') continue;
// for their endpoint matching newPosition
var _arr = ['startPoint', 'endPoint'];
for (var _i = 0; _i < _arr.length; _i++) {
var end = _arr[_i];
if (!object[end].pos.equals(newPosition)) continue;
// calculate the tangent
var tangent = (0, _geomutils.getTangent)(object.geomParams, newPosition);
if (tangent.lengthSq() === 0) // length is really either 0 or 1
continue;
if (end === 'startPoint') tangent.negate();
// point on tangent incidence: save all info about object, endpoint and tangent
variants.push({ object: object, end: end, tangent: tangent });
}
}
// handle the click if a unique variant has been found
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
this.from = variants.length === 1 ? variants[0] : undefined;
return this.from !== undefined;
}
}]);
return ArcTangentHandler;
}(_draw2.default);
exports.default = ArcTangentHandler;