|
|
|
@ -970,6 +970,7 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
|
const intersectBox = new Box3(new Vector3(0, 0, -dirllHeight), new Vector3(this.m_Face.Length, locaBoard.Thickness, intBoard.Thickness));
|
|
|
|
|
|
|
|
|
|
//localDrills放置的位置加入不可释放区间
|
|
|
|
|
//容差为预埋件的半径 + 2
|
|
|
|
|
if (this._AutoDeviation)
|
|
|
|
|
{
|
|
|
|
|
for (let drillent of refDrillList)
|
|
|
|
@ -977,9 +978,9 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
|
for (let dirll of drillent)
|
|
|
|
|
{
|
|
|
|
|
let box = (dirll.Object as Entity).GetBoundingBoxInMtx(this.m_Face.OCSInv);
|
|
|
|
|
if (box.intersectsBox(intersectBox))
|
|
|
|
|
if (box.intersect(intersectBox).isSolid())
|
|
|
|
|
{
|
|
|
|
|
let posSegment1D = [box.min.x - MinDrillDist, box.max.x + MinDrillDist] as Segment1d;
|
|
|
|
|
let posSegment1D = [box.min.x + this.m_Option.ymjRad - 2, box.max.x + this.m_Option.ymjRad + 2] as Segment1d;
|
|
|
|
|
this.m_Face.FixedInterval.push(posSegment1D);
|
|
|
|
|
//计算剩余可放置位置
|
|
|
|
|
this.m_Face.Segment1D = Segment1dSubtraction2(this.m_Face.Segment1D, [posSegment1D]);
|
|
|
|
@ -1000,7 +1001,8 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
|
refDrillList.push(...v.filter(ds => ds.length > 0 && ds[0].Object && !ds[0].IsErase));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//intDrills放置的位置加入不可释放区间 这边偷懒直接分析refDrillList
|
|
|
|
|
//intDrills放置的位置加入不可释放区间
|
|
|
|
|
//容差未连接杆的半径或偏心轮的半径最大值 + 2
|
|
|
|
|
if (this._AutoDeviation)
|
|
|
|
|
{
|
|
|
|
|
for (let drillent of refDrillList)
|
|
|
|
@ -1008,9 +1010,9 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
|
for (let dirll of drillent)
|
|
|
|
|
{
|
|
|
|
|
let box = (dirll.Object as Entity).GetBoundingBoxInMtx(this.m_Face.OCSInv);
|
|
|
|
|
if (box.intersectsBox(intersectBox))
|
|
|
|
|
if (box.intersect(intersectBox).isSolid())
|
|
|
|
|
{
|
|
|
|
|
let posSegment1D = [box.min.x - MinDrillDist, box.max.x + MinDrillDist] as Segment1d;
|
|
|
|
|
let posSegment1D = [box.min.x - MinDrillDist - 2, box.max.x + MinDrillDist + 2] as Segment1d;
|
|
|
|
|
this.m_Face.FixedInterval.push(posSegment1D);
|
|
|
|
|
//计算剩余可放置位置
|
|
|
|
|
this.m_Face.Segment1D = Segment1dSubtraction2(this.m_Face.Segment1D, [posSegment1D]);
|
|
|
|
@ -1800,6 +1802,10 @@ export class DrawDrillingTool extends Singleton
|
|
|
|
|
offsetDist = index === 0 ? 32 : -32;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//释放自身区间
|
|
|
|
|
let selfSegment1d: Segment1d = [posX - minDrillSegment, posX + minDrillSegment];
|
|
|
|
|
this.m_Face.Segment1D = OperInterval(this.m_Face.Segment1D, [selfSegment1d], this.m_Face.FixedInterval);
|
|
|
|
|
|
|
|
|
|
let oldSegment1D: Segment1d[] = [];
|
|
|
|
|
for (let [start, end] of this.m_Face.Segment1D)
|
|
|
|
|
oldSegment1D.push([start, end]);
|
|
|
|
|