支持返回空
This commit is contained in:
parent
13b169882b
commit
bdb033f410
23
api.cjs.js
23
api.cjs.js
@ -23207,8 +23207,15 @@ NestCache.NoPutCache = {};
|
||||
NestCache.CacheRect = new Map();
|
||||
|
||||
const TEXT_BOX = NestCache.CreatePath(570, 110);
|
||||
//分析文字放置位置
|
||||
function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
/**
|
||||
* 分析文字放置位置
|
||||
* @param contour 轮廓点表
|
||||
* @param holes 网洞点表
|
||||
* @param [textBox=TEXT_BOX] 标签盒子
|
||||
* @param [allowReturnNullPos=false] 允许返回null 当没有找到合适的位置返回null
|
||||
* @returns Vector3
|
||||
*/
|
||||
function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX, allowReturnNullPos = false) {
|
||||
let hasTextBox = true;
|
||||
let path = new Path(contour);
|
||||
let nfps = path.GetInsideNFP(textBox)?.map(nfp => Path2Polyline(PathTranslate_Self(PathScale(nfp, 1e-4), path.OrigionMinPoint.x, path.OrigionMinPoint.y))); //可能无法获得
|
||||
@ -23216,7 +23223,7 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
nfps = [Path2Polyline(contour)];
|
||||
hasTextBox = false;
|
||||
}
|
||||
let holenfps = [];
|
||||
let holeNFPs = [];
|
||||
for (let hole of holes) {
|
||||
let hpath = new Path(hole);
|
||||
let nfps = hpath.GetOutsideNFP(textBox);
|
||||
@ -23226,11 +23233,11 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
let boxpl = new exports.Polyline().RectangleFrom2Pt(new three.Vector3(box.min.x - 1e5, box.min.y - 1), new three.Vector3(box.max.x + 1e5, box.min.y + 1));
|
||||
let con1 = Contour.CreateContour(pl, false);
|
||||
let con2 = Contour.CreateContour(boxpl, false);
|
||||
holenfps.push(...con1.UnionBoolOperation(con2).contours);
|
||||
holeNFPs.push(...con1.UnionBoolOperation(con2).contours);
|
||||
}
|
||||
let shapes = nfps.map(pl => new Shape(Contour.CreateContour(pl, false)));
|
||||
let subShapes = new ShapeManager;
|
||||
holenfps.forEach(pl => {
|
||||
holeNFPs.forEach(pl => {
|
||||
subShapes.UnionBoolOperation(new ShapeManager([new Shape(pl)]));
|
||||
});
|
||||
let resShapes = [];
|
||||
@ -23238,8 +23245,12 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
// TestDraw(shape.Outline.Curve, 6);
|
||||
resShapes.push(...shape.SubstactBoolOperation(subShapes.ShapeList)); //可能减完丢了
|
||||
}
|
||||
if (resShapes.length === 0)
|
||||
if (resShapes.length === 0) {
|
||||
//允许返回空的点 因为无法放置
|
||||
if (allowReturnNullPos)
|
||||
return;
|
||||
resShapes = shapes;
|
||||
}
|
||||
let maxDist = -Infinity;
|
||||
let minp;
|
||||
for (let shape of resShapes) {
|
||||
|
File diff suppressed because one or more lines are too long
23
api.esm.js
23
api.esm.js
@ -23180,8 +23180,15 @@ NestCache.NoPutCache = {};
|
||||
NestCache.CacheRect = new Map();
|
||||
|
||||
const TEXT_BOX = NestCache.CreatePath(570, 110);
|
||||
//分析文字放置位置
|
||||
function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
/**
|
||||
* 分析文字放置位置
|
||||
* @param contour 轮廓点表
|
||||
* @param holes 网洞点表
|
||||
* @param [textBox=TEXT_BOX] 标签盒子
|
||||
* @param [allowReturnNullPos=false] 允许返回null 当没有找到合适的位置返回null
|
||||
* @returns Vector3
|
||||
*/
|
||||
function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX, allowReturnNullPos = false) {
|
||||
let hasTextBox = true;
|
||||
let path = new Path(contour);
|
||||
let nfps = path.GetInsideNFP(textBox)?.map(nfp => Path2Polyline(PathTranslate_Self(PathScale(nfp, 1e-4), path.OrigionMinPoint.x, path.OrigionMinPoint.y))); //可能无法获得
|
||||
@ -23189,7 +23196,7 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
nfps = [Path2Polyline(contour)];
|
||||
hasTextBox = false;
|
||||
}
|
||||
let holenfps = [];
|
||||
let holeNFPs = [];
|
||||
for (let hole of holes) {
|
||||
let hpath = new Path(hole);
|
||||
let nfps = hpath.GetOutsideNFP(textBox);
|
||||
@ -23199,11 +23206,11 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
let boxpl = new Polyline().RectangleFrom2Pt(new Vector3(box.min.x - 1e5, box.min.y - 1), new Vector3(box.max.x + 1e5, box.min.y + 1));
|
||||
let con1 = Contour.CreateContour(pl, false);
|
||||
let con2 = Contour.CreateContour(boxpl, false);
|
||||
holenfps.push(...con1.UnionBoolOperation(con2).contours);
|
||||
holeNFPs.push(...con1.UnionBoolOperation(con2).contours);
|
||||
}
|
||||
let shapes = nfps.map(pl => new Shape(Contour.CreateContour(pl, false)));
|
||||
let subShapes = new ShapeManager;
|
||||
holenfps.forEach(pl => {
|
||||
holeNFPs.forEach(pl => {
|
||||
subShapes.UnionBoolOperation(new ShapeManager([new Shape(pl)]));
|
||||
});
|
||||
let resShapes = [];
|
||||
@ -23211,8 +23218,12 @@ function ParseRegionTextPos(contour, holes, textBox = TEXT_BOX) {
|
||||
// TestDraw(shape.Outline.Curve, 6);
|
||||
resShapes.push(...shape.SubstactBoolOperation(subShapes.ShapeList)); //可能减完丢了
|
||||
}
|
||||
if (resShapes.length === 0)
|
||||
if (resShapes.length === 0) {
|
||||
//允许返回空的点 因为无法放置
|
||||
if (allowReturnNullPos)
|
||||
return;
|
||||
resShapes = shapes;
|
||||
}
|
||||
let maxDist = -Infinity;
|
||||
let minp;
|
||||
for (let shape of resShapes) {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,13 @@
|
||||
import { Vector3 } from "three";
|
||||
import { Point } from "../../../Nest/Common/Point";
|
||||
import { Path } from "../../../Nest/Core/Path";
|
||||
export declare function ParseRegionTextPos(contour: Point[], holes: (Point[])[], textBox?: Path): Vector3;
|
||||
/**
|
||||
* 分析文字放置位置
|
||||
* @param contour 轮廓点表
|
||||
* @param holes 网洞点表
|
||||
* @param [textBox=TEXT_BOX] 标签盒子
|
||||
* @param [allowReturnNullPos=false] 允许返回null 当没有找到合适的位置返回null
|
||||
* @returns Vector3
|
||||
*/
|
||||
export declare function ParseRegionTextPos(contour: Point[], holes: (Point[])[], textBox?: Path, allowReturnNullPos?: boolean): Vector3 | undefined;
|
||||
//# sourceMappingURL=ParseRegionTextPos.d.ts.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"ParseRegionTextPos.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Room/ParseService/ParseRegionTextPos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,OAAO,EAAE,IAAI,EAAiC,MAAM,yBAAyB,CAAC;AAS9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,OAAW,WAuG1F"}
|
||||
{"version":3,"file":"ParseRegionTextPos.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Room/ParseService/ParseRegionTextPos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAInD,OAAO,EAAE,IAAI,EAAiC,MAAM,yBAAyB,CAAC;AAQ9E;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,OAAW,EAAE,kBAAkB,UAAQ,GAAG,OAAO,GAAG,SAAS,CA2G5I"}
|
Loading…
Reference in New Issue
Block a user