awv3
Version:
⚡ AWV3 embedded CAD
43 lines (40 loc) • 2.08 kB
JavaScript
import { getClass } from './geomutils';
import Graphics from './graphics';
function changeGeomObjectContainerType(container, ...geomTypes) {
if (container.geomType === geomTypes[0]) return;
container.geomType = geomTypes[0];
while (container.children.length > 0)
container.remove(container.children[container.children.length - 1]);
for (let geomType of geomTypes)
container.add(Graphics(geomType));
}
// update object and its start, end and center point objects
export function updateGeomObjectContainer(container, geomParams) {
switch (getClass(geomParams)) {
case 'CC_Point':
changeGeomObjectContainerType(container, 'CC_Point');
container.children[0].updateFromGeomParams(geomParams);
break;
case 'CC_Line':
changeGeomObjectContainerType(container, 'CC_Line', 'CC_Point', 'CC_Point');
container.children[0].updateFromGeomParams(geomParams);
container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.start });
container.children[2].updateFromGeomParams({ ...geomParams, start: geomParams.end });
break;
case 'CC_Arc':
changeGeomObjectContainerType(container, 'CC_Arc', 'CC_Point', 'CC_Point', 'CC_Point');
container.children[0].updateFromGeomParams(geomParams);
container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.start });
container.children[2].updateFromGeomParams({ ...geomParams, start: geomParams.end });
container.children[3].updateFromGeomParams({ ...geomParams, start: geomParams.center });
break;
case 'CC_Circle':
changeGeomObjectContainerType(container, 'CC_Circle', 'CC_Point');
container.children[0].updateFromGeomParams(geomParams);
container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.center });
break;
default:
changeGeomObjectContainerType(container);
break;
}
}