awv3
Version:
⚡ AWV3 embedded CAD
73 lines (59 loc) • 2.84 kB
JavaScript
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], '');