From 567ee955cc299b90ab28318497a4be39ed0b9b2a Mon Sep 17 00:00:00 2001 From: ChenX Date: Tue, 11 Apr 2023 17:15:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD:=E6=94=AF=E6=8C=81=E5=BC=A7?= =?UTF-8?q?=E9=95=BF=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/ACAD/Entity2DxfEntity.ts | 25 +++++++++++++++++++ src/Add-on/Save.ts | 3 ++- .../Dimension/ArcDimension.ts | 11 ++++++-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/Add-on/ACAD/Entity2DxfEntity.ts b/src/Add-on/ACAD/Entity2DxfEntity.ts index 110ea276e..13e56b3b4 100644 --- a/src/Add-on/ACAD/Entity2DxfEntity.ts +++ b/src/Add-on/ACAD/Entity2DxfEntity.ts @@ -192,6 +192,31 @@ export function Conver2DxfEntity(e: Entity, dxf: DxfWriter, blkName?: string) else if (e instanceof ArcDimension) { //弧长标注 在acad中 使用角度标注 然后改TextString就行了 + option.extrusion = e.Normal; + e.PraseArc(); + let arc = e.Arc; + let p1 = arc.StartPoint.applyMatrix4(e.OCSNoClone); + let p2 = arc.EndPoint.applyMatrix4(e.OCSNoClone); + + let angleOp = option as AngularDimLines; + angleOp.text = e.TextString;//一定要在ParseText前 + + e.ParseText(); + let p3 = arc.StartPoint.applyMatrix4(e.OCSNoClone); + let p4 = arc.EndPoint.applyMatrix4(e.OCSNoClone); + + return new AngularDimLines( + { + start: p1, + end: p3 + }, + { + start: p2, + end: p4 + }, + arc.Midpoint.applyMatrix4(e.OCSNoClone), + option + ); } // else 我们暂时没有实现坐标标注 else if (e instanceof Board || e instanceof SweepSolid || e instanceof RevolveSolid || e instanceof ExtrudeHole) diff --git a/src/Add-on/Save.ts b/src/Add-on/Save.ts index 2c9e93d3c..e73443d97 100644 --- a/src/Add-on/Save.ts +++ b/src/Add-on/Save.ts @@ -13,6 +13,7 @@ import { CADFiler } from "../DatabaseServices/CADFiler"; import { Database } from '../DatabaseServices/Database'; import { LineAngularDimension } from '../DatabaseServices/Dimension/2LineAngularDimension'; import { AlignedDimension } from '../DatabaseServices/Dimension/AlignedDimension'; +import { ArcDimension } from '../DatabaseServices/Dimension/ArcDimension'; import { RadiusDimension } from '../DatabaseServices/Dimension/RadiusDimension'; import { DimStyleRecord } from '../DatabaseServices/DimStyle/DimStyleRecord'; import { Arc } from '../DatabaseServices/Entity/Arc'; @@ -290,7 +291,7 @@ export class SaveToDxf implements Command Filter: { filterTypes: [ Line, Arc, Circle, Polyline, Ellipse, AlignedDimension, LineAngularDimension, RadiusDimension, DiameterDimension, - Board, Text, SweepSolid, CompositeEntity, ExtrudeHole + Board, Text, SweepSolid, CompositeEntity, ExtrudeHole, ArcDimension ] } }); diff --git a/src/DatabaseServices/Dimension/ArcDimension.ts b/src/DatabaseServices/Dimension/ArcDimension.ts index 808f04c9c..7449a8488 100644 --- a/src/DatabaseServices/Dimension/ArcDimension.ts +++ b/src/DatabaseServices/Dimension/ArcDimension.ts @@ -42,6 +42,13 @@ export class ArcDimension extends Dimension return this._Text; } + get Arc() + { + if (!this._Arc) + this.PraseArc(); + return this._Arc; + } + set TextRadiusAdd(ra: number) { if (equaln(ra, this._TextRadiusAdd)) return; @@ -176,7 +183,7 @@ export class ArcDimension extends Dimension arrow2.updateMatrix(); } - private ParseText() + ParseText() { this._Text.TextString = this.TextString; @@ -203,7 +210,7 @@ export class ArcDimension extends Dimension this.Text.DeferUpdate(); } - private PraseArc() + PraseArc() { this._Arc.AutoUpdate = false;