@faicad/faijs-fcstd 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +29 -0
- package/NOTICE +20 -0
- package/dist/attachment.d.ts +72 -0
- package/dist/attachment.d.ts.map +1 -0
- package/dist/attachment.js +93 -0
- package/dist/attachment.js.map +1 -0
- package/dist/bspline.d.ts +58 -0
- package/dist/bspline.d.ts.map +1 -0
- package/dist/bspline.js +93 -0
- package/dist/bspline.js.map +1 -0
- package/dist/build-fai-zip.d.ts +40 -0
- package/dist/build-fai-zip.d.ts.map +1 -0
- package/dist/build-fai-zip.js +111 -0
- package/dist/build-fai-zip.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +37 -0
- package/dist/cli.js.map +1 -0
- package/dist/codegen.d.ts +83 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +618 -0
- package/dist/codegen.js.map +1 -0
- package/dist/container.d.ts +75 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +36 -0
- package/dist/container.js.map +1 -0
- package/dist/contour.d.ts +43 -0
- package/dist/contour.d.ts.map +1 -0
- package/dist/contour.js +132 -0
- package/dist/contour.js.map +1 -0
- package/dist/convert.d.ts +69 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +303 -0
- package/dist/convert.js.map +1 -0
- package/dist/document.d.ts +48 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +140 -0
- package/dist/document.js.map +1 -0
- package/dist/expressions.d.ts +79 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +162 -0
- package/dist/expressions.js.map +1 -0
- package/dist/external-geo.d.ts +49 -0
- package/dist/external-geo.d.ts.map +1 -0
- package/dist/external-geo.js +140 -0
- package/dist/external-geo.js.map +1 -0
- package/dist/feature-translate.d.ts +193 -0
- package/dist/feature-translate.d.ts.map +1 -0
- package/dist/feature-translate.js +1441 -0
- package/dist/feature-translate.js.map +1 -0
- package/dist/fillet-edges.d.ts +26 -0
- package/dist/fillet-edges.d.ts.map +1 -0
- package/dist/fillet-edges.js +36 -0
- package/dist/fillet-edges.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/placement.d.ts +93 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +117 -0
- package/dist/placement.js.map +1 -0
- package/dist/planegcs-backend.d.ts +34 -0
- package/dist/planegcs-backend.d.ts.map +1 -0
- package/dist/planegcs-backend.js +665 -0
- package/dist/planegcs-backend.js.map +1 -0
- package/dist/sketch-parse.d.ts +199 -0
- package/dist/sketch-parse.d.ts.map +1 -0
- package/dist/sketch-parse.js +263 -0
- package/dist/sketch-parse.js.map +1 -0
- package/dist/sketch-solver.d.ts +63 -0
- package/dist/sketch-solver.d.ts.map +1 -0
- package/dist/sketch-solver.js +28 -0
- package/dist/sketch-solver.js.map +1 -0
- package/dist/sketch-verify.d.ts +53 -0
- package/dist/sketch-verify.d.ts.map +1 -0
- package/dist/sketch-verify.js +71 -0
- package/dist/sketch-verify.js.map +1 -0
- package/dist/structural-types.d.ts +96 -0
- package/dist/structural-types.d.ts.map +1 -0
- package/dist/structural-types.js +155 -0
- package/dist/structural-types.js.map +1 -0
- package/dist/unpack.d.ts +44 -0
- package/dist/unpack.d.ts.map +1 -0
- package/dist/unpack.js +64 -0
- package/dist/unpack.js.map +1 -0
- package/package.json +65 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,OAAO,CAAC,EAAE,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AACD,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;AACzC,KAAK,IAAI,CAAC;AACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * fcstd CLI — batch driver entry: .FCStd → .fai.zip with a machine contract.\n *\n * Exit codes (plan §5.2):\n * 0 = converted; mapping final check passed (only translated /\n * python-baked / preserved-only dispositions)\n * 2 = translation gaps (non-Python baked) — NO zip written\n * 1 = internal error (read/unpack/parse/codegen/container failure)\n *\n * stdout: exactly one JSON line (the summary). Human chatter is forbidden on\n * stdout; diagnostics go to stderr (which must stay empty on success).\n *\n * Run (published): faijs-fcstd-convert <in.FCStd> [out.fai.zip]\n * Run (in-repo): npm run fcstd:convert -w @faicad/faijs -- <in.FCStd> [out.fai.zip]\n * With no <out>, acts as a dry audit (no file written).\n */\nimport { writeFileSync } from 'node:fs';\nimport { convertFcstdFile } from './convert.js';\n\nconst [input, output] = process.argv.slice(2);\nif (!input) {\n console.error('usage: faijs-fcstd-convert <in.FCStd> [out.fai.zip]');\n process.exit(1);\n}\n\nconst summary = await convertFcstdFile(input);\nif (summary.ok && output && summary.zip) {\n writeFileSync(output, summary.zip);\n}\n// stdout contract: ONE json line, no binary payload — zip bytes are stripped\n// before serialization (they are written to <out> above, never printed).\nconst { zip: _zip, ...report } = summary;\nvoid _zip;\nconsole.log(JSON.stringify(report));\n\nif (!summary.ok) {\n process.exit(summary.gaps.length > 0 ? 2 : 1);\n}\n"]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M5 — code generation: object graph + M4 call plans → model/*.fai.js.
|
|
3
|
+
*
|
|
4
|
+
* M5.1 topological order: Body.Group order wins where present; otherwise
|
|
5
|
+
* PropertyLink dependency order. Cycles / missing deps → baked (no fallback
|
|
6
|
+
* heuristics — explicit downgrade per plan §12).
|
|
7
|
+
* M5.2 lowering: params → JS constants; calls → `const partN = await cad.x(...)`;
|
|
8
|
+
* statement ids sN. Sketch contours enter as blueprint literals.
|
|
9
|
+
*
|
|
10
|
+
* 本文件为 Placement 发射平台 `cad.place`(旋转四元数 + 平移,单点)、为产物聚合发射
|
|
11
|
+
* 平台 `cad.compound`(几何复合体,内核 `makeCompound`,持 OCCT 句柄)。这两个是 faijs
|
|
12
|
+
* 平台几何 op(H11,方案 §4),不再借用 `../3d_editor` 的 `cad.group` /
|
|
13
|
+
* `cad.translate` / `cad.rotate_euler`(编辑器交互 op,JSDoc 已 @deprecated)。
|
|
14
|
+
*/
|
|
15
|
+
import type { FcstdDocument } from './document.js';
|
|
16
|
+
import type { CadCall } from './feature-translate.js';
|
|
17
|
+
import type { FilletEdgeEntry } from './fillet-edges.js';
|
|
18
|
+
import type { Contour } from './contour.js';
|
|
19
|
+
import { type Placement } from './placement.js';
|
|
20
|
+
/** Per-object codegen outcome: what was emitted for one FCStd object. */
|
|
21
|
+
export interface GenObjectResult {
|
|
22
|
+
/** FCStd object name */
|
|
23
|
+
name: string;
|
|
24
|
+
/** FCStd type id */
|
|
25
|
+
type: string;
|
|
26
|
+
/** variable name bound in generated code (partN) or undefined when baked */
|
|
27
|
+
variable?: string;
|
|
28
|
+
calls: CadCall[];
|
|
29
|
+
disposition: 'translated' | 'baked' | 'preserved-only';
|
|
30
|
+
reason?: string;
|
|
31
|
+
/** M3 sketch verdict when the object is a sketch */
|
|
32
|
+
sketch?: {
|
|
33
|
+
level: 'L0' | 'L1' | 'L2';
|
|
34
|
+
reason?: string;
|
|
35
|
+
loopCount?: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Full codegen output: lowered calls, per-object ledger and generated script(s). */
|
|
39
|
+
export interface GenResult {
|
|
40
|
+
/** ordered translated calls (dependency order) */
|
|
41
|
+
calls: CadCall[];
|
|
42
|
+
objects: GenObjectResult[];
|
|
43
|
+
/** generated .fai.js source (single-file mode or the main/aggregate script) */
|
|
44
|
+
code: string;
|
|
45
|
+
/** M10.3: multi-file mode — one script per Body with translated geometry.
|
|
46
|
+
* Empty in single-file mode. Paths are container-relative (model/<Name>.fai.js). */
|
|
47
|
+
files: {
|
|
48
|
+
path: string;
|
|
49
|
+
code: string;
|
|
50
|
+
body: string;
|
|
51
|
+
}[];
|
|
52
|
+
/** M10.3: variable in main.fai.js holding the grouped result (multi-file mode) */
|
|
53
|
+
rootVar?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* M5.1/M5.2 — translate every object in dependency order and lower to JS.
|
|
57
|
+
* `sketchVerdict` supplies the M3 outcome per sketch object name; sketches
|
|
58
|
+
* whose contour feeds a Pad/Pocket appear as inputs.
|
|
59
|
+
*
|
|
60
|
+
* @param doc parsed FCStd object graph to translate
|
|
61
|
+
* @param sketchVerdict per-sketch M3 verdict keyed by object name
|
|
62
|
+
* @param sketchContours solved contours per L0 sketch, keyed by object name
|
|
63
|
+
* @param baseName source base name used in generated file headers/labels
|
|
64
|
+
* @param placements per-object Placement used to re-orient placed geometry; missing → identity
|
|
65
|
+
* @param shapeCarriers objects whose Shape is a ZIP .brp member (pure-Shape carriers → shape-asset)
|
|
66
|
+
* @param brokenShapeAssets objects whose Shape `file` attribute points at a missing/empty member (explicit gap)
|
|
67
|
+
* @param filletEdgesData parsed PropertyFilletEdges binaries keyed by object name (Part::Chamfer/Fillet)
|
|
68
|
+
* @returns the lowered call plan, per-object dispositions and generated code
|
|
69
|
+
*/
|
|
70
|
+
export declare function generateModel(doc: FcstdDocument, sketchVerdict: Map<string, {
|
|
71
|
+
level: 'L0' | 'L1' | 'L2';
|
|
72
|
+
reason?: string;
|
|
73
|
+
loopCount?: number;
|
|
74
|
+
}>, sketchContours: Map<string, Contour[]>, baseName: string,
|
|
75
|
+
/** M8.3: per-object Placement (sketches + features); missing → identity */
|
|
76
|
+
placements?: Map<string, Placement>,
|
|
77
|
+
/** H7: objects whose Shape is a ZIP .brp member (pure-Shape carriers → shape-asset). */
|
|
78
|
+
shapeCarriers?: ReadonlySet<string>,
|
|
79
|
+
/** E4: objects whose Shape `file` attribute points at a missing/empty member (explicit gap). */
|
|
80
|
+
brokenShapeAssets?: ReadonlySet<string>,
|
|
81
|
+
/** P8: parsed PropertyFilletEdges binaries keyed by object name (Part::Chamfer/Fillet). */
|
|
82
|
+
filletEdgesData?: ReadonlyMap<string, FilletEdgeEntry[]>): GenResult;
|
|
83
|
+
//# sourceMappingURL=codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,wBAAwB,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,SAAS,EAA6C,MAAM,gBAAgB,CAAC;AAG3F,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,YAAY,GAAG,OAAO,GAAG,gBAAgB,CAAC;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED,qFAAqF;AACrF,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb;wFACoF;IACpF,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9F,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EACtC,QAAQ,EAAE,MAAM;AAChB,2EAA2E;AAC3E,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AACnC,wFAAwF;AACxF,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACnC,gGAAgG;AAChG,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACvC,2FAA2F;AAC3F,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,GACvD,SAAS,CAyaX"}
|