Playing with face creating in test feature

This commit is contained in:
mmiscool 2023-06-04 00:25:08 +00:00
parent a4b82dce14
commit 87666bacbd
5 changed files with 273 additions and 0 deletions

View file

@ -0,0 +1,62 @@
<svg
version="1.1"
viewBox="0.0 0.0 96.0 96.0"
fill="none"
stroke="none"
stroke-linecap="square"
stroke-miterlimit="10"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
><clipPath id="g14470d71bf0_0_353.0"><path
d="m0 0l96.0 0l0 96.0l-96.0 0l0 -96.0z"
clip-rule="nonzero"
/></clipPath><g clip-path="url(#g14470d71bf0_0_353.0)"><path
fill="#000000"
fill-opacity="0.0"
d="m0 0l96.0 0l0 96.0l-96.0 0z"
fill-rule="evenodd"
/><path
fill="#999999"
d="m13.372704 43.574802l37.414307 21.838055l-0.14963913 25.93435l-37.264668 -21.687027z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m13.372704 43.574802l37.414307 21.838055l-0.14963913 25.93435l-37.264668 -21.687027z"
fill-rule="evenodd"
/><path
fill="#ffff00"
d="m50.93061 65.80887l14.41851 -26.288708l-36.652504 -21.483416l-15.473518 25.839937z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m50.93061 65.80887l14.41851 -26.288708l-36.652504 -21.483416l-15.473518 25.839937z"
fill-rule="evenodd"
/><path
fill="#999999"
d="m29.0 17.736256l21.779976 -12.767752l36.954308 21.630383l-22.38359 12.91997z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m29.0 17.736256l21.779976 -12.767752l36.954308 21.630383l-22.38359 12.91997z"
fill-rule="evenodd"
/><path
fill="#999999"
d="m88.18786 26.750656l0 43.1138l-37.40571 21.3312l0 -25.385918l14.421135 -26.139114z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m88.18786 26.750656l0 43.1138l-37.40571 21.3312l0 -25.385918l14.421135 -26.139114z"
fill-rule="evenodd"
/></g></svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,64 @@
<svg
version="1.1"
viewBox="0.0 0.0 96.0 96.0"
fill="none"
stroke="none"
stroke-linecap="square"
stroke-miterlimit="10"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
><clipPath id="g14470d71bf0_0_149.0"><path
d="m0 0l96.0 0l0 96.0l-96.0 0l0 -96.0z"
clip-rule="nonzero"
/></clipPath><g clip-path="url(#g14470d71bf0_0_149.0)"><path
fill="#000000"
fill-opacity="0.0"
d="m0 0l96.0 0l0 96.0l-96.0 0z"
fill-rule="evenodd"
/><path
fill="#999999"
d="m50.628822 91.18427l37.40571 -21.782593l0 -43.1138l-37.40571 -21.480791l-22.38359 12.61816l37.40571 21.782597l-2.4039574 1.8029709l-2.703144 2.1021538l-1.6533775 2.10215l-2.2517433 2.8553581l-1.9551849 3.154541l-1.650753 3.154541l-1.3515701 4.2069283l-0.45140076 3.0023232l-0.2991829 3.605938l-37.555298 -21.480793l0 25.986904z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m50.628822 91.18427l37.40571 -21.782593l0 -43.1138l-37.40571 -21.480791l-22.38359 12.61816l37.40571 21.782597l-2.4039574 1.8029709l-2.703144 2.1021538l-1.6533775 2.10215l-2.2517433 2.8553581l-1.9551849 3.154541l-1.650753 3.154541l-1.3515701 4.2069283l-0.45140076 3.0023232l-0.2991829 3.605938l-37.555298 -21.480793l0 25.986904z"
fill-rule="evenodd"
/><path
fill="#ffff00"
d="m43.117744 25.840397l22.53318 13.219151l-1.8029709 1.3515701l-1.8029671 1.3515701l-1.9525604 1.6533775l-1.8029709 1.650753l-1.8029671 2.1047783l-1.5011635 2.5535507l-1.9525604 3.154541l-1.0523872 3.3041306l-0.6009903 2.8527336l-0.44877625 2.5535507l-0.15221405 3.7555313l-37.555298 -21.480793l0 -3.0049515l0.45139885 -3.9051208l0.60098934 -2.4039574l1.3515711 -3.453724l1.802969 -3.605938l2.2543678 -2.5535507l1.650753 -1.9525604l2.1047764 -1.9525604l2.5535507 -1.802969l2.2517433 -1.5011635z"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m43.117744 25.840397l22.53318 13.219151l-1.8029709 1.3515701l-1.8029671 1.3515701l-1.9525604 1.6533775l-1.8029709 1.650753l-1.8029671 2.1047783l-1.5011635 2.5535507l-1.9525604 3.154541l-1.0523872 3.3041306l-0.6009903 2.8527336l-0.44877625 2.5535507l-0.15221405 3.7555313l-37.555298 -21.480793l0 -3.0049515l0.45139885 -3.9051208l0.60098934 -2.4039574l1.3515711 -3.453724l1.802969 -3.605938l2.2543678 -2.5535507l1.650753 -1.9525604l2.1047764 -1.9525604l2.5535507 -1.802969l2.2517433 -1.5011635z"
fill-rule="evenodd"
/><path
fill="#000000"
fill-opacity="0.0"
d="m65.50656 39.211285l22.58268 -12.755905"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m65.50656 39.211285l22.58268 -12.755905"
fill-rule="evenodd"
/><path
fill="#000000"
fill-opacity="0.0"
d="m50.78215 65.350395l-0.18897629 25.228348"
fill-rule="evenodd"
/><path
stroke="#000000"
stroke-width="4.0"
stroke-linejoin="round"
stroke-linecap="butt"
d="m50.78215 65.350395l-0.18897629 25.228348"
fill-rule="evenodd"
/></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,3 @@
# Teast feature
This feature is used to test functionlity prior to building a complete real feature

