|
|
@ -193,6 +193,11 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
const kjlConfig = userConfig.kjlConfig;
|
|
|
|
const kjlConfig = userConfig.kjlConfig;
|
|
|
|
let [pls, edgesBandings] = ParsePathOutlineAndHole(bmodel.paramPlankPath.path, edgeBandingAll, drillData);
|
|
|
|
let [pls, edgesBandings] = ParsePathOutlineAndHole(bmodel.paramPlankPath.path, edgeBandingAll, drillData);
|
|
|
|
|
|
|
|
for (let p of bmodel.paramPlankPath.holes)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let [pls2] = ParsePathOutlineAndHole(p);
|
|
|
|
|
|
|
|
pls.push(...pls2);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let br = new Board();
|
|
|
|
let br = new Board();
|
|
|
|
br.Name = model.modelName;
|
|
|
|
br.Name = model.modelName;
|
|
|
@ -434,7 +439,7 @@ function ParseDrilling(params: KJL_Parameter[]): KJL_DrillData | undefined
|
|
|
|
* 分析Path的外轮廓和内网洞
|
|
|
|
* 分析Path的外轮廓和内网洞
|
|
|
|
* @param path
|
|
|
|
* @param path
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function ParsePathOutlineAndHole(path: KJL_Path, edgeBandingAll: number[], drillData: KJL_DrillData): [Polyline[], number[][]]
|
|
|
|
function ParsePathOutlineAndHole(path: KJL_Path, edgeBandingAll?: number[], drillData?: KJL_DrillData): [Polyline[], number[][]]
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let fuzzP = new FuzzPoint();
|
|
|
|
let fuzzP = new FuzzPoint();
|
|
|
|
let ptsAll = path.resultPoints.map(p => fuzzP.GetVector(p));
|
|
|
|
let ptsAll = path.resultPoints.map(p => fuzzP.GetVector(p));
|
|
|
@ -474,6 +479,7 @@ function ParsePathOutlineAndHole(path: KJL_Path, edgeBandingAll: number[], drill
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let jplus = j++;
|
|
|
|
let jplus = j++;
|
|
|
|
ptsAll[jplus] = ptsAll[i];
|
|
|
|
ptsAll[jplus] = ptsAll[i];
|
|
|
|
|
|
|
|
radiusAll[jplus] = radiusAll[i];
|
|
|
|
if (edgeBandingAll)
|
|
|
|
if (edgeBandingAll)
|
|
|
|
edgeBandingAll[jplus] = edgeBandingAll[i];
|
|
|
|
edgeBandingAll[jplus] = edgeBandingAll[i];
|
|
|
|
if (drillData?.drillSides)
|
|
|
|
if (drillData?.drillSides)
|
|
|
@ -484,6 +490,7 @@ function ParsePathOutlineAndHole(path: KJL_Path, edgeBandingAll: number[], drill
|
|
|
|
edgeBandingAll.length = j;
|
|
|
|
edgeBandingAll.length = j;
|
|
|
|
if (drillData?.drillSides)
|
|
|
|
if (drillData?.drillSides)
|
|
|
|
drillData.drillSides.length = j;;
|
|
|
|
drillData.drillSides.length = j;;
|
|
|
|
|
|
|
|
radiusAll.length = j;
|
|
|
|
|
|
|
|
|
|
|
|
let polylines: Polyline[] = [];
|
|
|
|
let polylines: Polyline[] = [];
|
|
|
|
let edgeBandings: number[][] = [];
|
|
|
|
let edgeBandings: number[][] = [];
|
|
|
@ -568,7 +575,7 @@ function Radius2Buls(pts: Vector2[], radiuss: number[]): number[]
|
|
|
|
buls.push(0);
|
|
|
|
buls.push(0);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let nextIndex = FixIndex(i + 1, radiuss.length);
|
|
|
|
let nextIndex = FixIndex(i + 1, pts);
|
|
|
|
let dist = pts[i].distanceTo(pts[nextIndex]) * 0.5;
|
|
|
|
let dist = pts[i].distanceTo(pts[nextIndex]) * 0.5;
|
|
|
|
let bul = Math.tan(0.5 * Math.asin(dist / Math.abs(radius))) * Math.sign(radius);
|
|
|
|
let bul = Math.tan(0.5 * Math.asin(dist / Math.abs(radius))) * Math.sign(radius);
|
|
|
|
buls.push(bul);
|
|
|
|
buls.push(bul);
|
|
|
|