awv3
Version:
⚡ AWV3 embedded CAD
120 lines (100 loc) • 4.77 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
// highlevel commands are those that map to different lowlevel commands depending on the arguments
import { angleox, distance, horizontalDistance, radius, verticalDistance } from '../constraint/type';
import { getArcAngles, getClass } from '../geomutils';
import { AddPoint, AddLine, AddArc, AddCircle, AddConstraint, RemovePoint, RemoveLine, RemoveArc, RemoveCircle, RemoveConstraint, UpdatePoint, UpdateLine, UpdateArc, UpdateCircle, GetOrigin, SketchAppendNewObj, Assign, Call, Member, Sequence, Variable } from './lowlevel';
export function addCommand(sketch, geomParams) {
switch (getClass(geomParams)) {
case 'CC_Point':
return AddPoint(sketch, geomParams.start);
case 'CC_Line':
return AddLine(sketch, geomParams.start, geomParams.end);
case 'CC_Arc':
return AddArc(sketch, geomParams.start, getArcAngles(geomParams).mid, geomParams.end);
case 'CC_Circle':
return AddCircle(sketch, geomParams.center, geomParams.radius);
}
if (geomParams.entities) return AddConstraint(sketch, geomParams.class, geomParams.class, geomParams.entities, geomParams.value.type, geomParams.value.value, geomParams.value.userValue, geomParams.value.dimPos, [geomParams.value.sector, geomParams.value.reflex]);
}
export function removeCommands(sketch) {
for (var _len = arguments.length, ccrefs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
ccrefs[_key - 1] = arguments[_key];
}
return ccrefs.filter(function (ccref) {
return ccref === ccref.encompassing;
}).map(function (ccref) {
switch (ccref.class) {
case 'CC_Point':
return RemovePoint(sketch, ccref);
case 'CC_Line':
return RemoveLine(sketch, ccref);
case 'CC_Arc':
return RemoveArc(sketch, ccref);
case 'CC_Circle':
return RemoveCircle(sketch, ccref);
}
if (ccref.isConstraint()) return RemoveConstraint(sketch, ccref);
});
}
export function updateCommand(sketch, ccref, geomParams) {
switch (ccref.class) {
case 'CC_Point':
{
var _extends2;
var encompassing = ccref.encompassing;
if (ccref === encompassing) return UpdatePoint(sketch, ccref, geomParams.start);else return updateCommand(sketch, encompassing, _extends({}, encompassing.geomParams, (_extends2 = {}, _extends2[ccref.pointType] = geomParams.start, _extends2)));
}
case 'CC_Line':
return UpdateLine(sketch, ccref, geomParams.start, geomParams.end);
case 'CC_Arc':
return UpdateArc(sketch, ccref, geomParams.start, geomParams.end, geomParams.center, geomParams.start.distanceTo(geomParams.center), getArcAngles(geomParams).bulge);
case 'CC_Circle':
return UpdateCircle(sketch, ccref, geomParams.center, geomParams.radius);
}
}
export function restrictionCommands(sketch, ccref, restrictions) {
var commands = [];
function add(ct, entities, value) {
if (value !== undefined) commands.push(addCommand(sketch, {
class: ct.type,
entities: entities,
value: {
value: value
}
}));
}
var origin = sketch.getMember('originReference').value ? sketch.getMember('originReference', 'Ccref') : GetOrigin(sketch);
switch (ccref.class) {
case 'CC_Point':
add(horizontalDistance, [origin, ccref], restrictions.xabsolute);
add(verticalDistance, [origin, ccref], restrictions.yabsolute);
break;
case 'CC_Line':
add(distance, ccref.children, restrictions.length);
add(angleox, [ccref], restrictions.angle);
add(horizontalDistance, ccref.children, restrictions.xoffset);
add(verticalDistance, ccref.children, restrictions.yoffset);
add(horizontalDistance, [origin, ccref.endPoint], restrictions.xabsolute);
add(verticalDistance, [origin, ccref.endPoint], restrictions.yabsolute);
break;
case 'CC_Arc':
add(radius, [ccref], restrictions.radius);
add(horizontalDistance, [ccref.startPoint, ccref.endPoint], restrictions.xoffset);
add(verticalDistance, [ccref.startPoint, ccref.endPoint], restrictions.yoffset);
add(horizontalDistance, [origin, ccref.endPoint], restrictions.xabsolute);
add(verticalDistance, [origin, ccref.endPoint], restrictions.yabsolute);
break;
case 'CC_Circle':
add(radius, [ccref], restrictions.radius);
break;
}
return commands;
}
export function setPlaneCommands(sketch, plane) {
var v = Variable();
return Sequence(Assign(v, sketch), Call(Member(v, 'SetPlaneRef'), plane), Call(Member(v, 'SetCoordSys')), 1);
}
export function createAndSetPlaneCommands(sketch, face) {
var v = Variable();
return Sequence(Assign(v, sketch), Call(Member(v, 'CreateAndSetWorkPlane'), face), 1);
}