View file

@ -0,0 +1,21 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'
'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512"
xmlns:xlink="http://www.w3.org/1999/xlink"
enable-background="new 0 0 512 512"
>
<g>
<g>
<path
d="m409.1,150.1h-306.2c-11.3,0-20.4,9.1-20.4,20.4v310.1c0,11.3 9.1,20.4 20.4,20.4h306.3c11.3,0 20.4-9.1 20.4-20.4v-310.1c-0.1-11.3-9.2-20.4-20.5-20.4zm-20.4,310.1h-265.4v-269.3h265.4v269.3z"
/>
<path
d="m170,135.9h175c11.3,0 20.4-9.1 20.4-20.4v-84.1c0-11.3-9.1-20.4-20.4-20.4h-175c-11.3,0-20.4,9.1-20.4,20.4v84.1c-0.1,11.3 9.1,20.4 20.4,20.4zm20.4-84.1h134.2v43.3h-134.2v-43.3z"
/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 773 B

View file

@ -0,0 +1,123 @@
import {ApplicationContext} from 'cad/context';
import {roundValueForPresentation as r} from 'cad/craft/operationHelper';
import {EntityKind} from "cad/model/entities";
import {OperationDescriptor} from "cad/craft/operationBundle";
import {FromMObjectProductionAnalyzer} from "cad/craft/production/productionAnalyzer";
import {MEdge} from "cad/model/medge";
import {MObject} from "cad/model/mobject";
import {MShell} from "cad/model/mshell";
import { MBrepFace, MFace } from 'cad/model/mface';
import icon from "./icon.svg";
interface TestFeatureParams {
face: MFace,
R: number,
H: number,
Q: number,
}
export const TestFeatureOperation: OperationDescriptor<any> = {
id: 'TestFeature_TOOL',
label: 'TestFeature/Chamfer',
icon,
info: 'TestFeature/Chamfer',
path:__dirname,
paramsInfo: ({size, opperationType,}) => `(${r(size)} ${r(opperationType)}})`,
run: (params: TestFeatureParams, ctx: ApplicationContext) => {
const occ = ctx.occService;
const oci = occ.commandInterface;
let edgeList = [];
// oci.cylinder("aCylinder", params.R);
// oci.line("aLine2d", "0", "0", "1", params.H);
// console.log("before trim");
// oci.trim("aSegment", "aLine2d", "0", 5* Math.PI);
// console.log("After");
// oci.mkedge("aHelixEdge", "aSegment", "aCylinder", "0", params.Q* Math.PI);
// //# there is no curve 3d in the pcurve edge.
// oci.mkedgecurve("aHelixEdge", "0.001");
// oci.wire("aHelixWire", "aHelixEdge");
// oci.circle("profile", params.R, "0", "0", "0", "4", "1", "1");
// oci.mkedge("profile", "profile");
// oci.wire("profile", "profile");
// oci.mkplane("profile", "profile");
// oci.mkshell("profile", "profile");
// console.log("my face", params.face)
const sketch = ctx.sketchStorageService.readSketch(params.face.id);
const sweepSources = occ.utils.sketchToFaces(sketch, params.face.csys)
// console.log(sweepSources[0].face);
// oci.mkshell("shell", sweepSources[0].face);
const created = sweepSources.map((faceRef, i) => {
//alert(i)
const faceName = faceRef.face;
const shapeName = "[f]" + i;
oci.mkshell(shapeName, faceName);
return occ.io.getShell(shapeName,null);
});
console.log(created);
return {created,
consumed:[]}
oci.pipe("aSpring", "aHelixWire", "profile");
//holeSolids.push(occ.io.getShell("aSpring"));
return {created:[occ.io.getShell("aSpring")],
consumed:[]}
},
form: [
{
type: 'selection',
name: 'face',
capture: [EntityKind.FACE],
label: 'Face',
multi: false,
defaultValue: {
usePreselection: true,
preselectionIndex: 0
},
},
{
type: 'number',
label: 'R',
name: 'R',
defaultValue: 5,
},
{
type: 'number',
label: 'H',
name: 'H',
defaultValue: 5,
},
{
type: 'number',
label: 'Q',
name: 'Q',
defaultValue: 5,
},
],
}