!2842 优化:排钻拆单名记录在板件内

pull/2843/MERGE
林三 3 months ago committed by ChenX
parent 91e7ff8d93
commit bc93d29638

@ -18,7 +18,7 @@ import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
import { Hole } from "../../DatabaseServices/3DSolid/Hole";
import { CADObject } from "../../DatabaseServices/CADObject";
import { Contour } from "../../DatabaseServices/Contour";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Board, ObjectIdArr } from "../../DatabaseServices/Entity/Board";
import { Circle } from "../../DatabaseServices/Entity/Circle";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
@ -863,32 +863,30 @@ export class DrawDrillingTool extends Singleton
//保存排钻到板件
private SaveDrillToBoard(lBr: Board, iBr: Board, drs: ObjectId[][])
{
//使用ObjectIdArr类型 记录拆单名
let objectIdArrs: ObjectIdArr[] = [];
for (let ids of drs)
{
let objectIdArr: ObjectIdArr = [];
let g = new GroupRecord();
g.Name = this.m_Option.name;
app.Database.GroupTable.Append(g);
// 记录排钻的拆单组
let onlyRecordNameGroup = new GroupRecord();
onlyRecordNameGroup.Name = this.m_Option.name;
app.Database.GroupTable.Append(onlyRecordNameGroup);
for (let id of ids)
{
//后添加到 g组,防止Entity.GroupId使用onlyRecordNameGroup
onlyRecordNameGroup.Entitys.push(id);
g.Entitys.push(id);
(id.Object as Hole).DrillGroupId = onlyRecordNameGroup.Id;
objectIdArr.push(id);
}
objectIdArr.Name = this.m_Option.name;
objectIdArrs.push(objectIdArr);
}
//分析结束,排钻存入板件或者原始板件
lBr = lBr.__OriginalEnt__ ?? lBr;
iBr = iBr.__OriginalEnt__ ?? iBr;
lBr.AppendDrillList(iBr.Id, drs);
iBr.AppendDrillList(lBr.Id, drs.slice());
lBr.AppendDrillList(iBr.Id, objectIdArrs);
iBr.AppendDrillList(lBr.Id, objectIdArrs.slice());
}
//分析通孔
private ParseThroughHoles(drills: ObjectId[][], refDrillList: ObjectId[][], woodPinss: ObjectId[][])

@ -14,7 +14,6 @@ export abstract class Hole extends Entity
@AutoRecord OtherHalfTongKong: ObjectId;
protected allowHoleAtBoardEdge: boolean = false; //允许大孔面在板边缘
protected type: GangDrillType = GangDrillType.Pxl;
@AutoRecord DrillGroupId: ObjectId; //用于获取拆单名 区别GroupId 因为解组后GroupId会丢失
get Height()
{
@ -89,9 +88,6 @@ export abstract class Hole extends Entity
{
this.allowHoleAtBoardEdge = false;
}
if (ver > 7)
this.DrillGroupId = file.ReadObjectId();
}
WriteFile(file: CADFiler)
{
@ -102,7 +98,5 @@ export abstract class Hole extends Entity
file.WriteSoftObjectId(this.MId);
file.WriteSoftObjectId(this.OtherHalfTongKong);
file.WriteBool(this.allowHoleAtBoardEdge);
file.WriteObjectId(this.DrillGroupId);
}
}

@ -105,6 +105,11 @@ export interface I3DModeling
knife: IKnifeInfo;
}
export interface ObjectIdArr extends Array<ObjectId>
{
Name?: string;
}
/**
*
*/
@ -124,7 +129,7 @@ export class Board extends ExtrudeSolid
private _Name = "";
private _BoardProcessOption: BoardProcessOption;
//板件排钻表,与之碰撞板件为key
private _DrillList: Map<ObjectId, ObjectId[][]> = new Map();
private _DrillList: Map<ObjectId, ObjectIdArr[]> = new Map();
private _LayerNails: ObjectId[] = [];
@AutoRecord RelativeHardware: ObjectId[] = [];
private _OpenDir: BoardOpenDir = BoardOpenDir.None;
@ -1047,10 +1052,11 @@ export class Board extends ExtrudeSolid
/**
* ,
*/
AppendDrillList(k: ObjectId, drs: ObjectId[][])
AppendDrillList(k: ObjectId, drs: ObjectIdArr[])
{
this.WriteAllObjectRecord();
let oldDrs = this._DrillList.get(k);
if (oldDrs)
oldDrs.push(...drs);//同类型板件时,会触发这里.
else
@ -3027,13 +3033,17 @@ export class Board extends ExtrudeSolid
let count = file.Read();
for (let i = 0; i < count; i++)
{
let drIDs: ObjectId[] = [];
let drIDs: ObjectIdArr = [];
let count1 = file.Read();
for (let j = 0; j < count1; j++)
{
let fileId = file.ReadObjectId();
fileId && drIDs.push(fileId);
}
if (ver > 21)
drIDs.Name = file.Read();
if (drIDs.length > 0)
drIdList.push(drIDs);
}
@ -3191,7 +3201,7 @@ export class Board extends ExtrudeSolid
WriteFile(file: CADFiler)
{
super.WriteFile(file);
file.Write(21);
file.Write(22);
// file.Write(this._SpaceOCS.toArray()); ver < 6
file.Write(this._BoardType);
file.Write(this._Name);
@ -3207,6 +3217,8 @@ export class Board extends ExtrudeSolid
file.Write(ids.length);
for (let id of ids)
file.WriteObjectId(id);
file.Write(ids.Name);
}
}

@ -14,7 +14,6 @@ import { Curve } from "../../DatabaseServices/Entity/Curve";
import { ExtrudeContourCurve, ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Line } from "../../DatabaseServices/Entity/Line";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { GroupRecord } from "../../DatabaseServices/GroupTableRecord";
import { Shape } from "../../DatabaseServices/Shape";
import { ShapeManager } from "../../DatabaseServices/ShapeManager";
import { GetSideCuFaceMtx } from "../../Geometry/Board2DModelCSG/BoardSideModelCSGBuilder";
@ -656,6 +655,7 @@ export function GetModelingFromCustomDrill(br: Board)
{
if (!(hole.ContourCurve instanceof Circle))
{
hole["__CacheChaiDanName__"] = ids.Name;
if (br.IsArcBoard)
{
let ocs = hole["__CacheBrOCS__"];
@ -698,6 +698,9 @@ export function GetModelingFromCustomDrill(br: Board)
let faceRegionsBox: Box3;
let addPos: Vector3;
let chaiDanName: string = hole["__CacheChaiDanName__"];
hole["__CacheChaiDanName__"] = undefined;
if (br.IsArcBoard)
{
addPos = hole["__CacheAddPos__"];
@ -833,8 +836,6 @@ export function GetModelingFromCustomDrill(br: Board)
shape.ApplyMatrix(new Matrix4().getInverse(GetSideCuFaceMtx(cu)));
}
let chaiDanName = (hole.DrillGroupId?.Object as GroupRecord)?.Name ?? "";
sideModeling.push({
outline: ConverToPtsBul(shape.Outline.Curve, false),
holes: shape.Holes.map((cu) => ConverToPtsBul(cu.Curve, false)),

Loading…
Cancel
Save