UNPKG

awv3

Version:
73 lines (59 loc) 2.84 kB
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 = entities.concat(); 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(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(entities[_i].children)); } return entities; } }; } export var angle = f('CC_2DAngleConstraint', [line, line], 'pc'); export var angleox = f('CC_2DAngleOXConstraint', [line], 'p'); export var colinear = f('CC_2DColinearConstraint', [line, line], 'c'); export var concentric = f('CC_2DConcentricConstraint', [arc, arc], 'c'); export var distance = f('CC_2DOffsetConstraint', [any, any], 'pcl'); export var equalDistance = f('CC_2DEqualLengthConstraint', [line, line], 'L'); export var equalRadius = f('CC_2DEqualRadiusConstraint', [arc, arc], 'c'); export var fixation = f('CC_2DFixationConstraint', [any], ''); export var horizontalDistance = f('CC_2DHorizontalDistanceConstraint', [point, point], 'pl'); export var horizontality = f('CC_2DHorizontalConstraint', [line], ''); export var incidence = f('CC_2DCoincidentConstraint', [any, any], 'c'); export var midpoint = f('CC_2DMidpointConstraint', [any, point, any], ''); export var parallelity = f('CC_2DParallelConstraint', [line, line], 'c'); export var perpendicularity = f('CC_2DPerpendicularConstraint', [line, line], 'c'); export var radius = f('CC_2DRadiusConstraint', [arc], 'p'); export var diameter = f('CC_2DDiameterConstraint', [arc], 'p'); export var symmetric = f('CC_2DSymmetryConstraint', [line, any, any], ''); export var tangency = f('CC_2DTangentSketchConstraint', [curve, curve], 'c'); export var verticalDistance = f('CC_2DVerticalDistanceConstraint', [point, point], 'pl'); export var verticality = f('CC_2DVerticalConstraint', [line], '');