awv3
Version:
⚡ AWV3 embedded CAD
73 lines (65 loc) • 4.08 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.verticality = exports.verticalDistance = exports.tangency = exports.symmetric = exports.diameter = exports.radius = exports.perpendicularity = exports.parallelity = exports.midpoint = exports.incidence = exports.horizontality = exports.horizontalDistance = exports.fixation = exports.equalRadius = exports.equalDistance = exports.distance = exports.concentric = exports.colinear = exports.angleox = exports.angle = undefined;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function point(ccref) {
return ccref.isPoint();
}
function line(ccref) {
return ccref.isLine();
}
function arc(ccref) {
return ccref.isArc() || ccref.isCircle();
}
function curve(ccref) {
return line(ccref) || arc(ccref);
}
function any(ccref) {
return point(ccref) || curve(ccref);
}
function f(type, predicates, desc) {
var isLenient = desc.includes('l'); // allow selecting a line instead of its two endpoints
var isStrictlyLenient = desc.includes('L'); // must select lines instead of endpoints
return {
type: type,
isParametric: desc.includes('p'),
isCommutative: desc.includes('c'),
adapt: function adapt(entities) {
entities = [].concat((0, _toConsumableArray3.default)(entities));
for (var i = 0; i < entities.length; ++i) {
var _entities;
if (isLenient && entities[i].isLine() && entities.length < predicates.length) (_entities = entities).splice.apply(_entities, [i, 1].concat((0, _toConsumableArray3.default)(entities[i].children)));
}if (entities.length !== predicates.length || !entities.every(function (entity, i) {
return predicates[i](entity);
})) return null;
for (var _i = 0; _i < entities.length; ++_i) {
var _entities2;
if (isStrictlyLenient && entities[_i].isLine()) (_entities2 = entities).splice.apply(_entities2, [_i, 1].concat((0, _toConsumableArray3.default)(entities[_i].children)));
}return entities;
}
};
}
var angle = exports.angle = f('CC_2DAngleConstraint', [line, line], 'pc');
var angleox = exports.angleox = f('CC_2DAngleOXConstraint', [line], 'p');
var colinear = exports.colinear = f('CC_2DColinearConstraint', [line, line], 'c');
var concentric = exports.concentric = f('CC_2DConcentricConstraint', [arc, arc], 'c');
var distance = exports.distance = f('CC_2DOffsetConstraint', [any, any], 'pcl');
var equalDistance = exports.equalDistance = f('CC_2DEqualLengthConstraint', [line, line], 'L');
var equalRadius = exports.equalRadius = f('CC_2DEqualRadiusConstraint', [arc, arc], 'c');
var fixation = exports.fixation = f('CC_2DFixationConstraint', [any], '');
var horizontalDistance = exports.horizontalDistance = f('CC_2DHorizontalDistanceConstraint', [point, point], 'pl');
var horizontality = exports.horizontality = f('CC_2DHorizontalConstraint', [line], '');
var incidence = exports.incidence = f('CC_2DCoincidentConstraint', [any, any], 'c');
var midpoint = exports.midpoint = f('CC_2DMidpointConstraint', [any, point, any], '');
var parallelity = exports.parallelity = f('CC_2DParallelConstraint', [line, line], 'c');
var perpendicularity = exports.perpendicularity = f('CC_2DPerpendicularConstraint', [line, line], 'c');
var radius = exports.radius = f('CC_2DRadiusConstraint', [arc], 'p');
var diameter = exports.diameter = f('CC_2DDiameterConstraint', [arc], 'p');
var symmetric = exports.symmetric = f('CC_2DSymmetryConstraint', [line, any, any], '');
var tangency = exports.tangency = f('CC_2DTangentSketchConstraint', [curve, curve], 'c');
var verticalDistance = exports.verticalDistance = f('CC_2DVerticalDistanceConstraint', [point, point], 'pl');
var verticality = exports.verticality = f('CC_2DVerticalConstraint', [line], '');