awv3
Version:
⚡ AWV3 embedded CAD
142 lines (111 loc) • 5.82 kB
JavaScript
;
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;