import { Arc2d,Point2d } from "./base/CAD" import type { PlaceMaterial } from "../confClass" export function getMaterialSealEdge(pm: PlaceMaterial) { let ext = 30 // 每条边 浪费的长度 let fbs = [] for (let block of pm.blockList) { if (!block.isUnRegular) { pushLength(block.sealLeft, block.length) pushLength(block.sealRight, block.length) pushLength(block.sealBottom, block.width) pushLength(block.sealTop, block.width) } else { for (let i = 0; i < block.orgPoints.length; i++) { let p1 = block.orgPoints[i] if (Math.abs(p1.sealSize) < 0.001) continue let j = i + 1 if (j == block.orgPoints.length) j = 0 let p2 = block.orgPoints[j] let len = 0 if (p1.curve == 0) { len = Math.sqrt((p1.pointX - p2.pointX) * (p1.pointX - p2.pointX) + (p1.pointY - p2.pointY) * (p1.pointY - p2.pointY)) } else { let arc = new Arc2d(new Point2d(p1.pointX, p1.pointY), new Point2d(p2.pointX, p2.pointY), p1.curve) len = Math.abs(arc.m_Radius * arc.m_AllAngle) } pushLength(p1.sealSize, len) } } } let rlfbs = [] // 转换成米 for (let key in fbs) { let rt = fbs[key] rt.l = Math.ceil(rt.l / 100) / 10 rlfbs.push(rt) } return rlfbs function pushLength(fb: number, len: number) { if (Math.abs(fb) < 0.001) return// let str = fb.toFixed(2) let sul = fbs[str] if (sul == null) { sul = { t: fb, l: 0 } fbs[str] = sul } sul.l += len + ext } }