cad esm port 2/3
This commit is contained in:
parent
76f2452e98
commit
d2aa9644fb
1
packages/cad/dist/_cli.d.ts
vendored
Normal file
1
packages/cad/dist/_cli.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const defaults: () => void;
|
||||
13
packages/cad/dist/_cli.js
vendored
Normal file
13
packages/cad/dist/_cli.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
// tweaks and handlers
|
||||
export const defaults = () => {
|
||||
// default command
|
||||
const DefaultCommand = 'summary';
|
||||
if (process.argv.length === 2) {
|
||||
process.argv.push(DefaultCommand);
|
||||
}
|
||||
// currently no default handler, display only :
|
||||
process.on('unhandledRejection', (reason) => {
|
||||
console.error('Unhandled rejection, reason: ', reason);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQjtBQUN0QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLGtCQUFrQjtJQUNsQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDakMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIn0=
|
||||
1
packages/cad/dist/cad/index.d.ts
vendored
Normal file
1
packages/cad/dist/cad/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export { convert, pack } from './sw-lib.js';
|
||||
2
packages/cad/dist/cad/index.js
vendored
Normal file
2
packages/cad/dist/cad/index.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export { convert, pack } from './sw-lib.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFBIn0=
|
||||
6
packages/cad/dist/cad/sw-convert.d.ts
vendored
Normal file
6
packages/cad/dist/cad/sw-convert.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import { SolidworkOptions } from '../types.js';
|
||||
export declare const convertFile: (src: any, target: any, view: string, onNode: (data: any) => void, options: SolidworkOptions, configuration: string) => Promise<any>;
|
||||
export declare function convertFiles(file: any, targets: string[], view: any, onNode: (data: any) => void, options: SolidworkOptions): Promise<void | any[]>;
|
||||
export declare const report: (data: any, dst: string) => any;
|
||||
export declare const targets: (f: string, options: SolidworkOptions) => any[];
|
||||
export declare function convert(options: SolidworkOptions): Promise<(void | any[])[]>;
|
||||
365
packages/cad/dist/cad/sw-convert.js
vendored
Normal file
365
packages/cad/dist/cad/sw-convert.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
packages/cad/dist/cad/sw-lib.d.ts
vendored
Normal file
3
packages/cad/dist/cad/sw-lib.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './sw-convert.js';
|
||||
export * from './sw-util.js';
|
||||
export * from './sw-pack.js';
|
||||
4
packages/cad/dist/cad/sw-lib.js
vendored
Normal file
4
packages/cad/dist/cad/sw-lib.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export * from './sw-convert.js';
|
||||
export * from './sw-util.js';
|
||||
export * from './sw-pack.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ctbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhZC9zdy1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGNBQWMsQ0FBQSJ9
|
||||
3
packages/cad/dist/cad/sw-pack.d.ts
vendored
Normal file
3
packages/cad/dist/cad/sw-pack.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import { SolidworkOptions } from '../types.js';
|
||||
export declare function packFile(file: any, onNode: (data: any) => void, options: SolidworkOptions): Promise<any>;
|
||||
export declare function pack(options: SolidworkOptions): Promise<any[]>;
|
||||
53
packages/cad/dist/cad/sw-pack.js
vendored
Normal file
53
packages/cad/dist/cad/sw-pack.js
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
import * as path from 'path';
|
||||
import pMap from 'p-map';
|
||||
import { logger } from '../index.js';
|
||||
import { Helper } from '../lib/process/index.js';
|
||||
import { sync as exists } from "@polymech/fs/exists";
|
||||
import { getSWBin } from './sw-util.js';
|
||||
export async function packFile(file, onNode = () => { }, options) {
|
||||
if (options.dry) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
const target = options.dst;
|
||||
if (options.cache && exists(target)) {
|
||||
onNode({
|
||||
src: file,
|
||||
target
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
let exe = '' + options.script;
|
||||
let args = [
|
||||
`"${file}"`,
|
||||
`"${target}"`
|
||||
];
|
||||
const cwd = getSWBin(options.sw);
|
||||
const bin = path.resolve(`${cwd}/${exe}`);
|
||||
if (!exists(bin)) {
|
||||
logger.error(`${bin} doesnt exists in ${cwd}`);
|
||||
logger.error('__dirname:' + __dirname);
|
||||
logger.error('options.sw ' + options.sw);
|
||||
return;
|
||||
}
|
||||
options.debug && logger.debug(`Running ${cwd}/${exe} with`, args);
|
||||
const promise = Helper.run(cwd, exe, args, options.debug);
|
||||
promise.then((d) => {
|
||||
onNode({
|
||||
...d,
|
||||
src: file,
|
||||
target
|
||||
});
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
export async function pack(options) {
|
||||
let reports = [];
|
||||
const onNode = (data) => { reports.push(data); };
|
||||
options.verbose && logger.info(`Pack ${options.srcInfo.FILES.length} files `);
|
||||
const ret = await pMap(options.srcInfo.FILES, async (f) => {
|
||||
logger.debug(`Convert ${f} to `, options.dst);
|
||||
return packFile(f, onNode, options);
|
||||
}, { concurrency: 1 });
|
||||
return ret;
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ctcGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYWQvc3ctcGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXZDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUE4QixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBeUI7SUFDbkcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUMzQixJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDO1lBQ0gsR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzlCLElBQUksSUFBSSxHQUFHO1FBQ1AsSUFBSSxJQUFJLEdBQUc7UUFDWCxJQUFJLE1BQU0sR0FBRztLQUNoQixDQUFBO0lBR0QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcscUJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDOUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3hDLE9BQU07SUFDVixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNmLE1BQU0sQ0FBQztZQUNILEdBQUcsQ0FBQztZQUNKLEdBQUcsRUFBRSxJQUFJO1lBQ1QsTUFBTTtTQUNULENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxPQUFPLENBQUE7QUFDbEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLE9BQXlCO0lBQ2hELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNoQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQTtJQUMvQyxPQUFPLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQyxDQUFBO0lBQzdFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0RCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzdDLE9BQU8sUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdkMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdEIsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDIn0=
|
||||
180
packages/cad/dist/cad/sw-types.d.ts
vendored
Normal file
180
packages/cad/dist/cad/sw-types.d.ts
vendored
Normal file
@ -0,0 +1,180 @@
|
||||
export interface IComponent {
|
||||
Name: string;
|
||||
Path: string;
|
||||
IsSuppressed: boolean;
|
||||
}
|
||||
export interface IMass {
|
||||
Mass: number;
|
||||
Density: number;
|
||||
Volume: number;
|
||||
SurfaceArea: number;
|
||||
CenterOfMassX: number;
|
||||
CenterOfMassY: number;
|
||||
CenterOfMassZ: number;
|
||||
}
|
||||
export interface IBox {
|
||||
MinX: number;
|
||||
MinY: number;
|
||||
MinZ: number;
|
||||
MaxX: number;
|
||||
MaxY: number;
|
||||
MaxZ: number;
|
||||
}
|
||||
export interface IMaterial {
|
||||
Material: string;
|
||||
"Materials": string;
|
||||
}
|
||||
export interface IProperties {
|
||||
[key: string]: object;
|
||||
}
|
||||
export interface IAssembly {
|
||||
Components: IComponent[];
|
||||
}
|
||||
export interface ITreeNode {
|
||||
Name: string;
|
||||
Children: Node[];
|
||||
Path: string;
|
||||
Parent: string | null;
|
||||
Properties: IProperties;
|
||||
Equations: {
|
||||
[key: string]: number | string;
|
||||
};
|
||||
Mass: IMass;
|
||||
Box: IBox;
|
||||
Material: {
|
||||
[key: string]: string;
|
||||
};
|
||||
States: {
|
||||
[key: string]: object;
|
||||
};
|
||||
LaserParts: any;
|
||||
activeConfiguration: any;
|
||||
}
|
||||
export interface Configuration {
|
||||
"Total Bounding Box Length"?: string;
|
||||
"Total Bounding Box Width"?: string;
|
||||
"Total Bounding Box Thickness"?: string;
|
||||
"Total Bounding Box Volume"?: string;
|
||||
"Weight"?: string;
|
||||
"Cost - Total Cost"?: string;
|
||||
"IsLaser?": string;
|
||||
"Hide"?: string;
|
||||
"Catalog"?: string;
|
||||
"Configurations"?: string;
|
||||
}
|
||||
export interface Configurations {
|
||||
[key: string]: Configuration;
|
||||
}
|
||||
export interface IAssemblyData {
|
||||
assembly: IAssembly;
|
||||
root: ITreeNode;
|
||||
Configurations: Configurations;
|
||||
}
|
||||
export declare enum swRayTraceRenderImageFormat {
|
||||
swImageFormat_FlexiblePrecision = 0,
|
||||
swImageFormat_Targa = 1,
|
||||
swImageFormat_WindowsBmp = 2,
|
||||
swImageFormat_HDR = 3,
|
||||
swImageFormat_JPEG2000 = 4,
|
||||
swImageFormat_JPEG2000_16bit = 5,
|
||||
swImageFormat_JPEG2000_16bit_Lossless = 6,
|
||||
swImageFormat_JPEG = 7,
|
||||
swImageFormat_PNG = 8,
|
||||
swImageFormat_PNG_16bit = 9,
|
||||
swImageFormat_SGI_RGB = 10,
|
||||
swImageFormat_TIF = 11,
|
||||
swImageFormat_TIF_16bit = 12,
|
||||
swImageFormat_TIF_16bit_uncompr = 13,
|
||||
swImageFormat_OpenEXR = 14,
|
||||
swImageFormat_OpenEXR_32bit = 15,
|
||||
swImageFormat_OpenEXR_TILED16bit = 16,
|
||||
swImageFormat_OpenEXR_TILED32bit = 17
|
||||
}
|
||||
export declare enum swRayTraceRenderQuality_e {
|
||||
swRenderQuality_Good = 0,
|
||||
swRenderQuality_Better = 1,
|
||||
swRenderQuality_Best = 2,
|
||||
swRenderQuality_Maximum = 3
|
||||
}
|
||||
export declare enum ImageAspectRatio {
|
||||
AspectRatio_1_1 = "1:1",
|
||||
AspectRatio_4_3 = "4:3",
|
||||
AspectRatio_16_9 = "16:9",
|
||||
AspectRatio_21_9 = "21:9",
|
||||
AspectRatio_2_3 = "2:3",
|
||||
AspectRatio_3_2 = "3:2",
|
||||
AspectRatio_5_4 = "5:4",
|
||||
AspectRatio_3_4 = "3:4",
|
||||
AspectRatio_9_16 = "9:16",
|
||||
AspectRatio_10_16 = "10:16",
|
||||
AspectRatio_16_10 = "16:10",
|
||||
AspectRatio_16_15 = "16:15",
|
||||
AspectRatio_18_9 = "18:9",
|
||||
AspectRatio_32_9 = "32:9",
|
||||
AspectRatio_48_9 = "48:9"
|
||||
}
|
||||
export declare enum ImageResolution {
|
||||
Resolution_640x480 = "640x480",
|
||||
Resolution_800x600 = "800x600",
|
||||
Resolution_1024x768 = "1024x768",
|
||||
Resolution_1280x720 = "1280x720",
|
||||
Resolution_1280x800 = "1280x800",
|
||||
Resolution_1280x1024 = "1280x1024",
|
||||
Resolution_1366x768 = "1366x768",
|
||||
Resolution_1440x900 = "1440x900",
|
||||
Resolution_1600x900 = "1600x900",
|
||||
Resolution_1680x1050 = "1680x1050",
|
||||
Resolution_1920x1080 = "1920x1080",
|
||||
Resolution_1920x1200 = "1920x1200",
|
||||
Resolution_2560x1440 = "2560x1440",
|
||||
Resolution_2560x1600 = "2560x1600",
|
||||
Resolution_3840x2160 = "3840x2160",
|
||||
Resolution_4096x2160 = "4096x2160",
|
||||
Resolution_5120x2880 = "5120x2880",
|
||||
Resolution_7680x4320 = "7680x4320"
|
||||
}
|
||||
export interface IRayTraceRendererOptions {
|
||||
imageWidth: number;
|
||||
imageHeight: number;
|
||||
imageFormat: number;
|
||||
previewRenderQuality: number;
|
||||
finalRenderQuality: number;
|
||||
bloomEnabled: boolean;
|
||||
bloomThreshold: number;
|
||||
bloomRadius: number;
|
||||
contourEnabled: boolean;
|
||||
shadedContour: boolean;
|
||||
contourLineThickness: number;
|
||||
contourLineColor: number;
|
||||
useSolidWorksViewAspectRatio: boolean;
|
||||
defaultImagePath: string;
|
||||
useSceneBackgroundImageAspectRatio: boolean;
|
||||
outputAmbientOcclusion: boolean;
|
||||
directCaustics: boolean;
|
||||
causticQuality: number;
|
||||
gamma: number;
|
||||
numberOfReflections: number;
|
||||
numberOfRefractions: number;
|
||||
networkRendering: boolean;
|
||||
clientWorkload: number;
|
||||
sendDataForNetworkJob: boolean;
|
||||
networkSharedDirectory: string;
|
||||
causticAmount: number;
|
||||
customRenderSettings: boolean;
|
||||
contourCartoonRenderingEnabled: boolean;
|
||||
hasCartoonEdges: boolean;
|
||||
hasCartoonShading: boolean;
|
||||
includeAnnotationsInRendering: boolean;
|
||||
renderType: number;
|
||||
renderAnnotationsToSeparateImage: boolean;
|
||||
alphaOutput: boolean;
|
||||
offloadedRendering: boolean;
|
||||
}
|
||||
export declare enum EDocumentState {
|
||||
Default = 0,
|
||||
Hidden = 1,
|
||||
ReadOnly = 2,
|
||||
ViewOnly = 4,
|
||||
Silent = 8,
|
||||
Rapid = 16
|
||||
}
|
||||
139
packages/cad/dist/cad/sw-types.js
vendored
Normal file
139
packages/cad/dist/cad/sw-types.js
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
export var swRayTraceRenderImageFormat;
|
||||
(function (swRayTraceRenderImageFormat) {
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_FlexiblePrecision"] = 0] = "swImageFormat_FlexiblePrecision";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_Targa"] = 1] = "swImageFormat_Targa";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_WindowsBmp"] = 2] = "swImageFormat_WindowsBmp";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_HDR"] = 3] = "swImageFormat_HDR";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_JPEG2000"] = 4] = "swImageFormat_JPEG2000";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_JPEG2000_16bit"] = 5] = "swImageFormat_JPEG2000_16bit";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_JPEG2000_16bit_Lossless"] = 6] = "swImageFormat_JPEG2000_16bit_Lossless";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_JPEG"] = 7] = "swImageFormat_JPEG";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_PNG"] = 8] = "swImageFormat_PNG";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_PNG_16bit"] = 9] = "swImageFormat_PNG_16bit";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_SGI_RGB"] = 10] = "swImageFormat_SGI_RGB";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_TIF"] = 11] = "swImageFormat_TIF";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_TIF_16bit"] = 12] = "swImageFormat_TIF_16bit";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_TIF_16bit_uncompr"] = 13] = "swImageFormat_TIF_16bit_uncompr";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_OpenEXR"] = 14] = "swImageFormat_OpenEXR";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_OpenEXR_32bit"] = 15] = "swImageFormat_OpenEXR_32bit";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_OpenEXR_TILED16bit"] = 16] = "swImageFormat_OpenEXR_TILED16bit";
|
||||
swRayTraceRenderImageFormat[swRayTraceRenderImageFormat["swImageFormat_OpenEXR_TILED32bit"] = 17] = "swImageFormat_OpenEXR_TILED32bit";
|
||||
})(swRayTraceRenderImageFormat || (swRayTraceRenderImageFormat = {}));
|
||||
export var swRayTraceRenderQuality_e;
|
||||
(function (swRayTraceRenderQuality_e) {
|
||||
swRayTraceRenderQuality_e[swRayTraceRenderQuality_e["swRenderQuality_Good"] = 0] = "swRenderQuality_Good";
|
||||
swRayTraceRenderQuality_e[swRayTraceRenderQuality_e["swRenderQuality_Better"] = 1] = "swRenderQuality_Better";
|
||||
swRayTraceRenderQuality_e[swRayTraceRenderQuality_e["swRenderQuality_Best"] = 2] = "swRenderQuality_Best";
|
||||
swRayTraceRenderQuality_e[swRayTraceRenderQuality_e["swRenderQuality_Maximum"] = 3] = "swRenderQuality_Maximum";
|
||||
})(swRayTraceRenderQuality_e || (swRayTraceRenderQuality_e = {}));
|
||||
export var ImageAspectRatio;
|
||||
(function (ImageAspectRatio) {
|
||||
ImageAspectRatio["AspectRatio_1_1"] = "1:1";
|
||||
ImageAspectRatio["AspectRatio_4_3"] = "4:3";
|
||||
ImageAspectRatio["AspectRatio_16_9"] = "16:9";
|
||||
ImageAspectRatio["AspectRatio_21_9"] = "21:9";
|
||||
ImageAspectRatio["AspectRatio_2_3"] = "2:3";
|
||||
ImageAspectRatio["AspectRatio_3_2"] = "3:2";
|
||||
ImageAspectRatio["AspectRatio_5_4"] = "5:4";
|
||||
ImageAspectRatio["AspectRatio_3_4"] = "3:4";
|
||||
ImageAspectRatio["AspectRatio_9_16"] = "9:16";
|
||||
ImageAspectRatio["AspectRatio_10_16"] = "10:16";
|
||||
ImageAspectRatio["AspectRatio_16_10"] = "16:10";
|
||||
ImageAspectRatio["AspectRatio_16_15"] = "16:15";
|
||||
ImageAspectRatio["AspectRatio_18_9"] = "18:9";
|
||||
ImageAspectRatio["AspectRatio_32_9"] = "32:9";
|
||||
ImageAspectRatio["AspectRatio_48_9"] = "48:9";
|
||||
})(ImageAspectRatio || (ImageAspectRatio = {}));
|
||||
export var ImageResolution;
|
||||
(function (ImageResolution) {
|
||||
ImageResolution["Resolution_640x480"] = "640x480";
|
||||
ImageResolution["Resolution_800x600"] = "800x600";
|
||||
ImageResolution["Resolution_1024x768"] = "1024x768";
|
||||
ImageResolution["Resolution_1280x720"] = "1280x720";
|
||||
ImageResolution["Resolution_1280x800"] = "1280x800";
|
||||
ImageResolution["Resolution_1280x1024"] = "1280x1024";
|
||||
ImageResolution["Resolution_1366x768"] = "1366x768";
|
||||
ImageResolution["Resolution_1440x900"] = "1440x900";
|
||||
ImageResolution["Resolution_1600x900"] = "1600x900";
|
||||
ImageResolution["Resolution_1680x1050"] = "1680x1050";
|
||||
ImageResolution["Resolution_1920x1080"] = "1920x1080";
|
||||
ImageResolution["Resolution_1920x1200"] = "1920x1200";
|
||||
ImageResolution["Resolution_2560x1440"] = "2560x1440";
|
||||
ImageResolution["Resolution_2560x1600"] = "2560x1600";
|
||||
ImageResolution["Resolution_3840x2160"] = "3840x2160";
|
||||
ImageResolution["Resolution_4096x2160"] = "4096x2160";
|
||||
ImageResolution["Resolution_5120x2880"] = "5120x2880";
|
||||
ImageResolution["Resolution_7680x4320"] = "7680x4320";
|
||||
})(ImageResolution || (ImageResolution = {}));
|
||||
function createRendererOptions(options) {
|
||||
const defaults = {
|
||||
imageWidth: 800,
|
||||
imageHeight: 600,
|
||||
imageFormat: 0,
|
||||
previewRenderQuality: 50,
|
||||
finalRenderQuality: 100,
|
||||
bloomEnabled: true,
|
||||
bloomThreshold: 0.5,
|
||||
bloomRadius: 10,
|
||||
contourEnabled: false,
|
||||
shadedContour: false,
|
||||
contourLineThickness: 1,
|
||||
contourLineColor: 0,
|
||||
useSolidWorksViewAspectRatio: false,
|
||||
defaultImagePath: '',
|
||||
useSceneBackgroundImageAspectRatio: false,
|
||||
outputAmbientOcclusion: false,
|
||||
directCaustics: false,
|
||||
causticQuality: 50,
|
||||
gamma: 2.2,
|
||||
numberOfReflections: 2,
|
||||
numberOfRefractions: 2,
|
||||
networkRendering: false,
|
||||
clientWorkload: 0,
|
||||
sendDataForNetworkJob: false,
|
||||
networkSharedDirectory: '',
|
||||
causticAmount: 0.5,
|
||||
customRenderSettings: false,
|
||||
contourCartoonRenderingEnabled: false,
|
||||
hasCartoonEdges: false,
|
||||
hasCartoonShading: false,
|
||||
includeAnnotationsInRendering: false,
|
||||
renderType: 0,
|
||||
renderAnnotationsToSeparateImage: false,
|
||||
alphaOutput: false,
|
||||
offloadedRendering: false,
|
||||
};
|
||||
return { ...defaults, ...options };
|
||||
}
|
||||
export var EDocumentState;
|
||||
(function (EDocumentState) {
|
||||
//
|
||||
// Summary:
|
||||
// Default state of the document
|
||||
EDocumentState[EDocumentState["Default"] = 0] = "Default";
|
||||
//
|
||||
// Summary:
|
||||
// Checks if document is hidden
|
||||
EDocumentState[EDocumentState["Hidden"] = 1] = "Hidden";
|
||||
//
|
||||
// Summary:
|
||||
// Opens document in read-only mode
|
||||
EDocumentState[EDocumentState["ReadOnly"] = 2] = "ReadOnly";
|
||||
//
|
||||
// Summary:
|
||||
// Opens document in view only mode
|
||||
EDocumentState[EDocumentState["ViewOnly"] = 4] = "ViewOnly";
|
||||
//
|
||||
// Summary:
|
||||
// Opens document without displaying any popup messages
|
||||
EDocumentState[EDocumentState["Silent"] = 8] = "Silent";
|
||||
//
|
||||
// Summary:
|
||||
// Opens document in the rapid mode
|
||||
//
|
||||
// Remarks:
|
||||
// This mode significantly improves the performance of opening but certain functionality
|
||||
// and API migth not be available
|
||||
EDocumentState[EDocumentState["Rapid"] = 16] = "Rapid";
|
||||
})(EDocumentState || (EDocumentState = {}));
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ctdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FkL3N3LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRFQSxNQUFNLENBQU4sSUFBWSwyQkFtQlg7QUFuQkQsV0FBWSwyQkFBMkI7SUFDbkMsbUlBQStCLENBQUE7SUFDL0IsMkdBQW1CLENBQUE7SUFDbkIscUhBQXdCLENBQUE7SUFDeEIsdUdBQWlCLENBQUE7SUFDakIsaUhBQXNCLENBQUE7SUFDdEIsNkhBQTRCLENBQUE7SUFDNUIsK0lBQXFDLENBQUE7SUFDckMseUdBQWtCLENBQUE7SUFDbEIsdUdBQWlCLENBQUE7SUFDakIsbUhBQXVCLENBQUE7SUFDdkIsZ0hBQXFCLENBQUE7SUFDckIsd0dBQWlCLENBQUE7SUFDakIsb0hBQXVCLENBQUE7SUFDdkIsb0lBQStCLENBQUE7SUFDL0IsZ0hBQXFCLENBQUE7SUFDckIsNEhBQTJCLENBQUE7SUFDM0Isc0lBQWdDLENBQUE7SUFDaEMsc0lBQWdDLENBQUE7QUFDcEMsQ0FBQyxFQW5CVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBbUJ0QztBQUVELE1BQU0sQ0FBTixJQUFZLHlCQUtYO0FBTEQsV0FBWSx5QkFBeUI7SUFDakMseUdBQW9CLENBQUE7SUFDcEIsNkdBQXNCLENBQUE7SUFDdEIseUdBQW9CLENBQUE7SUFDcEIsK0dBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFLcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFnQlg7QUFoQkQsV0FBWSxnQkFBZ0I7SUFDeEIsMkNBQXVCLENBQUE7SUFDdkIsMkNBQXVCLENBQUE7SUFDdkIsNkNBQXlCLENBQUE7SUFDekIsNkNBQXlCLENBQUE7SUFDekIsMkNBQXVCLENBQUE7SUFDdkIsMkNBQXVCLENBQUE7SUFDdkIsMkNBQXVCLENBQUE7SUFDdkIsMkNBQXVCLENBQUE7SUFDdkIsNkNBQXlCLENBQUE7SUFDekIsK0NBQTJCLENBQUE7SUFDM0IsK0NBQTJCLENBQUE7SUFDM0IsK0NBQTJCLENBQUE7SUFDM0IsNkNBQXlCLENBQUE7SUFDekIsNkNBQXlCLENBQUE7SUFDekIsNkNBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQWhCVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBZ0IzQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBbUJYO0FBbkJELFdBQVksZUFBZTtJQUN2QixpREFBOEIsQ0FBQTtJQUM5QixpREFBOEIsQ0FBQTtJQUM5QixtREFBZ0MsQ0FBQTtJQUNoQyxtREFBZ0MsQ0FBQTtJQUNoQyxtREFBZ0MsQ0FBQTtJQUNoQyxxREFBa0MsQ0FBQTtJQUNsQyxtREFBZ0MsQ0FBQTtJQUNoQyxtREFBZ0MsQ0FBQTtJQUNoQyxtREFBZ0MsQ0FBQTtJQUNoQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtJQUNsQyxxREFBa0MsQ0FBQTtBQUN0QyxDQUFDLEVBbkJXLGVBQWUsS0FBZixlQUFlLFFBbUIxQjtBQXVDRCxTQUFTLHFCQUFxQixDQUFDLE9BQTJDO0lBQ3RFLE1BQU0sUUFBUSxHQUE2QjtRQUN2QyxVQUFVLEVBQUUsR0FBRztRQUNmLFdBQVcsRUFBRSxHQUFHO1FBQ2hCLFdBQVcsRUFBRSxDQUFDO1FBQ2Qsb0JBQW9CLEVBQUUsRUFBRTtRQUN4QixrQkFBa0IsRUFBRSxHQUFHO1FBQ3ZCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLGNBQWMsRUFBRSxHQUFHO1FBQ25CLFdBQVcsRUFBRSxFQUFFO1FBQ2YsY0FBYyxFQUFFLEtBQUs7UUFDckIsYUFBYSxFQUFFLEtBQUs7UUFDcEIsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QixnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLDRCQUE0QixFQUFFLEtBQUs7UUFDbkMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixrQ0FBa0MsRUFBRSxLQUFLO1FBQ3pDLHNCQUFzQixFQUFFLEtBQUs7UUFDN0IsY0FBYyxFQUFFLEtBQUs7UUFDckIsY0FBYyxFQUFFLEVBQUU7UUFDbEIsS0FBSyxFQUFFLEdBQUc7UUFDVixtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixjQUFjLEVBQUUsQ0FBQztRQUNqQixxQkFBcUIsRUFBRSxLQUFLO1FBQzVCLHNCQUFzQixFQUFFLEVBQUU7UUFDMUIsYUFBYSxFQUFFLEdBQUc7UUFDbEIsb0JBQW9CLEVBQUUsS0FBSztRQUMzQiw4QkFBOEIsRUFBRSxLQUFLO1FBQ3JDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsNkJBQTZCLEVBQUUsS0FBSztRQUNwQyxVQUFVLEVBQUUsQ0FBQztRQUNiLGdDQUFnQyxFQUFFLEtBQUs7UUFDdkMsV0FBVyxFQUFFLEtBQUs7UUFDbEIsa0JBQWtCLEVBQUUsS0FBSztLQUM1QixDQUFDO0lBRUYsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sQ0FBTixJQUFZLGNBNkJYO0FBN0JELFdBQVksY0FBYztJQUN0QixFQUFFO0lBQ0YsV0FBVztJQUNYLG9DQUFvQztJQUNwQyx5REFBVyxDQUFBO0lBQ1gsRUFBRTtJQUNGLFdBQVc7SUFDWCxtQ0FBbUM7SUFDbkMsdURBQVUsQ0FBQTtJQUNWLEVBQUU7SUFDRixXQUFXO0lBQ1gsdUNBQXVDO0lBQ3ZDLDJEQUFZLENBQUE7SUFDWixFQUFFO0lBQ0YsV0FBVztJQUNYLHVDQUF1QztJQUN2QywyREFBWSxDQUFBO0lBQ1osRUFBRTtJQUNGLFdBQVc7SUFDWCwyREFBMkQ7SUFDM0QsdURBQVUsQ0FBQTtJQUNWLEVBQUU7SUFDRixXQUFXO0lBQ1gsdUNBQXVDO0lBQ3ZDLEVBQUU7SUFDRixXQUFXO0lBQ1gsNEZBQTRGO0lBQzVGLHFDQUFxQztJQUNyQyxzREFBWSxDQUFBO0FBQ2hCLENBQUMsRUE3QlcsY0FBYyxLQUFkLGNBQWMsUUE2QnpCIn0=
|
||||
9
packages/cad/dist/cad/sw-util.d.ts
vendored
Normal file
9
packages/cad/dist/cad/sw-util.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
export declare const swProcMessage: (log: string) => {
|
||||
logLevel: string;
|
||||
message: string;
|
||||
} | null;
|
||||
export declare const fileAsBuffer: (path: string) => Buffer<ArrayBufferLike>;
|
||||
export declare const getSWBin: (argv: string) => string;
|
||||
export declare function closeAppByName(appName: string): void;
|
||||
export declare function removeEmptyValues(obj: any): any;
|
||||
export declare const equalFiles: (pathA: any, pathB: any) => boolean;
|
||||
84
packages/cad/dist/cad/sw-util.js
vendored
Normal file
84
packages/cad/dist/cad/sw-util.js
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import { execSync } from 'child_process';
|
||||
import { sync as exists } from "@polymech/fs/exists";
|
||||
import { sync as read } from "@polymech/fs/read";
|
||||
import { BUF_SIZE_CMP } from '../constants.js';
|
||||
export const swProcMessage = (log) => {
|
||||
const regex = /<<(\w+)::(.*?)>>/;
|
||||
const match = log.match(regex);
|
||||
if (match) {
|
||||
return {
|
||||
logLevel: match[1],
|
||||
message: match[2]
|
||||
};
|
||||
}
|
||||
};
|
||||
export const fileAsBuffer = (path) => read(path, 'buffer') || Buffer.from("-");
|
||||
export const getSWBin = (argv) => {
|
||||
const swVersion = parseInt(argv);
|
||||
if (swVersion) {
|
||||
return path.resolve(__dirname + `/../sw/${swVersion}`);
|
||||
}
|
||||
else {
|
||||
return path.resolve(argv);
|
||||
}
|
||||
};
|
||||
export function closeAppByName(appName) {
|
||||
try {
|
||||
const command = `tasklist /FI "IMAGENAME eq ${appName}.exe" /NH`;
|
||||
const output = execSync(command).toString();
|
||||
const lines = output.split('\n');
|
||||
const processIdLine = lines.find(line => line.includes(appName));
|
||||
if (!processIdLine) {
|
||||
return;
|
||||
}
|
||||
const processId = parseInt(processIdLine.split(/\s+/)[1], 10);
|
||||
execSync(`taskkill /F /PID ${processId}`);
|
||||
}
|
||||
catch (error) { }
|
||||
}
|
||||
export function removeEmptyValues(obj) {
|
||||
for (const key in obj) {
|
||||
const value = obj[key];
|
||||
if (!value || typeof value !== 'number' ||
|
||||
typeof value !== 'boolean' ||
|
||||
typeof value !== 'string') {
|
||||
delete obj[key];
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
export const equalFiles = (pathA, pathB) => {
|
||||
if (!exists(pathA) || !exists(pathB)) {
|
||||
return false;
|
||||
}
|
||||
let statA = fs.lstatSync(pathA);
|
||||
let statB = fs.lstatSync(pathB);
|
||||
if (statA.size !== statB.size) {
|
||||
return false;
|
||||
}
|
||||
;
|
||||
let fdA = fs.openSync(pathA, 'r');
|
||||
let fdB = fs.openSync(pathB, 'r');
|
||||
let bufA = Buffer.alloc(BUF_SIZE_CMP);
|
||||
let bufB = Buffer.alloc(BUF_SIZE_CMP);
|
||||
let readA = 1;
|
||||
let readB = 1;
|
||||
while (readA > 0) {
|
||||
readA = fs.readSync(fdA, bufA, 0, bufA.length, null);
|
||||
readB = fs.readSync(fdB, bufB, 0, bufB.length, null);
|
||||
if (readA !== readB) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < readA; i++) {
|
||||
if (bufA[i] !== bufB[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
fs.closeSync(fdA);
|
||||
fs.closeSync(fdB);
|
||||
return true;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ctdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYWQvc3ctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBVyxFQUErQyxFQUFFO0lBQ3RGLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFBO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU87WUFDSCxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNwQixDQUFBO0lBQ0wsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxJQUFJLFNBQVMsRUFBRSxD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
|
||||
1
packages/cad/dist/commands/index.d.ts
vendored
Normal file
1
packages/cad/dist/commands/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export {};
|
||||
2
packages/cad/dist/commands/index.js
vendored
Normal file
2
packages/cad/dist/commands/index.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
||||
2
packages/cad/dist/commands/info.d.ts
vendored
Normal file
2
packages/cad/dist/commands/info.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
24
packages/cad/dist/commands/info.js
vendored
Normal file
24
packages/cad/dist/commands/info.js
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
import { CONFIG_DEFAULT, DEFAULT_ROOTS } from '@polymech/commons';
|
||||
import { logger } from '../index.js';
|
||||
const defaultOptions = (yargs) => {
|
||||
return yargs.option('debug', {
|
||||
default: 'false',
|
||||
describe: 'debug messages'
|
||||
}).option('env_key', {
|
||||
default: 'OSR-CONFIG',
|
||||
describe: 'Environment key to the config path'
|
||||
});
|
||||
};
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('info', 'info', options, async (argv) => {
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const args = argv;
|
||||
const src = CONFIG_DEFAULT(args.env_key);
|
||||
logger.debug(`Reading OSR Config with key "${argv.env_key}"`, src);
|
||||
logger.debug(`OSR Paths:`, DEFAULT_ROOTS);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLE9BQU87UUFDaEIsUUFBUSxFQUFFLGdCQUFnQjtLQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUsb0NBQW9DO0tBQ2pELENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQUVELElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFFLEVBQUU7UUFDdEUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFNO1FBQUMsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBUSxJQUFJLENBQUE7UUFDdEIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDbEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDN0MsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==
|
||||
3
packages/cad/dist/commands/pack.d.ts
vendored
Normal file
3
packages/cad/dist/commands/pack.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const defaultOptions: (yargs: CLI.Argv) => any;
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
54
packages/cad/dist/commands/pack.js
vendored
Normal file
54
packages/cad/dist/commands/pack.js
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
import { logger } from '../index.js';
|
||||
import { sanitizeSingle } from '../sw_argv.js';
|
||||
import { pack } from '../cad/index.js';
|
||||
export const defaultOptions = (yargs) => {
|
||||
return yargs.option('src', {
|
||||
default: './',
|
||||
describe: 'The source directory or source file. Glob patters are supported!',
|
||||
demandOption: true
|
||||
}).option('dst', {
|
||||
describe: 'Destination folder or file'
|
||||
}).option('view', {
|
||||
default: 'Isometric',
|
||||
describe: 'Sets the target view'
|
||||
}).option('Report', {
|
||||
describe: 'Optional conversion report. Can be JSON, HTML, CSV or Markdown'
|
||||
}).option('debug', {
|
||||
default: false,
|
||||
describe: 'Enable internal debug messages',
|
||||
type: 'boolean'
|
||||
}).option('skip', {
|
||||
default: true,
|
||||
describe: 'Skip existing files',
|
||||
type: 'boolean',
|
||||
}).option('dry', {
|
||||
default: false,
|
||||
describe: 'Run without conversion but create reports',
|
||||
type: 'boolean'
|
||||
}).option('alt', {
|
||||
default: false,
|
||||
describe: 'Alternate tokenizer'
|
||||
}).option('verbose', {
|
||||
default: true,
|
||||
describe: 'Show internal messages',
|
||||
type: 'boolean'
|
||||
}).option('sw', {
|
||||
describe: 'Set explicit the path to the Solidworks binaries & scripts.\
|
||||
"It assumes SolidWorks.Interop.sldworks.dll and export.cmd at this location!'
|
||||
}).option('script', {
|
||||
describe: 'Set explicit the path to the Solidworks script'
|
||||
});
|
||||
};
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('pack', '', options, async (argv) => {
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const options = sanitizeSingle(argv);
|
||||
logger.setSettings({ minLevel: options.logLevel });
|
||||
logger.debug("options " + argv.dst, options);
|
||||
return pack(options);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9wYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFdEMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUU7SUFDOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUN2QixPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxrRUFBa0U7UUFDNUUsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsNEJBQTRCO0tBQ3pDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsT0FBTyxFQUFFLFdBQVc7UUFDcEIsUUFBUSxFQUFFLHNCQUFzQjtLQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNoQixRQUFRLEVBQUUsZ0VBQWdFO0tBQzdFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsT0FBTyxFQUFFLElBQUk7UUFDYixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsMkNBQTJDO1FBQ3JELElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUscUJBQXFCO0tBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNaLFFBQVEsRUFBRTtxRkFDbUU7S0FDaEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDaEIsUUFBUSxFQUFFLGdEQUFnRDtLQUM3RCxDQUFDLENBQUE7QUFDTixDQUFDLENBQUE7QUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWEsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQ2xFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsT0FBTTtRQUFDLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBcUIsQ0FBQTtRQUN4RCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFlLEVBQUMsQ0FBQyxDQUFBO1FBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFRLENBQUE7SUFDL0IsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==
|
||||
2
packages/cad/dist/commands/slice.d.ts
vendored
Normal file
2
packages/cad/dist/commands/slice.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
52
packages/cad/dist/commands/slice.js
vendored
Normal file
52
packages/cad/dist/commands/slice.js
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
import * as path from 'path';
|
||||
import { logger } from '../index.js';
|
||||
import { defaultOptions, sanitize } from '../slic3r_argv.js';
|
||||
import { convert } from '../print/index.js';
|
||||
import { load } from 'js-yaml';
|
||||
import { deepClone as clone } from "@polymech/core/objects";
|
||||
import { sync as read } from "@polymech/fs/read";
|
||||
const SLIC3R_DEFAULTS = () => path.resolve(path.join(__dirname, '../profiles/slic3r_defaults.yaml'));
|
||||
const defaults = (defaults, options) => {
|
||||
let key, returnObject;
|
||||
returnObject = clone(options) || {};
|
||||
for (key in defaults)
|
||||
if (defaults.hasOwnProperty(key) &&
|
||||
typeof returnObject[key] === 'undefined')
|
||||
returnObject[key] = defaults[key];
|
||||
return returnObject;
|
||||
};
|
||||
export const register = (cli) => {
|
||||
const defaults_path = SLIC3R_DEFAULTS();
|
||||
cli.parserConfiguration({
|
||||
"short-option-groups": true,
|
||||
"camel-case-expansion": false
|
||||
});
|
||||
const defaultsRaw = read(defaults_path);
|
||||
let defaults_json = load(defaultsRaw);
|
||||
let options = (yargs) => {
|
||||
let opts = defaultOptions(yargs);
|
||||
Object.keys(defaults_json.properties).forEach((k) => {
|
||||
const val = defaults_json.properties[k];
|
||||
switch (defaults_json.properties[k].type) {
|
||||
case 'object':
|
||||
case 'boolean':
|
||||
case 'number':
|
||||
case 'string': {
|
||||
opts = opts.option(k, val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
return opts;
|
||||
};
|
||||
return cli.command('slice', 'Run Slic3r', options, async (argv) => {
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
let options = sanitize(argv);
|
||||
options = defaults(defaults_json, options);
|
||||
options.debug && logger.info("options " + argv.dst, options);
|
||||
return convert(options);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2xpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDM0QsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRCxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGtDQUFrQyxDQUFDLENBQUMsQ0FBQTtBQUVwRyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUVuQyxJQUFJLEdBQUcsRUFDSCxZQUFZLENBQUE7SUFFaEIsWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFbkMsS0FBSyxHQUFHLElBQUksUUFBUTtRQUNoQixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQzVCLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVc7WUFDeEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUV6QyxPQUFPLFlBQVksQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUV0QyxNQUFNLGFBQWEsR0FBRyxlQUFlLEVBQUUsQ0FBQTtJQUV2QyxHQUFHLENBQUMsbUJBQW1CLENBQUM7UUFDcEIscUJBQXFCLEVBQUUsSUFBSTtRQUMzQixzQkFBc0IsRUFBRSxLQUFLO0tBQ2hDLENBQUMsQ0FBQTtJQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQVcsQ0FBQTtJQUNqRCxJQUFJLGFBQWEsR0FBUSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDMUMsSUFBSSxPQUFPLEdBQVEsQ0FBQyxLQUFlLEVBQUUsRUFBRTtRQUNuQyxJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2QyxRQUFRLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssUUFBUSxDQUFDO2dCQUNkLEtBQUssU0FBUyxDQUFDO2dCQUNmLEtBQUssUUFBUSxDQUFDO2dCQUNkLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDWixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7b0JBQzFCLE1BQU07Z0JBQ1YsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0lBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFFLEVBQUU7UUFDN0UsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFNO1FBQUMsQ0FBQztRQUV6QixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFrQixDQUFBO1FBRTdDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRTFDLE9BQU8sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUU1RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9
|
||||
2
packages/cad/dist/commands/sw-pack.d.ts
vendored
Normal file
2
packages/cad/dist/commands/sw-pack.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
15
packages/cad/dist/commands/sw-pack.js
vendored
Normal file
15
packages/cad/dist/commands/sw-pack.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
import { logger } from '../index.js';
|
||||
import { defaultOptions, sanitize } from '../sw_argv.js';
|
||||
import { convert } from '../cad/index.js';
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('sw-pack', 'Pack and Go - Using the Zip option to preserve folder structure', options, async (argv) => {
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const options = sanitize(argv);
|
||||
options.debug && logger.info("options " + argv.dst, options);
|
||||
return convert(options);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ctcGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zdy1wYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXpDLElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7QUFFeEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFFdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxpRUFBaUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUNwSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLE9BQU07UUFBQyxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQXFCLENBQUE7UUFFbEQsT0FBTyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBIn0=
|
||||
2
packages/cad/dist/commands/sw.d.ts
vendored
Normal file
2
packages/cad/dist/commands/sw.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
16
packages/cad/dist/commands/sw.js
vendored
Normal file
16
packages/cad/dist/commands/sw.js
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
import { logger } from '../index.js';
|
||||
import { defaultOptions, sanitize } from '../sw_argv.js';
|
||||
import { convert } from '../cad/sw-convert.js';
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('sw', 'Convert CAD files via Solidworks Interop API', options, async (argv) => {
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const options = sanitize(argv);
|
||||
logger.setSettings({ minLevel: options.logLevel });
|
||||
logger.info("options " + argv.dst, options);
|
||||
return convert(options);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFOUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUV4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQzVHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsT0FBTTtRQUFDLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBcUIsQ0FBQTtRQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFlLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFRLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==
|
||||
7
packages/cad/dist/constants.d.ts
vendored
Normal file
7
packages/cad/dist/constants.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
export declare const GIT_CHANGELOG_MESSAGE_PREFIX = "ChangeLog:";
|
||||
export declare const GIT_REPO = "https://git.polymech.io/osr-plastic/";
|
||||
export declare const MODULE_NAME = "POLYMECH-CAD";
|
||||
export declare const PACKAGE_NAME = "polymech-cad";
|
||||
export declare const DEFAULT_REPORT = "${SRC_DIR}/cad-report-${CONFIGURATION}.json";
|
||||
export declare const BUF_SIZE_CMP: number;
|
||||
export declare const MSG_FAILED_TO_LOAD = "Failed to load";
|
||||
8
packages/cad/dist/constants.js
vendored
Normal file
8
packages/cad/dist/constants.js
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
export const GIT_CHANGELOG_MESSAGE_PREFIX = 'ChangeLog:';
|
||||
export const GIT_REPO = 'https://git.polymech.io/osr-plastic/';
|
||||
export const MODULE_NAME = `POLYMECH-CAD`;
|
||||
export const PACKAGE_NAME = 'polymech-cad';
|
||||
export const DEFAULT_REPORT = '${SRC_DIR}/cad-report-${CONFIGURATION}.json';
|
||||
export const BUF_SIZE_CMP = 16 * 1024;
|
||||
export const MSG_FAILED_TO_LOAD = 'Failed to load';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxZQUFZLENBQUE7QUFDeEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHNDQUFzQyxDQUFBO0FBQzlELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUE7QUFDekMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQTtBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUksNkNBQTZDLENBQUE7QUFDNUUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFDckMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUEifQ==
|
||||
11
packages/cad/dist/index.d.ts
vendored
Normal file
11
packages/cad/dist/index.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
export * from './types.js';
|
||||
export * from './cad/sw-lib.js';
|
||||
export * from './_cli.js';
|
||||
export * from './sw_argv.js';
|
||||
export * from './lib/geometry/dxf.js';
|
||||
import { Logger } from "tslog";
|
||||
export declare function createLogger(name: string, options?: any): Logger;
|
||||
export declare const defaultLogger: Logger;
|
||||
export { MODULE_NAME } from './constants.js';
|
||||
export declare const logger: Logger;
|
||||
export declare const substitute: (_path: string, alt?: boolean, vars?: Record<string, string>) => any;
|
||||
22
packages/cad/dist/index.js
vendored
Normal file
22
packages/cad/dist/index.js
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import { resolve } from "@polymech/commons/variables";
|
||||
export * from './types.js';
|
||||
export * from './cad/sw-lib.js';
|
||||
export * from './_cli.js';
|
||||
export * from './sw_argv.js';
|
||||
export * from './lib/geometry/dxf.js';
|
||||
import { Logger } from "tslog";
|
||||
export function createLogger(name, options) {
|
||||
return new Logger({
|
||||
name,
|
||||
type: 'pretty',
|
||||
...options,
|
||||
});
|
||||
}
|
||||
export const defaultLogger = createLogger('DefaultLogger', {
|
||||
minLevel: 1
|
||||
});
|
||||
import { MODULE_NAME } from './constants.js';
|
||||
export { MODULE_NAME } from './constants.js';
|
||||
export const logger = createLogger(MODULE_NAME, {});
|
||||
export const substitute = resolve;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRyxNQUFNLDZCQUE2QixDQUFBO0FBRXRELGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyx1QkFBdUIsQ0FBQTtBQUVyQyxPQUFPLEVBQUcsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRS9CLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWSxFQUFFLE9BQWE7SUFDcEQsT0FBTyxJQUFJLE1BQU0sQ0FBQztRQUNkLElBQUk7UUFDSixJQUFJLEVBQUUsUUFBUTtRQUNkLEdBQUcsT0FBTztLQUNiLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFDRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLGVBQWUsRUFBRTtJQUN2RCxRQUFRLEVBQUUsQ0FBQztDQUNkLENBQUMsQ0FBQTtBQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFbkQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQSJ9
|
||||
1
packages/cad/dist/lib/cache.d.ts
vendored
Normal file
1
packages/cad/dist/lib/cache.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const get: (str: string, dst: string) => void;
|
||||
2
packages/cad/dist/lib/cache.js
vendored
Normal file
2
packages/cad/dist/lib/cache.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export const get = (str, dst) => { };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQVUsRUFBRSxHQUFVLEVBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQSJ9
|
||||
1
packages/cad/dist/lib/formatter.d.ts
vendored
Normal file
1
packages/cad/dist/lib/formatter.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const sizeToString: (bytes: number, si?: boolean) => string;
|
||||
19
packages/cad/dist/lib/formatter.js
vendored
Normal file
19
packages/cad/dist/lib/formatter.js
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
export const sizeToString = (bytes, si = true) => {
|
||||
var units;
|
||||
var u;
|
||||
var b = bytes;
|
||||
var thresh = si ? 1000 : 1024;
|
||||
if (Math.abs(b) < thresh) {
|
||||
return b + ' B';
|
||||
}
|
||||
units = si
|
||||
? ['kB', 'MB', 'GB', 'TB']
|
||||
: ['KiB', 'MiB', 'GiB', 'TiB'];
|
||||
u = -1;
|
||||
do {
|
||||
b /= thresh;
|
||||
++u;
|
||||
} while (Math.abs(b) >= thresh && u < units.length - 1);
|
||||
return b.toFixed(1) + ' ' + units[u];
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWMsSUFBSSxFQUFFLEVBQUU7SUFDOUQsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNkLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBQ0QsS0FBSyxHQUFHLEVBQUU7UUFDTixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ1AsR0FBRyxDQUFDO1FBQ0EsQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUNaLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN4RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMifQ==
|
||||
1
packages/cad/dist/lib/geometry/dxf.d.ts
vendored
Normal file
1
packages/cad/dist/lib/geometry/dxf.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export {};
|
||||
51
packages/cad/dist/lib/geometry/dxf.js
vendored
Normal file
51
packages/cad/dist/lib/geometry/dxf.js
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
import * as fs from 'fs';
|
||||
const dxf = require('dxf-parser');
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
function distanceBetweenPoints(p1, p2) {
|
||||
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
|
||||
}
|
||||
function arcLength(radius, startAngle, endAngle) {
|
||||
return Math.abs(endAngle - startAngle) * radius;
|
||||
}
|
||||
function calculateEntityLength(entity) {
|
||||
switch (entity.type) {
|
||||
//case 'LINE':
|
||||
// return distanceBetweenPoints(entity.start!, entity.end!);
|
||||
case 'LWPOLYLINE':
|
||||
case 'LINE':
|
||||
let length = 0;
|
||||
for (let i = 0; i < entity.vertices.length - 1; i++) {
|
||||
try {
|
||||
length += distanceBetweenPoints(entity.vertices[i], entity.vertices[i + 1]);
|
||||
}
|
||||
catch (e) {
|
||||
console.log('error', entity, e);
|
||||
}
|
||||
}
|
||||
return length;
|
||||
case 'CIRCLE':
|
||||
return 2 * Math.PI * entity.radius;
|
||||
case 'ARC':
|
||||
return arcLength(entity.radius, entity.startAngle, entity.endAngle);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
function calculateTotalDxfEntitiesLength(filePath) {
|
||||
const parser = new dxf();
|
||||
const dxfData = parser.parseSync(fs.readFileSync(filePath, 'utf-8'));
|
||||
const ret = dxfData.entities.reduce((totalLength, entity) => {
|
||||
console.log('entity', entity);
|
||||
const length = calculateEntityLength(entity);
|
||||
return totalLength + length;
|
||||
}, 0);
|
||||
write(filePath + '.json', JSON.stringify(dxfData, null, 2));
|
||||
return ret;
|
||||
}
|
||||
const test = () => {
|
||||
// Usage example
|
||||
const filePath = './tests/dxf/square-200-bore.DXF';
|
||||
const totalLength = calculateTotalDxfEntitiesLength(filePath);
|
||||
console.log(`Total length of all entities: ${totalLength}`);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHhmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nZW9tZXRyeS9keGYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFhbEQsU0FBUyxxQkFBcUIsQ0FBQyxFQUE0QixFQUFFLEVBQTRCO0lBQ3JGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxNQUFjLEVBQUUsVUFBa0IsRUFBRSxRQUFnQjtJQUNuRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFpQjtJQUM1QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixjQUFjO1FBQ2QsK0RBQStEO1FBQy9ELEtBQUssWUFBWSxDQUFDO1FBQ2xCLEtBQUssTUFBTTtZQUNQLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDO29CQUNELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBRW5DLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsS0FBSyxRQUFRO1lBQ1QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTyxDQUFDO1FBQ3hDLEtBQUssS0FBSztZQUNOLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFPLEVBQUUsTUFBTSxDQUFDLFVBQVcsRUFBRSxNQUFNLENBQUMsUUFBUyxDQUFDLENBQUM7UUFDM0U7WUFDSSxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsK0JBQStCLENBQUMsUUFBZ0I7SUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFckUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFtQixFQUFFLE1BQWlCLEVBQUUsRUFBRTtRQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM3QixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxPQUFPLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ04sS0FBSyxDQUFFLFFBQVEsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUQsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0lBQ2QsZ0JBQWdCO0lBQ2hCLE1BQU0sUUFBUSxHQUFHLGlDQUFpQyxDQUFBO0lBQ2xELE1BQU0sV0FBVyxHQUFHLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFBIn0=
|
||||
1
packages/cad/dist/lib/index.d.ts
vendored
Normal file
1
packages/cad/dist/lib/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const removeEmpty: (data: any) => any;
|
||||
13
packages/cad/dist/lib/index.js
vendored
Normal file
13
packages/cad/dist/lib/index.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
export const removeEmpty = (data) => {
|
||||
//transform properties into key-values pairs and filter all the empty-values
|
||||
const entries = Object.entries(data).filter(([, value]) => value != null);
|
||||
//map through all the remaining properties and check if the value is an object.
|
||||
//if value is object, use recursion to remove empty properties
|
||||
const clean = entries.map(([key, v]) => {
|
||||
const value = typeof v == 'object' ? removeEmpty(v) : v;
|
||||
return [key, value];
|
||||
});
|
||||
//transform the key-value pairs back to an object.
|
||||
return Object.fromEntries(clean);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ2hDLDRFQUE0RTtJQUM1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBRTFFLCtFQUErRTtJQUMvRSw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2RCxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLENBQUMsQ0FBQyxDQUFBO0lBRUYsa0RBQWtEO0lBQ2xELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNwQyxDQUFDLENBQUEifQ==
|
||||
17
packages/cad/dist/lib/process/index.d.ts
vendored
Normal file
17
packages/cad/dist/lib/process/index.d.ts
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
export declare enum STATUS {
|
||||
OK = 0,
|
||||
ERROR = 1,
|
||||
PENDING = 2
|
||||
}
|
||||
export declare class Process {
|
||||
binary: string;
|
||||
cwd: string;
|
||||
args: string;
|
||||
constructor(options?: any);
|
||||
optionsToString(options: any): string;
|
||||
optionsToArray(options: any): string[];
|
||||
exec(command: string, options?: any, args?: any[]): Promise<any>;
|
||||
}
|
||||
export declare class Helper {
|
||||
static run(cwd: any, command: string, args: string[], debug_stream?: boolean): Promise<any>;
|
||||
}
|
||||
142
packages/cad/dist/lib/process/index.js
vendored
Normal file
142
packages/cad/dist/lib/process/index.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
packages/cad/dist/log.d.ts
vendored
Normal file
1
packages/cad/dist/log.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const noop: () => void;
|
||||
2
packages/cad/dist/log.js
vendored
Normal file
2
packages/cad/dist/log.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export const noop = () => { };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBIn0=
|
||||
2
packages/cad/dist/main.d.ts
vendored
Normal file
2
packages/cad/dist/main.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
export {};
|
||||
18
packages/cad/dist/main.js
vendored
Normal file
18
packages/cad/dist/main.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env node
|
||||
import { defaults } from './_cli.js';
|
||||
defaults();
|
||||
import * as cli from 'yargs';
|
||||
import { register as registerSW } from './commands/sw.js';
|
||||
registerSW(cli);
|
||||
//import { register as registerSlic3r } from './commands/slice.js'; registerSlic3r(cli as any)
|
||||
//import { register as registerPack } from './commands/pack.js'; registerPack(cli as any)
|
||||
//import { register as registerInfo } from './commands/info.js'; registerInfo(cli as any)
|
||||
const argv = cli.argv;
|
||||
if (argv.h || argv.help) {
|
||||
cli.showHelp();
|
||||
process.exit();
|
||||
}
|
||||
else if (argv.v || argv.version) {
|
||||
process.exit();
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFFaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFFNUIsT0FBTyxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUFDLFVBQVUsQ0FBQyxHQUFVLENBQUMsQ0FBQTtBQUNqRiw4RkFBOEY7QUFDOUYseUZBQXlGO0FBQ3pGLHlGQUF5RjtBQUV6RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsSUFBSSxDQUFBO0FBRTFCLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2QsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ2xCLENBQUM7S0FBTSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUNsQixDQUFDIn0=
|
||||
6
packages/cad/dist/os/context_menu/register_cli.d.ts
vendored
Normal file
6
packages/cad/dist/os/context_menu/register_cli.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export declare const registerCommand: (options: any) => Promise<void>;
|
||||
export declare const registerDirectoryCommand: (options: any) => Promise<void>;
|
||||
export declare const registerOpenWithCommand: (extensions: any, options: any) => Promise<void>;
|
||||
export declare const removeCommand: (name: any) => Promise<void>;
|
||||
export declare const removeDirectoryCommand: (name: any) => Promise<void>;
|
||||
export declare const removeOpenWithCommand: (extensions: any, name: any) => Promise<void>;
|
||||
108
packages/cad/dist/os/context_menu/register_cli.js
vendored
Normal file
108
packages/cad/dist/os/context_menu/register_cli.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
packages/cad/dist/print/index.d.ts
vendored
Normal file
1
packages/cad/dist/print/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export { convert } from './slic3r.js';
|
||||
2
packages/cad/dist/print/index.js
vendored
Normal file
2
packages/cad/dist/print/index.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export { convert } from './slic3r.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQSJ9
|
||||
9
packages/cad/dist/print/slic3r.d.ts
vendored
Normal file
9
packages/cad/dist/print/slic3r.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import { SlicerOptions } from '../types.js';
|
||||
export declare const fileAsBuffer: (path: string) => Buffer<ArrayBufferLike>;
|
||||
export declare const getSlicrDir: (options: SlicerOptions) => string;
|
||||
export declare const getBin: (options: SlicerOptions) => string;
|
||||
export declare const convertFile: (file: any, target: any, onNode: (data: any) => void, options: SlicerOptions) => Promise<any>;
|
||||
export declare function convertFiles(file: any, targets: string[], onNode: (data: any) => void, options: SlicerOptions): Promise<void | any[]>;
|
||||
export declare const report: (data: any, dst: string) => any;
|
||||
export declare const targets: (f: string, options: SlicerOptions) => any[];
|
||||
export declare function convert(options: SlicerOptions): Promise<void>;
|
||||
341
packages/cad/dist/print/slic3r.js
vendored
Normal file
341
packages/cad/dist/print/slic3r.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
packages/cad/dist/report/csv.d.ts
vendored
Normal file
1
packages/cad/dist/report/csv.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const reportCSV: (data: any) => any;
|
||||
46
packages/cad/dist/report/csv.js
vendored
Normal file
46
packages/cad/dist/report/csv.js
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
import * as path from 'path';
|
||||
const csv = require('csv-stringify/lib/sync');
|
||||
const OSR_REGEX = /^[0-9].+$/;
|
||||
const isOSR = (filename) => filename.match(OSR_REGEX) != null;
|
||||
export const reportCSV = (data) => {
|
||||
const image = (path) => `)})`;
|
||||
const file = (path) => `[${path}](./${(encodeURI(path))})`;
|
||||
const qty = (filename) => {
|
||||
if (isOSR(filename)) {
|
||||
const parts = filename.split("_");
|
||||
const partsLength = parts.length;
|
||||
const token = parts[partsLength - 3];
|
||||
if (token) {
|
||||
return parseInt(token.replace('x', ''));
|
||||
}
|
||||
}
|
||||
return 'unknown';
|
||||
};
|
||||
const thickness = (filename) => {
|
||||
if (isOSR(filename)) {
|
||||
const parts = filename.split("_");
|
||||
const partsLength = parts.length;
|
||||
const token = parts[partsLength - 2];
|
||||
if (token) {
|
||||
return token;
|
||||
}
|
||||
}
|
||||
return 'unknown';
|
||||
};
|
||||
const set = data.map((d) => [
|
||||
`${path.parse(d.target).name}`,
|
||||
`${image(path.parse(d.target).name + path.parse(d.target).ext)}`,
|
||||
`${file(path.parse(d.src).name + path.parse(d.src).ext)}`,
|
||||
`${qty(path.parse(d.src).name)}`,
|
||||
`${thickness(path.parse(d.src).name)}`,
|
||||
`${isOSR(path.parse(d.src).name) ? 'Laser' : 'Unkown'}`,
|
||||
''
|
||||
]);
|
||||
const csvString = csv(set, {
|
||||
header: true,
|
||||
delimiter: ',',
|
||||
columns: { 'a': 'Name', 'b': 'Thumbnail', 'c': 'File', 'd': 'Qty', 'f': 'Thickness', 'g': 'Type', 'h': 'Missing' }
|
||||
});
|
||||
return csvString;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlcG9ydC9jc3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQzlCLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUU5QixNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUUzRCxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQ3JCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQyxDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMzQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDLENBQUE7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRTtRQUM5QixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDaEUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pELEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUN2RCxFQUFFO0tBQ0wsQ0FDQSxDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSTtRQUNaLFNBQVMsRUFBRSxHQUFHO1FBQ2QsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtLQUNySCxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsQ0FBQztBQUVyQixDQUFDLENBQUEifQ==
|
||||
1
packages/cad/dist/report/index.d.ts
vendored
Normal file
1
packages/cad/dist/report/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export { reportCSV } from './csv.js';
|
||||
2
packages/cad/dist/report/index.js
vendored
Normal file
2
packages/cad/dist/report/index.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export { reportCSV } from './csv.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUEifQ==
|
||||
5
packages/cad/dist/slic3r_argv.d.ts
vendored
Normal file
5
packages/cad/dist/slic3r_argv.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import * as CLI from 'yargs';
|
||||
import { SolidworkOptions, SlicerOptions } from './types.js';
|
||||
export declare const defaultOptions: (yargs: CLI.Argv) => any;
|
||||
export declare const sanitizeSingle: (argv: CLI.Arguments) => SolidworkOptions;
|
||||
export declare const sanitize: (argv: any) => SlicerOptions;
|
||||
182
packages/cad/dist/slic3r_argv.js
vendored
Normal file
182
packages/cad/dist/slic3r_argv.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
packages/cad/dist/sw_argv.d.ts
vendored
Normal file
5
packages/cad/dist/sw_argv.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import * as CLI from 'yargs';
|
||||
import { SolidworkOptions } from './index.js';
|
||||
export declare const defaultOptions: (yargs: CLI.Argv) => any;
|
||||
export declare const sanitizeSingle: (argv: CLI.Arguments) => SolidworkOptions;
|
||||
export declare const sanitize: (argv: any) => SolidworkOptions;
|
||||
249
packages/cad/dist/sw_argv.js
vendored
Normal file
249
packages/cad/dist/sw_argv.js
vendored
Normal file
File diff suppressed because one or more lines are too long
213
packages/cad/dist/types.d.ts
vendored
Normal file
213
packages/cad/dist/types.d.ts
vendored
Normal file
@ -0,0 +1,213 @@
|
||||
import { PATH_INFO } from "@polymech/commons";
|
||||
export interface IOptionsCache {
|
||||
cache?: boolean;
|
||||
clear?: boolean;
|
||||
}
|
||||
export interface IOptionsBase extends IOptionsCache {
|
||||
src: string;
|
||||
srcInfo?: PATH_INFO;
|
||||
dstInfo?: PATH_INFO;
|
||||
dst?: string;
|
||||
alt?: boolean;
|
||||
debug?: boolean;
|
||||
verbose?: boolean;
|
||||
dry?: boolean;
|
||||
report?: string;
|
||||
variables: Record<string, string>;
|
||||
script?: string;
|
||||
args?: string;
|
||||
onNode: (data: INodeCallback) => Promise<void>;
|
||||
}
|
||||
export interface INodeCallback {
|
||||
src: string;
|
||||
target: string;
|
||||
options: IOptionsBase;
|
||||
}
|
||||
export interface IBomOptions {
|
||||
'bom-template'?: string;
|
||||
'bom-detail'?: number;
|
||||
'bom-type'?: number;
|
||||
'bom-images'?: boolean;
|
||||
'bom-config'?: string;
|
||||
}
|
||||
export interface SolidworkOptions extends IOptionsBase, IBomOptions {
|
||||
close?: boolean;
|
||||
configuration?: string;
|
||||
height?: number;
|
||||
hidden?: string;
|
||||
light?: boolean;
|
||||
logLevel?: string;
|
||||
pack?: boolean;
|
||||
quality?: number;
|
||||
rebuild?: boolean;
|
||||
renderer?: string;
|
||||
save?: boolean;
|
||||
sw?: string;
|
||||
swv?: number;
|
||||
view?: string;
|
||||
width?: number;
|
||||
write?: boolean;
|
||||
}
|
||||
export interface IPrintCenter {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
export type EGCodeFlavor = 'reprap' | 'marlin' | 'teacup' | 'makerware' | 'sailfish' | 'mach3' | 'noextrusion';
|
||||
export interface IBedSize {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
export interface IExtruderOffset {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
export type TOutputResult = boolean;
|
||||
export interface ISlic3rCLIOptions {
|
||||
avoidCrossingPerimeters?: boolean;
|
||||
bedSize?: IBedSize;
|
||||
bedTemperature?: number;
|
||||
bottomSolidLayers?: number;
|
||||
bridgeAcceleration?: number;
|
||||
bridgeFanSpeed?: number;
|
||||
bridgeFlowRatio?: number;
|
||||
bridgeSpeed?: number;
|
||||
brimWidth?: number;
|
||||
completeObjects?: boolean;
|
||||
cooling?: boolean;
|
||||
cut?: number;
|
||||
defaultAcceleration?: number;
|
||||
disableFanFirstLayers?: number;
|
||||
dontSupportBridges?: boolean;
|
||||
duplicate?: number;
|
||||
duplicateDistance?: number;
|
||||
duplicateGrid?: string;
|
||||
endGCode?: boolean;
|
||||
endGcode?: boolean;
|
||||
exportSvg?: boolean;
|
||||
externalPerimeterExtrusionWidth?: number | string;
|
||||
externalPerimetersFirst?: boolean;
|
||||
externalPerimeterSpeed?: number;
|
||||
extraPerimeters?: boolean;
|
||||
extruderClearanceHeight?: number;
|
||||
extruderClearanceRadius?: number;
|
||||
extruderOffset?: IExtruderOffset;
|
||||
extrusionMultiplier?: number;
|
||||
extrusionWidth?: number | string;
|
||||
fanAlwaysOn?: boolean;
|
||||
fanBelowLayerTime?: number;
|
||||
filamentDiameter?: number;
|
||||
fillAngle?: number;
|
||||
fillDensity?: number;
|
||||
fillPattern?: string;
|
||||
firstLayerAcceleration?: number;
|
||||
firstLayerBedTemperature?: number;
|
||||
firstLayerExtrusionWidth?: number | string;
|
||||
firstLayerHeight?: number;
|
||||
firstLayerSpeed?: number;
|
||||
firstLayerTemperature?: number;
|
||||
g0?: boolean;
|
||||
gapFillSpeed?: number;
|
||||
GCodeArcs?: boolean;
|
||||
GCodeComments?: boolean;
|
||||
GCodeFlavor?: EGCodeFlavor;
|
||||
infillAcceleration?: number;
|
||||
infillEveryLayers?: number;
|
||||
infillExtruder?: number;
|
||||
infillExtrusionWidth?: number | string;
|
||||
infillFirst?: boolean;
|
||||
infillOnlyWhereNeeded?: boolean;
|
||||
infillSpeed?: number;
|
||||
info?: boolean;
|
||||
inputFile?: string;
|
||||
layerGCode?: boolean;
|
||||
layerGcode?: boolean;
|
||||
layerHeight?: number;
|
||||
load?: string;
|
||||
log?: string;
|
||||
maxFanSpeed?: number;
|
||||
merge?: boolean;
|
||||
minFanSpeed?: number;
|
||||
minPrintSpeed?: number;
|
||||
minSkirtLength?: number;
|
||||
notes?: string;
|
||||
nozzleDiameter?: number;
|
||||
onlyRetractWhenCrossingPerimeters?: boolean;
|
||||
oozePrevention?: boolean;
|
||||
outputDirectory?: string;
|
||||
outputFile?: string;
|
||||
outputFilenameFormat?: string;
|
||||
overhangs?: boolean;
|
||||
perimeterAcceleration?: number;
|
||||
perimeterExtruder?: number;
|
||||
perimeterExtrusionWidth?: number | string;
|
||||
perimeters?: number;
|
||||
perimeterSpeed?: number;
|
||||
postProcess?: string[];
|
||||
postProcessScripts?: string[];
|
||||
pressureAdvance?: number;
|
||||
printCenter?: IPrintCenter;
|
||||
profile?: string;
|
||||
raftLayers?: number;
|
||||
repair?: boolean;
|
||||
resolution?: number;
|
||||
retractBeforeTravel?: number;
|
||||
retractLayerChange?: boolean;
|
||||
retractLength?: number;
|
||||
retractLengthToolchange?: number;
|
||||
retractLift?: number;
|
||||
retractRestartExtra?: number;
|
||||
retractRestartExtraToolchange?: number;
|
||||
retractSpeed?: number;
|
||||
rotate?: number;
|
||||
save?: string;
|
||||
saveArgs?: string;
|
||||
saveAsProfile?: string;
|
||||
scale?: number;
|
||||
seamPosition?: 'random' | 'nearest' | 'aligned';
|
||||
skirtDistance?: number;
|
||||
skirtHeight?: number;
|
||||
skirts?: number;
|
||||
slowdownBelowLayerTime?: number;
|
||||
smallPerimeterSpeed?: number;
|
||||
solidFillPattern?: string;
|
||||
solidInfillBelowArea?: number;
|
||||
solidInfillEveryLayers?: number;
|
||||
solidInfillExtruder?: number;
|
||||
solidInfillExtrusionWidth?: number | string;
|
||||
solidInfillSpeed?: number;
|
||||
solidLayers?: boolean;
|
||||
spiralVase?: boolean;
|
||||
split?: boolean;
|
||||
standbyTemperatureDelta?: number;
|
||||
startGCode?: boolean;
|
||||
startGcode?: boolean;
|
||||
supportMaterial?: boolean;
|
||||
supportMaterialAngle?: number;
|
||||
supportMaterialEnforceLayers?: number;
|
||||
supportMaterialExtruder?: number;
|
||||
supportMaterialExtrusionWidth?: number | string;
|
||||
supportMaterialInterfaceExtruder?: number;
|
||||
supportMaterialInterfaceLayers?: number;
|
||||
supportMaterialInterfaceSpacing?: number;
|
||||
supportMaterialInterfaceSpeed?: number;
|
||||
supportMaterialPattern?: string;
|
||||
supportMaterialSpacing?: number;
|
||||
supportMaterialSpeed?: number;
|
||||
supportMaterialThreshold?: number;
|
||||
temperature?: number;
|
||||
thinWalls?: boolean;
|
||||
threads?: number;
|
||||
toolchangeGCode?: boolean;
|
||||
toolchangeGcode?: boolean;
|
||||
topInfillExtrusionWidth?: number | string;
|
||||
topSolidInfillSpeed?: number;
|
||||
topSolidLayers?: number;
|
||||
travelSpeed?: number;
|
||||
useFirmwareRetraction?: boolean;
|
||||
useRelativeEDistances?: boolean;
|
||||
useVolumetricE?: boolean;
|
||||
vibrationLimit?: number;
|
||||
wipe?: boolean;
|
||||
zOffset?: number;
|
||||
}
|
||||
export type SlicerOptions = IOptionsBase & ISlic3rCLIOptions;
|
||||
2
packages/cad/dist/types.js
vendored
Normal file
2
packages/cad/dist/types.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
||||
@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "@polymech/cad",
|
||||
"version": "0.8.8",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"help": "node build/main.js --help",
|
||||
@ -36,8 +37,7 @@
|
||||
"@polymech/commons": "link:..\\commons",
|
||||
"@polymech/core": "link:..\\core",
|
||||
"@polymech/fs": "link:..\\fs",
|
||||
"@types/node": "^20.17.9",
|
||||
"@types/yargs": "^17.0.11",
|
||||
"@polymech/log": "link:..\\log",
|
||||
"add": "^2.0.6",
|
||||
"csv-stringify": "^5.6.1",
|
||||
"dxf-parser": "^1.1.2",
|
||||
@ -49,12 +49,14 @@
|
||||
"parse-glob": "^2.0.1",
|
||||
"regexp.escape": "^1.1.0",
|
||||
"tslint": "^5.10.0",
|
||||
"tslog": "^3.3.3",
|
||||
"which": "^2.0.2",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5.7.3",
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
"@types/which": "^1.3.2"
|
||||
"@types/node": "^22.13.1",
|
||||
"@types/which": "^1.3.2",
|
||||
"typescript": "^5.7.3"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
export { convert, pack } from './sw-lib'
|
||||
export { convert, pack } from './sw-lib.js'
|
||||
|
||||
@ -1,33 +1,31 @@
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
import * as pMap from 'p-map'
|
||||
import pMap from 'p-map'
|
||||
import { sync as which } from 'which'
|
||||
import { resolve, OSR_CACHE } from '@plastichub/osr-commons'
|
||||
import { equalFiles, swProcMessage } from './sw-util'
|
||||
import { reportCSV } from '../report'
|
||||
import { logger, substitute } from '..'
|
||||
import { removeEmpty } from '../lib/'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { Helper } from '../lib/process/index'
|
||||
import { resolve, OSR_CACHE } from '@polymech/commons'
|
||||
import { equalFiles, swProcMessage } from './sw-util.js'
|
||||
import { reportCSV } from '../report/csv.js'
|
||||
import { logger, substitute } from '../index.js'
|
||||
import { removeEmpty } from '../lib/index.js'
|
||||
import { SolidworkOptions } from '../types.js'
|
||||
import { Helper } from '../lib/process/index.js'
|
||||
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
import { sync as write } from "@plastichub/fs/write"
|
||||
import { sync as dir } from "@plastichub/fs/dir"
|
||||
import { sync as rm } from "@plastichub/fs/remove"
|
||||
import { clone } from "@plastichub/core/objects"
|
||||
import { sync as exists } from "@polymech/fs/exists"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
import { sync as write } from "@polymech/fs/write"
|
||||
import { sync as dir } from "@polymech/fs/dir"
|
||||
|
||||
import { swRayTraceRenderQuality_e, IAssembly, IAssemblyData } from './sw-types'
|
||||
import { sync as rm } from "@polymech/fs/remove"
|
||||
import { deepClone as clone } from "@polymech/core/objects"
|
||||
|
||||
import { get_cached, get_path_cached, get_cache_key, set_cached } from '@plastichub/osr-cache/lib'
|
||||
import { swRayTraceRenderQuality_e, IAssembly, IAssemblyData } from './sw-types.js'
|
||||
import { get_cached, get_path_cached, get_cache_key, set_cached } from '@polymech/cache'
|
||||
|
||||
import {
|
||||
BUF_SIZE_CMP,
|
||||
MODULE_NAME,
|
||||
MSG_FAILED_TO_LOAD
|
||||
} from '../constants'
|
||||
} from '../constants.js'
|
||||
|
||||
import { closeAppByName, fileAsBuffer, getSWBin, removeEmptyValues } from './sw-util'
|
||||
import { closeAppByName, fileAsBuffer, getSWBin, removeEmptyValues } from './sw-util.js'
|
||||
|
||||
export const convertFile = async (
|
||||
src,
|
||||
@ -239,7 +237,7 @@ export const convertFile = async (
|
||||
}
|
||||
export async function convertFiles(file, targets: string[], view, onNode: (data: any) => void = () => { }, options: SolidworkOptions) {
|
||||
if (options.dry) {
|
||||
logger.info(`Dry run convert ${file} to `, targets.map((t)=>{`\n\t${t}`}).join(',\n'))
|
||||
logger.info(`Dry run convert ${file} to `, targets.map((t) => { `\n\t${t}` }).join(',\n'))
|
||||
return Promise.resolve()
|
||||
}
|
||||
return pMap(targets, (target: any) => {
|
||||
@ -290,7 +288,7 @@ export const targets = (f: string, options: SolidworkOptions) => {
|
||||
variables.SRC_NAME = srcParts.name
|
||||
variables.SRC_DIR = srcParts.dir
|
||||
variables.CONFIGURATION = conf
|
||||
let targetPath = substitute(options.alt, options.variables.DST_PATH, variables)
|
||||
let targetPath = substitute(options.variables.DST_PATH, options.alt, variables)
|
||||
targetPath = path.resolve(targetPath.replace(options.variables.DST_FILE_EXT, '') + e)
|
||||
const parts = path.parse(targetPath)
|
||||
if (srcParts.ext === parts.ext) {
|
||||
@ -315,7 +313,7 @@ export const targets = (f: string, options: SolidworkOptions) => {
|
||||
variables.SRC_NAME = srcParts.name
|
||||
variables.SRC_DIR = srcParts.dir
|
||||
variables.CONFIGURATION = conf
|
||||
let targetPath = substitute(options.alt, options.variables.DST_PATH, variables)
|
||||
let targetPath = substitute(options.variables.DST_PATH, options.alt, variables)
|
||||
if (!exists(targetPath)) {
|
||||
try {
|
||||
dir(targetPath)
|
||||
|
||||
@ -1,23 +1,4 @@
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
import * as pMap from 'p-map'
|
||||
import { sync as which } from 'which'
|
||||
import { execSync } from 'child_process'
|
||||
|
||||
import { reportCSV } from '../report'
|
||||
import { logger, substitute } from '..'
|
||||
import { removeEmpty } from '../lib/'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { Helper } from '../lib/process/index'
|
||||
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
import { sync as write } from "@plastichub/fs/write"
|
||||
import { sync as dir } from "@plastichub/fs/dir"
|
||||
import { sync as rm } from "@plastichub/fs/remove"
|
||||
import { clone } from "@plastichub/core/objects"
|
||||
|
||||
export * from './sw-convert'
|
||||
export * from './sw-util'
|
||||
export * from './sw-pack'
|
||||
export * from './sw-convert.js'
|
||||
export * from './sw-util.js'
|
||||
export * from './sw-pack.js'
|
||||
|
||||
|
||||
@ -1,14 +1,10 @@
|
||||
import * as path from 'path'
|
||||
import * as pMap from 'p-map'
|
||||
|
||||
import { logger } from '..'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { Helper } from '../lib/process/index'
|
||||
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
|
||||
|
||||
import { getSWBin } from './sw-util'
|
||||
import pMap from 'p-map'
|
||||
import { logger } from '../index.js'
|
||||
import { SolidworkOptions } from '../types.js'
|
||||
import { Helper } from '../lib/process/index.js'
|
||||
import { sync as exists } from "@polymech/fs/exists"
|
||||
import { getSWBin } from './sw-util.js'
|
||||
|
||||
export async function packFile(file, onNode: (data: any) => void = () => { }, options: SolidworkOptions) {
|
||||
if (options.dry) {
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
import { execSync } from 'child_process'
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
|
||||
import { BUF_SIZE_CMP } from '../constants'
|
||||
import { sync as exists } from "@polymech/fs/exists"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
import { BUF_SIZE_CMP } from '../constants.js'
|
||||
|
||||
export const swProcMessage = (log: string):{ logLevel: string, message: string } | null => {
|
||||
const regex = /<<(\w+)::(.*?)>>/
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import * as CLI from 'yargs'
|
||||
|
||||
import { CONFIG_DEFAULT, DEFAULT_ROOTS } from '@plastichub/osr-commons';
|
||||
import { logger } from '../'
|
||||
import { CONFIG_DEFAULT, DEFAULT_ROOTS } from '@polymech/commons';
|
||||
import { logger } from '../index.js'
|
||||
|
||||
const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('debug', {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import * as CLI from 'yargs'
|
||||
import { logger } from '../'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { sanitizeSingle } from '../sw_argv'
|
||||
import { pack } from '../cad/index'
|
||||
import { logger } from '../index.js'
|
||||
import { SolidworkOptions } from '../types.js'
|
||||
import { sanitizeSingle } from '../sw_argv.js'
|
||||
import { pack } from '../cad/index.js'
|
||||
|
||||
export const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('src', {
|
||||
|
||||
@ -1,14 +1,12 @@
|
||||
import * as CLI from 'yargs'
|
||||
import * as path from 'path'
|
||||
import { logger } from '..'
|
||||
import { SlicerOptions } from '../types'
|
||||
import { defaultOptions, sanitize } from '../slic3r_argv'
|
||||
import { convert } from '../print'
|
||||
import { logger } from '../index.js'
|
||||
import { SlicerOptions } from '../types.js'
|
||||
import { defaultOptions, sanitize } from '../slic3r_argv.js'
|
||||
import { convert } from '../print/index.js'
|
||||
import { load } from 'js-yaml'
|
||||
|
||||
import { clone } from "@plastichub/core/objects"
|
||||
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
import { deepClone as clone } from "@polymech/core/objects"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
|
||||
const SLIC3R_DEFAULTS = () => path.resolve(path.join(__dirname, '../profiles/slic3r_defaults.yaml'))
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import * as CLI from 'yargs'
|
||||
import { logger } from '..'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { defaultOptions, sanitize } from '../sw_argv'
|
||||
import { convert } from '../cad/index'
|
||||
import { logger } from '../index.js'
|
||||
import { SolidworkOptions } from '../types.js'
|
||||
import { defaultOptions, sanitize } from '../sw_argv.js'
|
||||
import { convert } from '../cad/index.js'
|
||||
|
||||
let options = (yargs: CLI.Argv) => defaultOptions(yargs)
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import * as CLI from 'yargs'
|
||||
import { logger } from '..'
|
||||
import { SolidworkOptions } from '../types'
|
||||
import { defaultOptions, sanitize } from '../sw_argv'
|
||||
import { convert } from '../cad'
|
||||
import { logger } from '../index.js'
|
||||
import { SolidworkOptions } from '../types.js'
|
||||
import { defaultOptions, sanitize } from '../sw_argv.js'
|
||||
import { convert } from '../cad/sw-convert.js'
|
||||
|
||||
let options = (yargs: CLI.Argv) => defaultOptions(yargs)
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
export const GIT_CHANGELOG_MESSAGE_PREFIX = 'ChangeLog:'
|
||||
export const GIT_REPO = 'https://git.osr-plastic.org/osr-plastic/'
|
||||
export const MODULE_NAME = `OSR-CAD`
|
||||
export const PACKAGE_NAME = 'osr-cad'
|
||||
export const GIT_REPO = 'https://git.polymech.io/osr-plastic/'
|
||||
export const MODULE_NAME = `POLYMECH-CAD`
|
||||
export const PACKAGE_NAME = 'polymech-cad'
|
||||
export const DEFAULT_REPORT = '${SRC_DIR}/cad-report-${CONFIGURATION}.json'
|
||||
export const BUF_SIZE_CMP = 16 * 1024
|
||||
export const MSG_FAILED_TO_LOAD = 'Failed to load'
|
||||
|
||||
@ -1,14 +1,27 @@
|
||||
export * from './log'
|
||||
export * from './types'
|
||||
export * from './cad/sw-lib'
|
||||
export * from './_cli'
|
||||
export * from './sw_argv'
|
||||
export * from './lib/geometry/dxf'
|
||||
import { resolve } from "@polymech/commons/variables"
|
||||
|
||||
import { logger as _logger } from '@plastichub/core/debug'
|
||||
import { MODULE_NAME } from './constants'
|
||||
export * from './types.js'
|
||||
export * from './cad/sw-lib.js'
|
||||
export * from './_cli.js'
|
||||
export * from './sw_argv.js'
|
||||
export * from './lib/geometry/dxf.js'
|
||||
|
||||
export const logger = _logger(MODULE_NAME)
|
||||
import { substitute as _substitute , substituteAlt as _substituteAlt } from "@plastichub/core/strings"
|
||||
import { IObjectLiteral } from "@plastichub/core"
|
||||
export const substitute = (alt:boolean, template:string, vars:IObjectLiteral) => alt ? _substituteAlt(template,vars) : _substitute(template, vars)
|
||||
import { Logger } from "tslog"
|
||||
|
||||
export function createLogger(name: string, options?: any) {
|
||||
return new Logger({
|
||||
name,
|
||||
type: 'pretty',
|
||||
...options,
|
||||
})
|
||||
}
|
||||
export const defaultLogger = createLogger('DefaultLogger', {
|
||||
minLevel: 1
|
||||
})
|
||||
|
||||
import { MODULE_NAME } from './constants.js'
|
||||
export { MODULE_NAME } from './constants.js'
|
||||
|
||||
export const logger = createLogger(MODULE_NAME, {})
|
||||
|
||||
export const substitute = resolve
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import * as fs from 'fs';
|
||||
const dxf = require('dxf-parser')
|
||||
import { sync as read } from '@plastichub/fs/read'
|
||||
import { sync as write } from '@plastichub/fs/write'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as write } from '@polymech/fs/write'
|
||||
|
||||
interface DxfEntity {
|
||||
type: string;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { logger } from '../../index'
|
||||
import { logger } from '../../index.js'
|
||||
import * as stream from 'stream';
|
||||
import { ChildProcess, exec } from 'child_process';
|
||||
|
||||
|
||||
@ -1 +0,0 @@
|
||||
export const noop = () => {}
|
||||
@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env node
|
||||
import { defaults } from './_cli'; defaults()
|
||||
import { defaults } from './_cli.js'; defaults()
|
||||
|
||||
import * as cli from 'yargs'
|
||||
|
||||
import { register as registerSW } from './commands/sw'; registerSW(cli as any)
|
||||
import { register as registerSlic3r } from './commands/slice'; registerSlic3r(cli as any)
|
||||
import { register as registerPack } from './commands/pack'; registerPack(cli as any)
|
||||
import { register as registerInfo } from './commands/info'; registerInfo(cli as any)
|
||||
import { register as registerSW } from './commands/sw.js'; registerSW(cli as any)
|
||||
//import { register as registerSlic3r } from './commands/slice.js'; registerSlic3r(cli as any)
|
||||
//import { register as registerPack } from './commands/pack.js'; registerPack(cli as any)
|
||||
//import { register as registerInfo } from './commands/info.js'; registerInfo(cli as any)
|
||||
|
||||
const argv: any = cli.argv
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
export { convert } from './slic3r'
|
||||
export { convert } from './slic3r.js'
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
import * as path from 'path'
|
||||
import { logger, substitute } from '..'
|
||||
import { removeEmpty } from '../lib'
|
||||
import { OSR_CACHE } from '@plastichub/osr-commons'
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
import { sync as write } from "@plastichub/fs/write"
|
||||
import { sync as dir } from "@plastichub/fs/dir"
|
||||
import { Promise as BPromise } from 'bluebird'
|
||||
import { logger, substitute } from '../index.js'
|
||||
import { removeEmpty } from '../lib/index.js'
|
||||
import { OSR_CACHE } from '@polymech/commons'
|
||||
import { sync as exists } from "@polymech/fs/exists"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
import { sync as write } from "@polymech/fs/write"
|
||||
import { sync as dir } from "@polymech/fs/dir"
|
||||
import { sync as which } from 'which'
|
||||
import * as md5 from 'md5'
|
||||
import pMap from 'p-map'
|
||||
|
||||
import { SlicerOptions } from '../types'
|
||||
import { Helper } from '../lib/process/index'
|
||||
import { SlicerOptions } from '../types.js'
|
||||
import { Helper } from '../lib/process/index.js'
|
||||
|
||||
import { reportCSV } from '../report'
|
||||
import { reportCSV } from '../report/csv.js'
|
||||
|
||||
import {
|
||||
get_cached,
|
||||
set_cached
|
||||
} from '@plastichub/osr-cache/lib'
|
||||
} from '@polymech/cache'
|
||||
|
||||
import {
|
||||
MODULE_NAME
|
||||
} from '../constants'
|
||||
} from '../constants.js'
|
||||
|
||||
|
||||
export const fileAsBuffer = (path: string) => read(path, 'buffer') as Buffer || Buffer.from("-")
|
||||
@ -326,11 +326,10 @@ export const convertFile = async (file, target, onNode: (data: any) => void = ()
|
||||
}
|
||||
|
||||
export async function convertFiles(file, targets: string[], onNode: (data: any) => void = () => { }, options: SlicerOptions) {
|
||||
|
||||
if (options.dry) {
|
||||
return Promise.resolve()
|
||||
}
|
||||
return BPromise.resolve(targets).map((target) => {
|
||||
return pMap(targets,(target) => {
|
||||
return convertFile(file, target, onNode, options)
|
||||
}, { concurrency: 1 });
|
||||
|
||||
@ -339,14 +338,9 @@ export async function convertFiles(file, targets: string[], onNode: (data: any)
|
||||
export const report = (data, dst: string) => {
|
||||
|
||||
let report: any = null;
|
||||
if (dst.endsWith('.md')) {
|
||||
//report = reportMarkdown(data);
|
||||
}
|
||||
|
||||
if (dst.endsWith('.csv')) {
|
||||
report = reportCSV(data);
|
||||
}
|
||||
|
||||
if (report) {
|
||||
logger.info(`Write report to ${dst}`);
|
||||
write(dst, report);
|
||||
@ -362,7 +356,7 @@ export const targets = (f: string, options: SlicerOptions) => {
|
||||
options.dstInfo.GLOB_EXTENSIONS.forEach((e) => {
|
||||
variables.SRC_NAME = srcParts.name
|
||||
variables.SRC_DIR = srcParts.dir
|
||||
let targetPath = substitute(options.alt, options.variables.DST_PATH, variables)
|
||||
let targetPath = substitute(options.variables.DST_PATH,options.alt, variables)
|
||||
targetPath = path.resolve(targetPath.replace(options.variables.DST_FILE_EXT, '') + e)
|
||||
const parts = path.parse(targetPath)
|
||||
if (!exists(parts.dir)) {
|
||||
@ -388,14 +382,14 @@ export async function convert(options: SlicerOptions) {
|
||||
const onNode = options.onNode || ((data) => reports.push(data))
|
||||
|
||||
options.verbose && logger.info(`Convert ${options.srcInfo.FILES.length} files `)
|
||||
await BPromise.resolve(options.srcInfo.FILES).map((f) => {
|
||||
await pMap(options.srcInfo.FILES,(f) => {
|
||||
const outputs = targets(f, options)
|
||||
options.verbose && logger.info(`Convert ${f} to `, outputs)
|
||||
return convertFiles(f, outputs, onNode, options)
|
||||
}, { concurrency: 1 })
|
||||
|
||||
if (options.report) {
|
||||
const reportOutFile: string = substitute(false, options.report, {
|
||||
const reportOutFile: string = substitute(options.report,false,{
|
||||
dst: options.srcInfo.DIR
|
||||
})
|
||||
options.verbose && logger.info(`Write report to ${reportOutFile}`);
|
||||
|
||||
@ -1,95 +0,0 @@
|
||||
import { Browser, launch, Page, Response } from 'puppeteer';
|
||||
import { inspect, error, debug } from '../../log';
|
||||
import { capture_requests, capture_responses } from './network';
|
||||
let instance: Scope;
|
||||
import * as path from 'path';
|
||||
import { URL } from 'url';
|
||||
export const STATS_SUFFIX = '_stats.json';
|
||||
export const SESSION_EVENTS_SUFFIX = '_session.json';
|
||||
export const TRACE_SUFFIX = '_trace.json';
|
||||
const included_categories = ['devtools.timeline'];
|
||||
const _url_short = (url: string) =>
|
||||
new URL(url).hostname;
|
||||
|
||||
const _date_suffix = () =>
|
||||
new Date().toLocaleTimeString().replace(/:/g, '_');
|
||||
|
||||
const _random_suffix = () =>
|
||||
Math.random() * 100;
|
||||
|
||||
const _default_filename = (url: string) =>
|
||||
`${_url_short(url)}_${_random_suffix()}`;
|
||||
|
||||
export const default_path = (cwd: string, url: string) =>
|
||||
`${path.join(cwd, _default_filename(url))}${STATS_SUFFIX}`;
|
||||
|
||||
export const default_session_events_path = (cwd: string, url: string) =>
|
||||
`${path.join(cwd || process.cwd(), 'sessions', _default_filename(url))}${SESSION_EVENTS_SUFFIX}`;
|
||||
|
||||
export const default_trace_path = (cwd: string, url: string) =>
|
||||
`${path.join(cwd, _default_filename(url))}${TRACE_SUFFIX}`;
|
||||
|
||||
export class Scope {
|
||||
browser!: Browser;
|
||||
context!: any;
|
||||
page!: Page;
|
||||
args!: any;
|
||||
requests: any[] = [];
|
||||
responses: Response[] = [];
|
||||
eventBeacons: any[] = [];
|
||||
mutationBeacons: any[] = [];
|
||||
sessionSuffix: string = '';
|
||||
onResponse;
|
||||
onRequest;
|
||||
async init() {
|
||||
this.sessionSuffix = ' - ' + new Date().getTime();
|
||||
const args = [
|
||||
'--no-sandbox',
|
||||
'--disable-setuid-sandbox',
|
||||
'--disable-infobars',
|
||||
'--window-position=0,0',
|
||||
'--ignore-certifcate-errors',
|
||||
'--ignore-certifcate-errors-spki-list',
|
||||
'--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3312.0 Safari/537.36"'
|
||||
];
|
||||
this.browser = await launch({ headless: this.args.headless === 'true', devtools: true,args:args});
|
||||
// const context = await this.browser.createIncognitoBrowserContext();
|
||||
this.page = await this.browser.newPage();
|
||||
// this.page = await context.newPage();
|
||||
|
||||
this.page.on('console', msg => {
|
||||
// error('Browser error:', msg);
|
||||
});
|
||||
this.page.on('error', msg => error('Browser Error:', msg));
|
||||
// this.page.on('pageerror', msg => error('Browser Page Error:', msg));
|
||||
// this.page.on('requestfailed', msg => error('Browser Page Request Error:', msg));
|
||||
|
||||
//capture_requests(this, this.page);
|
||||
//capture_responses(this, this.page);
|
||||
|
||||
// this.args.disableRequests !== 'true' && capture_requests(this, this.page);
|
||||
// this.args.disableResponses !== 'true' && capture_requests(this, this.page);
|
||||
// capture_responses(this, this.page);
|
||||
const page2 = this.page as any;
|
||||
//page2.setCacheEnabled(false);
|
||||
/*
|
||||
await page2._client.send('Security.setOverrideCertificateErrors', {
|
||||
override: true
|
||||
});
|
||||
*/
|
||||
await page2._client.on('Security.certificateError', (event: any) => {
|
||||
page2._client.send('Security.handleCertificateError', {
|
||||
eventId: event.eventId,
|
||||
action: 'continue' // ignore error and continue request
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const getScope = (cliArgs?: any) => {
|
||||
if (!instance) {
|
||||
instance = new Scope();
|
||||
instance.args = cliArgs;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
import { NavigationOptions } from 'puppeteer';
|
||||
export const defaultTenant = 1;
|
||||
export const userSessionsTab = (base: string) => `${base}/e/${defaultTenant}/#usersearchoverview;gtf=l_2_HOURS`;
|
||||
export const loginUrl = (base: string) => `${base}/login`;
|
||||
export const loginUrlDemoDev = () => `https://proxy-dev.dynatracelabs.com/sso/ProxyLocator.jsp`;
|
||||
export const defaultPageOptions = (): NavigationOptions => {
|
||||
return {
|
||||
timeout: 5000,
|
||||
waitUntil: 'networkidle2'
|
||||
}
|
||||
}
|
||||
|
||||
export const replay_api_overview = 'uemshareddetails/rumoverviewdata/usersearchoverview';
|
||||
const ts = () => {
|
||||
const d = new Date();
|
||||
return d.getHours() + '_' + d.getMinutes() + '_' + d.getSeconds();
|
||||
}
|
||||
export const sessionName = (url?: string) => `Pupeteer :${ts()}`;
|
||||
|
||||
export const maxSessionWaitingTime = 1000 * 60 * 3;
|
||||
export const responseRetryTime = 1000 * 8;
|
||||
export const defaultMutationRoot = '#mutationsRoot';
|
||||
export const defaultMutationTag = 'div';
|
||||
export const defaultHeavyMutations = 2000;
|
||||
export const defaultMediumMutations = 500;
|
||||
@ -1,186 +0,0 @@
|
||||
import { launch, Page } from 'puppeteer'
|
||||
import { readFileSync } from 'fs';
|
||||
import * as moment from 'moment';
|
||||
import { sync as unlink } from '@plastichub/fs/remove';
|
||||
import { async as iterator } from '@plastichub/fs/iterator';
|
||||
import {
|
||||
debug, inspect,
|
||||
Options, TraceEntry, TraceTiming,
|
||||
default_trace_path,
|
||||
ReportEntry,
|
||||
NetworkReportEntry,
|
||||
sizeToString,
|
||||
log,
|
||||
spinner,
|
||||
STATS_SUFFIX,
|
||||
TRACE_SUFFIX
|
||||
} from '../../';
|
||||
import { end_time } from './times';
|
||||
import { find_time } from './trace';
|
||||
import { rl } from './stdin';
|
||||
import { report, find_report, get_report } from './report';
|
||||
import { IProcessingNode } from '@plastichub/fs/interfaces';
|
||||
|
||||
const included_categories = ['devtools.timeline'];
|
||||
|
||||
export class Puppeteer {
|
||||
|
||||
static clean(url: string, options: Options) {
|
||||
iterator(options.cwd, {
|
||||
matching: [`*${STATS_SUFFIX}`, `*${TRACE_SUFFIX}`]
|
||||
}).then((it) => {
|
||||
let node: IProcessingNode = null;
|
||||
while (node = it.next()) {
|
||||
unlink(node.path);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
static async begin(url: string, options: Options) {
|
||||
|
||||
const browser = await launch({
|
||||
headless: options.headless,
|
||||
devtools: false
|
||||
});
|
||||
return await browser.newPage();
|
||||
}
|
||||
static async crawler(url: string, options?: Options) {
|
||||
|
||||
const page = await this.begin(url, options);
|
||||
|
||||
}
|
||||
static async repl(url: string, options?: Options) {
|
||||
|
||||
const page = await this.begin(url, options);
|
||||
page.on('console', msg => inspect('Console Message:', msg.text()));
|
||||
|
||||
await page.goto(url, {
|
||||
timeout: 600000,
|
||||
waitUntil: 'networkidle0'
|
||||
});
|
||||
|
||||
const readline = rl(`${url}#`, (line: string) => {
|
||||
page.evaluate(line).then((results) => {
|
||||
inspect(`Did evaluate ${line} to `, results);
|
||||
})
|
||||
}, () => this.end(page));
|
||||
}
|
||||
|
||||
|
||||
static async end(page: Page) {
|
||||
|
||||
const browser = await page.browser();
|
||||
await page.close();
|
||||
await browser.close();
|
||||
}
|
||||
|
||||
static async summary(url: string, options?: Options) {
|
||||
|
||||
const browser = await launch({
|
||||
headless: options.headless,
|
||||
devtools: true
|
||||
});
|
||||
const page = await browser.newPage();
|
||||
await page.goto(url, {
|
||||
timeout: 600000,
|
||||
waitUntil: 'networkidle0'
|
||||
});
|
||||
const metrics = await page.metrics();
|
||||
await this.end(page);
|
||||
return metrics;
|
||||
}
|
||||
|
||||
static async detail(url: string, options?: Options) {
|
||||
|
||||
const network_stats = report();
|
||||
const ReceivedTotal = get_report(network_stats, 'Received Total');
|
||||
const ReceivedStyleSheets = get_report(network_stats, 'Received Stylesheets');
|
||||
const ReceivedScripts = get_report(network_stats, 'Received Scripts');
|
||||
const ReceivedHTML = get_report(network_stats, 'Received HTML');
|
||||
const ReceivedImages = get_report(network_stats, 'Received Images');
|
||||
const ReceivedJSON = get_report(network_stats, 'Received JSON');
|
||||
const ReceivedFonts = get_report(network_stats, 'Received Fonts');
|
||||
const ReceivedBinary = get_report(network_stats, 'Received Binary');
|
||||
const MimeMap = {
|
||||
'application/javascript': ReceivedScripts,
|
||||
'text/javascript': ReceivedScripts,
|
||||
'text/css': ReceivedStyleSheets,
|
||||
'text/html': ReceivedHTML,
|
||||
'image/png': ReceivedImages,
|
||||
'image/gif': ReceivedImages,
|
||||
'image/svg+xml': ReceivedImages,
|
||||
'application/json': ReceivedJSON,
|
||||
'application/octet-stream': ReceivedBinary,
|
||||
'font/woff2': ReceivedFonts,
|
||||
'application/font-woff2': ReceivedFonts
|
||||
}
|
||||
|
||||
const traceFile = default_trace_path(options.cwd, url);
|
||||
|
||||
const page = await this.begin(url, options);
|
||||
await page.tracing.start({
|
||||
path: traceFile,
|
||||
categories: included_categories
|
||||
});
|
||||
await page.goto(url, {
|
||||
timeout: 600000,
|
||||
waitUntil: 'networkidle0'
|
||||
});
|
||||
const metrics = await (page as any)._client.send('Performance.getMetrics');
|
||||
const nowTs = new Date().getTime();
|
||||
// const navigationStart = getTimeFromMetrics(metrics, 'NavigationStart');
|
||||
const navigationStart = find_time(metrics, 'Timestamp') + nowTs;
|
||||
await page.tracing.stop();
|
||||
|
||||
// --- extracting data from trace.json ---
|
||||
const tracing = JSON.parse(readFileSync(traceFile, 'utf8'));
|
||||
|
||||
const dataReceivedEvents = tracing.traceEvents.filter(x => x.name === 'ResourceReceivedData');
|
||||
const dataResponseEvents = tracing.traceEvents.filter(x => x.name === 'ResourceReceiveResponse');
|
||||
|
||||
// find resource in responses or return default empty
|
||||
const content_response = (requestId: string): TraceEntry => dataResponseEvents.find((x) =>
|
||||
x.args.data.requestId === requestId)
|
||||
|| { args: { data: { encodedDataLength: 0 } } };
|
||||
|
||||
const report_per_mime = (mime: string): NetworkReportEntry => MimeMap[mime] || get_report(network_stats, mime);
|
||||
|
||||
// our iteration over the trace
|
||||
// @TODO: convert to a better tree structure to avoid O(n) lookups
|
||||
// @TODO: emit to extensions: events & aspects
|
||||
// @TODO: calculate times
|
||||
// @TODO: filter
|
||||
// @TODO: options.mask
|
||||
// @TODO: this iterator might get async
|
||||
ReceivedTotal.value = dataReceivedEvents.reduce((first, x) => {
|
||||
const content = content_response(x.args.data.requestId);
|
||||
const data = content.args.data;
|
||||
const report = report_per_mime(data.mimeType);
|
||||
if (data.fromCache === false) {
|
||||
report.value += x.args.data.encodedDataLength
|
||||
report.count++;
|
||||
} else {
|
||||
report.cached_count++;
|
||||
}
|
||||
ReceivedTotal.count++;
|
||||
return first + x.args.data.encodedDataLength;
|
||||
}, ReceivedTotal.value);
|
||||
|
||||
// calulate finals
|
||||
[ReceivedTotal, ReceivedHTML, ReceivedImages, ReceivedJSON,
|
||||
ReceivedScripts, ReceivedFonts, ReceivedBinary
|
||||
].forEach((r) => r.formatted = sizeToString(r.value))
|
||||
|
||||
// --- end extracting data from trace.json ---
|
||||
|
||||
let results = [];
|
||||
|
||||
// lights off
|
||||
await this.end(page);
|
||||
|
||||
return {
|
||||
times: [],
|
||||
network: network_stats
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,176 +0,0 @@
|
||||
import { Page, Request, Response } from 'puppeteer';
|
||||
import { sessionName, maxSessionWaitingTime, defaultPageOptions, userSessionsTab } from './constants';
|
||||
import * as debug from '../../log';
|
||||
import { Scope } from './Scope';
|
||||
import { parse } from 'url';
|
||||
import { navigateToUserSessions } from './processes';
|
||||
|
||||
const debugRequests = true;
|
||||
const debugResponses = false;
|
||||
export const default_postdata = (request: Request): any => request.postData && request.postData() || {};
|
||||
export type ResponseMatch = (request: any) => boolean;
|
||||
export const HasUserSessions = (request: Request) => (default_postdata(request).users)
|
||||
export const MyUserSessions = (url: string, request: Request) => SessionWithName(request, sessionName(url));
|
||||
export const SessionWithName = (request: Request, name: string) => {
|
||||
const data = default_postdata(request).users || [];
|
||||
return data.find((user: any) => user.id === name)
|
||||
}
|
||||
export type ResponseResolve = Response & {
|
||||
data: any;
|
||||
}
|
||||
const default_prepare = (requests: Request[]): Request[] => {
|
||||
return requests;
|
||||
};
|
||||
|
||||
const default_filter_json = (r: Request) => ((r.headers()['content-type'] || '').startsWith('application/json;')) === true;
|
||||
const responses = async function (requests: Request[]) { return Promise.all(requests.map(r => r.response()!.json())) };
|
||||
|
||||
export const findRequest = (url: string, requests: Request[], match?: ResponseMatch): Request[] => {
|
||||
url = decodeURIComponent(url);
|
||||
if (!match) {
|
||||
return requests.filter((request) => request.url().indexOf(url) !== -1);
|
||||
} else {
|
||||
const results = requests.filter((request) => request.url().indexOf(url) !== -1);
|
||||
return results.filter((r) => match!(r));
|
||||
}
|
||||
}
|
||||
|
||||
export function waitForResponse(url: string, scope: Scope, match: ResponseMatch, timeout: number = 5000): Promise<any[]> {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
try {
|
||||
|
||||
let requests = default_prepare(scope.requests).filter(default_filter_json).filter(r => r.response() != null);
|
||||
requests = requests.filter((request) => request.url().indexOf(url) !== -1);
|
||||
responses(requests).then((responses) => {
|
||||
const ret = responses.filter(match);
|
||||
if (ret.length) {
|
||||
resolve(ret);
|
||||
} else {
|
||||
reject('cant find anything yet');
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
debug.error('waitForResponse Error ', error);
|
||||
}
|
||||
}, timeout);
|
||||
})
|
||||
}
|
||||
export function waitForResponseNTimes(url: string, scope: Scope, match: ResponseMatch, timeout: number = 5000) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const maxTime = maxSessionWaitingTime;
|
||||
const retryTime = 8000;
|
||||
let reachedTimeOut = false;
|
||||
let interval: any = null;
|
||||
interval = setInterval(() => {
|
||||
if (reachedTimeOut) {
|
||||
clearInterval(interval);
|
||||
debug.error('reached max');
|
||||
reject('reached maximum timeout');
|
||||
return;
|
||||
}
|
||||
onReload(scope).then(() => {
|
||||
scope.page.reload().then(() => {
|
||||
debug.info('retry ');
|
||||
waitForResponse(url, scope, match, retryTime).then((session) => {
|
||||
debug.inspect('got my session', session);
|
||||
clearInterval(interval);
|
||||
resolve(session);
|
||||
}).catch((e) => {
|
||||
debug.error('found nothing');
|
||||
})
|
||||
}).catch((e) => {
|
||||
console.error('error loading page : ', e);
|
||||
});
|
||||
});
|
||||
}, retryTime);
|
||||
|
||||
|
||||
setTimeout(() => {
|
||||
reachedTimeOut = true;
|
||||
clearInterval(interval);
|
||||
reject('max timeout reached');
|
||||
}, maxTime);
|
||||
});
|
||||
};
|
||||
|
||||
export async function capture_request(where: any[], request: Request) {
|
||||
debugRequests && debug.inspect('Request', { url: request.url(), data: request.postData() });
|
||||
where.push({ url: request.url(), data: await request.postData(), request: request });
|
||||
debugRequests && debug.inspect('requests', where.map(r => r.url));
|
||||
}
|
||||
|
||||
export async function capture_response(where: any[], response: Response) {
|
||||
debugResponses && debug.inspect('Response', { url: response.url(), data: await response.json() });
|
||||
where.push(response);
|
||||
}
|
||||
|
||||
export async function capture_requests(scope: Scope, page: Page) {
|
||||
|
||||
await page.setRequestInterception(true);
|
||||
|
||||
scope.requests = [];
|
||||
page.on('request', (interceptedRequest: Request) => {
|
||||
|
||||
if(scope.onRequest){
|
||||
scope.onRequest(interceptedRequest, scope);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const url = decodeURIComponent(interceptedRequest.url());
|
||||
const parsed = parse(url, true);
|
||||
if (url.includes('.css') || url.includes('.svg')) {
|
||||
interceptedRequest.abort();
|
||||
return;
|
||||
|
||||
}
|
||||
const query = parsed.query;
|
||||
const isJson = (interceptedRequest.headers()['content-type'] || '').startsWith('application/json') === true;
|
||||
if (isJson) {
|
||||
// capture_request(scope.requests, interceptedRequest);
|
||||
//debugRequests && debug.inspect('q ' + query['contentType'] + ' ' + url);
|
||||
}
|
||||
interceptedRequest.continue();
|
||||
} catch (e) {
|
||||
debug.error('error parsing request ', e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export async function capture_responses(scope: Scope, page: Page) {
|
||||
try {
|
||||
// await page.setRequestInterception(true);
|
||||
} catch (e) {
|
||||
debug.error('error intercepting responses', e);
|
||||
}
|
||||
scope.responses = [];
|
||||
page.on('response', response => {
|
||||
try {
|
||||
const isJson = (response.headers()['content-type'] || '').startsWith('application/json;') === true;
|
||||
const url = response.url();
|
||||
|
||||
if (response.status() === 200) {
|
||||
if (isJson) {
|
||||
capture_response(scope.responses, response);
|
||||
}
|
||||
if (scope.onResponse) {
|
||||
scope.onResponse(response, scope);
|
||||
}
|
||||
} else {
|
||||
debugResponses && debug.error(`Error loading ${url} : ${response.status()}`);
|
||||
}
|
||||
} catch (e) {
|
||||
debugResponses && debug.error('Error parsing response');
|
||||
}
|
||||
});
|
||||
}
|
||||
export async function onReload(scope: Scope) {
|
||||
scope.requests = [];
|
||||
try {
|
||||
await scope.page.setRequestInterception(false);
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
await scope.page.setRequestInterception(true);
|
||||
}
|
||||
@ -1,78 +0,0 @@
|
||||
import { Page, Request } from 'puppeteer';
|
||||
import { Options } from './types';
|
||||
import { loginUrl, defaultPageOptions, userSessionsTab, loginUrlDemoDev } from './constants';
|
||||
|
||||
export async function loginFrontEnd(page: Page, options: Options) {
|
||||
// await page.goto(loginUrl(options.dynatraceUrl), defaultPageOptions());
|
||||
await page.type('#user', 'admin');
|
||||
await page.type('#password', 'admin');
|
||||
await page.click('#login-form > .maindiv > .logindiv > .submitdiv > .button');
|
||||
await page.waitForSelector('.tenant-selector');
|
||||
await page.click('.textboxdiv > .tenant-selector:nth-child(2)');
|
||||
}
|
||||
|
||||
export async function loginDemoDev(page: Page, options: Options) {
|
||||
await page.goto(loginUrlDemoDev(), defaultPageOptions());
|
||||
await page.type('#IDToken1', 'guenter.baumgart@ruxit.com');
|
||||
await page.click('.maindiv > .logindiv > form > div > #formsubmit');
|
||||
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(1);
|
||||
console.log('time out');
|
||||
}, 20 * 1000)
|
||||
});
|
||||
|
||||
console.log('logged in 1/2!');
|
||||
|
||||
|
||||
/*
|
||||
const puppeteer = require('puppeteer');
|
||||
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch()
|
||||
const page = await browser.newPage()
|
||||
|
||||
await page.waitForSelector('.logindiv > form > .textboxdiv > .emailLoginIcon > #IDToken1')
|
||||
await page.click('.logindiv > form > .textboxdiv > .emailLoginIcon > #IDToken1')
|
||||
|
||||
await page.waitForSelector('.maindiv > .logindiv > form > div > #formsubmit')
|
||||
await page.click('.maindiv > .logindiv > form > div > #formsubmit')
|
||||
|
||||
const navigationPromise = page.waitForNavigation()
|
||||
await navigationPromise
|
||||
|
||||
await page.waitForSelector('.logindiv > form > .margin-bottom\3A > .passwordIcon > #IDToken2')
|
||||
await page.click('.logindiv > form > .margin-bottom\3A > .passwordIcon > #IDToken2')
|
||||
|
||||
await page.waitForSelector('.logindiv > form > fieldset > div > #IDToken3')
|
||||
await page.click('.logindiv > form > fieldset > div > #IDToken3')
|
||||
|
||||
await page.waitForSelector('form > fieldset > #button-base > div > #loginButton_0')
|
||||
await page.click('form > fieldset > #button-base > div > #loginButton_0')
|
||||
|
||||
await navigationPromise
|
||||
|
||||
await navigationPromise
|
||||
|
||||
await navigationPromise
|
||||
|
||||
await browser.close()
|
||||
})()
|
||||
*/
|
||||
|
||||
//await page.type('#password', 'admin');
|
||||
//await page.click('#login-form > .maindiv > .logindiv > .submitdiv > .button');
|
||||
//await page.waitForSelector('.tenant-selector');
|
||||
//await page.click('.textboxdiv > .tenant-selector:nth-child(2)');
|
||||
}
|
||||
|
||||
export async function navigateToUserSessions(page: Page, options: Options) {
|
||||
// await page.goto(userSessionsTab(options.dynatraceUrl), defaultPageOptions());
|
||||
}
|
||||
|
||||
|
||||
export async function navigateToUserLocalhost(page: Page, options?: Options) {
|
||||
// await page.goto('http://localhost/', defaultPageOptions());
|
||||
}
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
import { NetworkReportEntry } from './types';
|
||||
const report_item = (name: string): NetworkReportEntry => {
|
||||
return {
|
||||
name: name,
|
||||
value: 0,
|
||||
formatted: '',
|
||||
count: 0,
|
||||
cached_count: 0,
|
||||
external_count: 0,
|
||||
local_count: 0,
|
||||
times: {
|
||||
end: 0,
|
||||
formatted: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const report = () => {
|
||||
return [
|
||||
report_item('Received Total'),
|
||||
report_item('Received Stylesheets'),
|
||||
report_item('Received Scripts'),
|
||||
report_item('Received HTML'),
|
||||
report_item('Received JSON'),
|
||||
report_item('Received Images'),
|
||||
report_item('Received Fonts'),
|
||||
report_item('Received Binary')
|
||||
]
|
||||
}
|
||||
|
||||
export const find_report = (where: any[], name: string) => where.find((media) => media.name === name);
|
||||
|
||||
export const get_report = (where: any[], type: string) => {
|
||||
let record = find_report(where, type);
|
||||
if (!record) {
|
||||
record = report_item(type);
|
||||
where.push(record);
|
||||
}
|
||||
return record;
|
||||
}
|
||||
@ -1,31 +0,0 @@
|
||||
import { createInterface, ReadLine } from 'readline';
|
||||
import { Page } from 'puppeteer';
|
||||
import chalk from 'chalk';
|
||||
|
||||
|
||||
|
||||
export const rl = (prompt: string, onLine?: (line: string) => void, onClose?: () => {}) => {
|
||||
const rl = createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout,
|
||||
prompt: chalk.green(prompt)
|
||||
})
|
||||
console.log('start stdin: ' + prompt);
|
||||
rl.prompt()
|
||||
rl.on('line', (line) => {
|
||||
if(!line){
|
||||
return;
|
||||
}
|
||||
try {
|
||||
onLine(line);
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
rl.prompt()
|
||||
}
|
||||
})
|
||||
rl.on('close', () => {
|
||||
rl.close()
|
||||
onClose();
|
||||
});
|
||||
return rl;
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
import { TraceEntry } from './types'
|
||||
export const end_time = (entry: TraceEntry): number => {
|
||||
const timing = entry.args.data.timing;
|
||||
const start = timing.requestTime;
|
||||
const received = entry.ts;
|
||||
//it might be more accurate to calc this with the header times
|
||||
const headersReceived = start + timing.receiveHeadersEnd / 1000;
|
||||
let responseReceived = headersReceived;
|
||||
responseReceived = Math.min(responseReceived, headersReceived);
|
||||
responseReceived = Math.max(responseReceived, start);
|
||||
return Math.max(-1, responseReceived);
|
||||
}
|
||||
@ -1,57 +0,0 @@
|
||||
import { NetworkReportEntry, TraceEntry } from "./types";
|
||||
|
||||
export const find_time = (metrics, name) =>
|
||||
metrics.metrics.find(x => x.name === name).value;
|
||||
|
||||
export const all_with_name = (where: NetworkReportEntry[], name: string) =>
|
||||
where.filter((entry) => entry.name === name);
|
||||
|
||||
/*
|
||||
export const tree = (entries: TraceEntry[]) => {
|
||||
const tasks = [];
|
||||
let currentTask;
|
||||
|
||||
for (const event of entries) {
|
||||
// Only look at X (Complete), B (Begin), and E (End) events as they have most data
|
||||
if (event.ph !== 'X' && event.ph !== 'B' && event.ph !== 'E') continue;
|
||||
|
||||
// Update currentTask based on the elapsed time.
|
||||
// The next event may be after currentTask has ended.
|
||||
while (
|
||||
currentTask &&
|
||||
Number.isFinite(currentTask.endTime) &&
|
||||
currentTask.endTime <= event.ts
|
||||
) {
|
||||
currentTask = currentTask.parent;
|
||||
}
|
||||
|
||||
if (!currentTask) {
|
||||
// We can't start a task with an end event
|
||||
if (event.ph === 'E') {
|
||||
throw new Error('Fatal trace logic error');
|
||||
}
|
||||
|
||||
currentTask = entries._createNewTaskNode(event);
|
||||
tasks.push(currentTask);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (event.ph === 'X' || event.ph === 'B') {
|
||||
// We're starting a nested event, create it as a child and make it the currentTask
|
||||
const newTask = entries._createNewTaskNode(event, currentTask);
|
||||
tasks.push(newTask);
|
||||
currentTask = newTask;
|
||||
} else {
|
||||
if (currentTask.event.ph !== 'B') {
|
||||
throw new Error('Fatal trace logic error');
|
||||
}
|
||||
|
||||
// We're ending an event, update the end time and the currentTask to its parent
|
||||
currentTask.endTime = event.ts;
|
||||
currentTask = currentTask.parent;
|
||||
}
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
*/
|
||||
@ -1,124 +0,0 @@
|
||||
/////////////////////////////////////////////////////
|
||||
//
|
||||
// Application types
|
||||
//
|
||||
export enum OutputTarget {
|
||||
STDOUT = 'console',
|
||||
FILE = 'file'
|
||||
}
|
||||
|
||||
export enum OutputFormat {
|
||||
text = 'text',
|
||||
json = 'json'
|
||||
}
|
||||
|
||||
export interface Options {
|
||||
// @TODO: support many
|
||||
url?: string;
|
||||
format?: OutputFormat;
|
||||
// @TODO: support many
|
||||
target?: OutputTarget;
|
||||
headless?: boolean;
|
||||
// output path
|
||||
path?: string;
|
||||
// @TODO: required to pick profile/config files
|
||||
cwd?: string;
|
||||
// @TODO: time of sesssion, mapped to Puppeteer waitUntil, if it's a number, the session will be opened for that
|
||||
// time window, time=-1 means infinity, useful for repl. sessions
|
||||
time?: number;
|
||||
// @TODO: reload interval
|
||||
reload?: number;
|
||||
// @TODO: repl. --repl=true=interactive or repl=path to specify script
|
||||
repl?: string | boolean;
|
||||
// TODO: colored ouput
|
||||
colors?: boolean;
|
||||
}
|
||||
|
||||
// options for certain categories as network, rendering,...
|
||||
export interface OptionEx {
|
||||
include?: string | string[];
|
||||
exclude?: string | string[];
|
||||
query?: string | string[];
|
||||
}
|
||||
|
||||
export type OptionsEx = Options & {
|
||||
launchOptions?: {
|
||||
// puppeteer launch options
|
||||
}
|
||||
waitOptions?: {
|
||||
// puppeteer wait options: wait for selector,...
|
||||
}
|
||||
replOptions?: {
|
||||
script?: string;
|
||||
}
|
||||
}
|
||||
|
||||
export type OutputResult = boolean;
|
||||
|
||||
export interface ReportEntry {
|
||||
name: string;
|
||||
}
|
||||
|
||||
export type NetworkReportEntry = ReportEntry & {
|
||||
value: number;
|
||||
formatted: string;
|
||||
count: number;
|
||||
cached_count: number;
|
||||
external_count: number;
|
||||
local_count: number;
|
||||
times?: {
|
||||
end: number,
|
||||
formatted: string;
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//
|
||||
// Foreign data types (trace data)
|
||||
//
|
||||
|
||||
// type for a network resource's timing
|
||||
export interface TraceTiming {
|
||||
requestTime: number;
|
||||
proxyStart: number;
|
||||
proxyEnd: number;
|
||||
dnsStart: number;
|
||||
dnsEnd: number;
|
||||
connectStart: number;
|
||||
connectEnd: number;
|
||||
sslStart: number;
|
||||
sslEnd: number;
|
||||
workerStart: number;
|
||||
workerReady: number;
|
||||
sendStart: number;
|
||||
sendEnd: number;
|
||||
receiveHeadersEnd: number;
|
||||
pushStart: number;
|
||||
pushEnd: number;
|
||||
}
|
||||
|
||||
export interface TraceData {
|
||||
requestId: string;
|
||||
frame: string;
|
||||
statusCode: number;
|
||||
mimeType: string;
|
||||
encodedDataLength: number;
|
||||
fromCache: boolean;
|
||||
fromServiceWorker: boolean;
|
||||
timing: TraceTiming;
|
||||
}
|
||||
export interface TraceArgs {
|
||||
data: TraceData;
|
||||
}
|
||||
|
||||
export interface TraceEntry {
|
||||
pid: number;
|
||||
tid: number;
|
||||
ts: number;
|
||||
ph: string; // B: begin, | E: end; For async events: S: start, F: finish
|
||||
cat: string;
|
||||
name: string;
|
||||
args: TraceArgs;
|
||||
tts: number;
|
||||
s: string;
|
||||
}
|
||||
@ -1 +1 @@
|
||||
export { reportCSV } from './csv'
|
||||
export { reportCSV } from './csv.js'
|
||||
@ -3,15 +3,14 @@ import * as path from 'path'
|
||||
|
||||
import {
|
||||
SolidworkOptions,
|
||||
SlicerOptions,
|
||||
logger
|
||||
} from './'
|
||||
SlicerOptions
|
||||
} from './types.js'
|
||||
|
||||
import { pathInfo, resolve } from "@plastichub/osr-commons"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
import { sync as exists } from "@plastichub/fs/exists"
|
||||
import { pathInfo, resolve } from "@polymech/commons"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
import { sync as exists } from "@polymech/fs/exists"
|
||||
|
||||
import { substitute } from './'
|
||||
import { substitute, logger } from './index.js'
|
||||
|
||||
export const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('src', {
|
||||
@ -71,7 +70,7 @@ export const sanitizeSingle = (argv: CLI.Arguments): SolidworkOptions => {
|
||||
}
|
||||
}
|
||||
}
|
||||
const args: any = {
|
||||
const args: any = {
|
||||
src: src,
|
||||
dst: '' + argv.dst as string,
|
||||
report: argv.report ? path.resolve(argv.report as string) : null,
|
||||
@ -208,11 +207,9 @@ export const sanitize = (argv: any): SlicerOptions => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (argv.log) {
|
||||
args.log = path.resolve(substitute(args.alt, args.log, args.variables))
|
||||
args.log = path.resolve(substitute(args.log, args.alt, args.variables))
|
||||
}
|
||||
|
||||
return args
|
||||
}
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import * as CLI from 'yargs'
|
||||
import * as path from 'path'
|
||||
|
||||
import { substitute } from "@plastichub/core/strings"
|
||||
import { resolve, forward_slash, pathInfo } from "@plastichub/osr-commons"
|
||||
import { sync as read } from "@plastichub/fs/read"
|
||||
|
||||
import { SolidworkOptions, logger } from './'
|
||||
import { DEFAULT_REPORT } from './constants'
|
||||
import { substitute } from "@polymech/core/strings"
|
||||
import { resolve, forward_slash, pathInfo } from "@polymech/commons"
|
||||
import { sync as read } from "@polymech/fs/read"
|
||||
import { logger } from './index.js'
|
||||
import { SolidworkOptions } from './index.js'
|
||||
import { DEFAULT_REPORT } from './constants.js'
|
||||
|
||||
export const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('src', {
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using SolidWorks.Interop.sldworks;
|
||||
using SolidWorks.Interop.swconst;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class TreeItem
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public List<TreeItem> Children { get; set; }
|
||||
}
|
||||
|
||||
public string CreateAssemblyTreeJson(string filePath)
|
||||
{
|
||||
SldWorks swApp = new SldWorks();
|
||||
ModelDoc2 swModel = swApp.OpenDoc6(filePath, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", 0, 0);
|
||||
AssemblyDoc swAssembly = (AssemblyDoc)swModel;
|
||||
|
||||
TreeItem root = new TreeItem();
|
||||
root.Name = swModel.GetTitle();
|
||||
|
||||
List<TreeItem> children = new List<TreeItem>();
|
||||
TraverseComponents(swAssembly.GetComponents(false), children);
|
||||
root.Children = children;
|
||||
|
||||
swApp.CloseDoc(swModel.GetTitle());
|
||||
|
||||
return JsonConvert.SerializeObject(root);
|
||||
}
|
||||
|
||||
private void TraverseComponents(Component2[] components, List<TreeItem> parentList)
|
||||
{
|
||||
foreach (Component2 component in components)
|
||||
{
|
||||
TreeItem item = new TreeItem();
|
||||
item.Name = component.Name2;
|
||||
|
||||
if (component.GetChildrenCount() > 0)
|
||||
{
|
||||
List<TreeItem> children = new List<TreeItem>();
|
||||
TraverseComponents(component.GetChildren(), children);
|
||||
item.Children = children;
|
||||
}
|
||||
|
||||
parentList.Add(item);
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
import { PATH_INFO } from "@plastichub/osr-commons"
|
||||
import { PATH_INFO } from "@polymech/commons"
|
||||
|
||||
export interface IOptionsCache {
|
||||
cache?: boolean
|
||||
|
||||
Loading…
Reference in New Issue
Block a user