UNPKG

awv3

Version:
142 lines (111 loc) 5.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); 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 _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends3 = require('babel-runtime/helpers/extends'); var _extends4 = _interopRequireDefault(_extends3); var _plugin = require('../../session/plugin'); var _plugin2 = _interopRequireDefault(_plugin); var _dimension = require('../dimension/'); var _dimension2 = _interopRequireDefault(_dimension); var _elements = require('../../session/elements'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var resources = ['extrusion'].reduce(function (prev, item) { return (0, _extends4.default)({}, prev, (0, _defineProperty3.default)({}, item, require('!!url-loader!awv3-icons/32x32/' + item + '.png'))); }, {}); var Feature = function (_Plugin) { (0, _inherits3.default)(Feature, _Plugin); function Feature(session, args) { (0, _classCallCheck3.default)(this, Feature); var _this = (0, _possibleConstructorReturn3.default)(this, (Feature.__proto__ || (0, _getPrototypeOf2.default)(Feature)).call(this, session, (0, _extends4.default)({ type: 'Extrusion', icon: 'extrusion', resources: resources }, args))); _this.dimension = new _dimension2.default(_this.session, { name: 'Dimensions', collapsed: true, closeable: false, parent: _this.id }); _this.dependencies.push(_this.dimension); return _this; } (0, _createClass3.default)(Feature, [{ key: 'onEnabled', value: function onEnabled() { this.addElement(new _elements.Group(this, { format: _elements.Group.Format.Table, children: [this.makeElement(_elements.Input, 'extrudeDir', { format: _elements.Input.Format.Vector }), this.makeElement(_elements.Slider, 'extrudeType', { max: 2, positions: (0, _extends4.default)({}, ['up', 'down', 'symmetric']) }), this.makeElement(_elements.Checkbox, 'invertExtrusion'), this.makeElement(_elements.Input, 'limit1'), this.makeElement(_elements.Input, 'limit2'), this.makeElement(_elements.Slider, 'taperAngle', { max: 360, step: 10, positions: { 0: '0°', 90: '90°', 180: '180°', 270: '270°', 360: '360°' } }), new _elements.Selection(this, { name: 'sketch', types: ['SketcherMesh'] })] })); this.addElement(new _elements.Link(this, { value: this.dimension.id, collapsable: true })); this.dimension.enabled = true; } }, { key: 'onDisabled', value: function onDisabled() { this.dimension.enabled = false; this.destroyElements(); } }, { key: 'getDescriptor', value: function getDescriptor(memberName) { var scope = this, id = this.feature; return { get value() { return scope.tree[id].members[memberName].value; }, set value(value) { var m = (0, _stringify2.default)(memberName), v = (0, _stringify2.default)(value), f = 1; scope.connection.execute('_C.CADApplication.SetExpressions(' + id + ', [' + m + '], [' + v + '], ' + f + ');'); } }; } }, { key: 'makeElement', value: function makeElement(elementClass, memberName) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var element = new elementClass(this, (0, _extends4.default)({ name: memberName }, options)); var descriptor = this.getDescriptor(memberName); // Convert between the type of a value in the tree (t) and the type of element.value (e) var e2t = function e2t(e) { return e; }, t2e = function t2e(t) { return t; }; if (elementClass === _elements.Input && element.type !== _elements.Input.Format.Vector) e2t = Number, t2e = String;else if (elementClass === _elements.Input && element.type === _elements.Input.Format.Vector) e2t = function e2t(e) { return e.split(',').map(Number); }, t2e = function t2e(t) { return t.map(String).join(','); };else if (elementClass === _elements.Checkbox) e2t = Number, t2e = Boolean; element.value = t2e(descriptor.value); element.observe(function (state) { return state.value; }, function (e) { return descriptor.value = e2t(e); }); return element; } }]); return Feature; }(_plugin2.default); exports.default = Feature;