awv3
Version:
⚡ AWV3 embedded CAD
375 lines (331 loc) • 13.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _regenerator = require("babel-runtime/regenerator");
var _regenerator2 = _interopRequireDefault(_regenerator);
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
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 Ccref = function () {
function Ccref(sketcher, id) {
(0, _classCallCheck3.default)(this, Ccref);
if (typeof id !== "string" && typeof id !== "number") throw new Error("Creating Ccref with bad parameters");
this.sketcher = sketcher;
this.id = id;
}
(0, _createClass3.default)(Ccref, [{
key: "getMatrixWorld",
// return local-to-world transformation as a THREE matrix
value: function getMatrixWorld() {
var state = this.state;
var vec3 = function vec3(name) {
var v = state.coordinateSystem[name];
return new THREE.Vector3(v[0], v[1], v[2]);
};
// Object tree has world (not local) coordinates
var matrix = new THREE.Matrix4();
var vx = vec3(1),
vy = vec3(2),
vz = vec3(3),
orig = vec3(0);
matrix.makeBasis(vx, vy, vz);
matrix.setPosition(orig);
return matrix;
}
}, {
key: "updateGraphics",
value: function updateGraphics() {
if (this.graphics) {
this.graphics.updateFromGeomParams(this.geomParams);
this.graphics.updateFromSketcherAndId(this.sketcher, this.id);
this.sketcher.refresh();
}
}
}, {
key: "updateGraphicsRecursive",
value: function updateGraphicsRecursive() {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(this.descendants), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var obj = _step.value;
obj.updateGraphics();
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "getNamedChild",
value: function getNamedChild(childName) {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = (0, _getIterator3.default)(this.state.children), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var id = _step2.value;
var child = new Ccref(this.sketcher, id);
if (child.state.name === childName) return child;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
}
}, {
key: "isConstraint",
value: function isConstraint() {
return this.state.class.startsWith('CC_2D') && this.state.class.endsWith('Constraint');
}
}, {
key: "isPoint",
value: function isPoint() {
return this.state.class === 'CC_Point';
}
}, {
key: "isStartPoint",
value: function isStartPoint() {
return this.state.name === 'startPoint';
}
}, {
key: "isEndPoint",
value: function isEndPoint() {
return this.state.name === 'endPoint';
}
}, {
key: "isCenterPoint",
value: function isCenterPoint() {
return this.state.name === 'center';
}
}, {
key: "isSubPoint",
value: function isSubPoint() {
return this.isPoint() && (this.isStartPoint() || this.isEndPoint() || this.isCenterPoint());
}
}, {
key: "isLine",
value: function isLine() {
return this.state.class === 'CC_Line';
}
}, {
key: "isArc",
value: function isArc() {
return this.state.class === 'CC_Arc';
}
}, {
key: "isSketch",
value: function isSketch() {
return this.state.class === 'CC_Sketch';
}
}, {
key: "pointType",
value: function pointType() {
return this.state.name.replace('Point', '');
}
}, {
key: "graphics",
get: function get() {
return this.sketcher.graphics.get(this.id);
}
}, {
key: "state",
get: function get() {
return this.sketcher.tree[this.id];
}
}, {
key: "tree",
get: function get() {
return this.sketcher.connection.resolveTree(this.id)[0];
}
}, {
key: "pos",
get: function get() {
return new THREE.Vector3().fromArray(this.state.members.pos.value);
}
}, {
key: "entities",
get: function get() {
var _this = this;
return this.state.members.entities.members.map(function (e) {
return new Ccref(_this.sketcher, e.value);
});
}
}, {
key: "parent",
get: function get() {
var parentId = this.state.parent;
return parentId ? new Ccref(this.sketcher, parentId) : undefined;
}
}, {
key: "children",
get: function get() {
var _this2 = this;
return (this.state.children || []).map(function (child) {
return new Ccref(_this2.sketcher, child);
});
}
}, {
key: "descendants",
get: function get() {
return _regenerator2.default.mark(function descendants(ccref) {
var _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, child;
return _regenerator2.default.wrap(function descendants$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_iteratorNormalCompletion3 = true;
_didIteratorError3 = false;
_iteratorError3 = undefined;
_context.prev = 3;
_iterator3 = (0, _getIterator3.default)(ccref.children);
case 5:
if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {
_context.next = 11;
break;
}
child = _step3.value;
return _context.delegateYield(child.descendants, "t0", 8);
case 8:
_iteratorNormalCompletion3 = true;
_context.next = 5;
break;
case 11:
_context.next = 17;
break;
case 13:
_context.prev = 13;
_context.t1 = _context["catch"](3);
_didIteratorError3 = true;
_iteratorError3 = _context.t1;
case 17:
_context.prev = 17;
_context.prev = 18;
if (!_iteratorNormalCompletion3 && _iterator3.return) {
_iterator3.return();
}
case 20:
_context.prev = 20;
if (!_didIteratorError3) {
_context.next = 23;
break;
}
throw _iteratorError3;
case 23:
return _context.finish(20);
case 24:
return _context.finish(17);
case 25:
_context.next = 27;
return ccref;
case 27:
case "end":
return _context.stop();
}
}
}, descendants, this, [[3, 13, 17, 25], [18,, 20, 24]]);
})(this);
}
}, {
key: "encompassing",
get: function get() {
var parent = this.parent;
return parent.state.class === 'CC_Line' || parent.state.class === 'CC_Arc' ? parent : this;
}
}, {
key: "startPoint",
get: function get() {
return this.getNamedChild("startPoint");
}
}, {
key: "endPoint",
get: function get() {
return this.getNamedChild("endPoint");
}
}, {
key: "center",
get: function get() {
return this.getNamedChild("center");
}
}, {
key: "geomParams",
get: function get() {
if (this.sketcher.transientGeomParams.has(this.id)) return this.sketcher.transientGeomParams.get(this.id);
var geomParams = { class: this.state.class, coordinateSystem: this.getMatrixWorld(), scale: this.sketcher.graphicScale };
if (this.isConstraint()) return (0, _extends3.default)({}, geomParams, { entities: this.entities, value: this.state.members.value || {} });
switch (this.state.class) {
case 'CC_Point':
return (0, _extends3.default)({}, geomParams, { start: this.pos });
case 'CC_Line':
return (0, _extends3.default)({}, geomParams, { start: this.startPoint.pos, end: this.endPoint.pos });
case 'CC_Arc':
return (0, _extends3.default)({}, geomParams, {
start: this.startPoint.pos,
end: this.endPoint.pos,
center: this.center.pos,
clockwise: this.state.members.bulge.value < 0,
radius: this.state.members.radius.value });
default:
return geomParams;
}
},
set: function set(geomParams) {
this.sketcher.transientGeomParams.set(this.id, geomParams);
var _iteratorNormalCompletion4 = true;
var _didIteratorError4 = false;
var _iteratorError4 = undefined;
try {
for (var _iterator4 = (0, _getIterator3.default)(this.children), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
var child = _step4.value;
child.geomParams = (0, _extends3.default)({}, geomParams, { start: geomParams[child.pointType()], end: undefined, center: undefined });
}
} catch (err) {
_didIteratorError4 = true;
_iteratorError4 = err;
} finally {
try {
if (!_iteratorNormalCompletion4 && _iterator4.return) {
_iterator4.return();
}
} finally {
if (_didIteratorError4) {
throw _iteratorError4;
}
}
}
}
}]);
return Ccref;
}();
exports.default = Ccref;