diff --git a/src/DatabaseServices/Dimension/AlignedDimension.ts b/src/DatabaseServices/Dimension/AlignedDimension.ts index d7ebe97d4..8945ab014 100644 --- a/src/DatabaseServices/Dimension/AlignedDimension.ts +++ b/src/DatabaseServices/Dimension/AlignedDimension.ts @@ -144,13 +144,7 @@ export class AlignedDimension extends Entity let arrow1 = new Mesh(BufferGeometryUtils.ArrowGeometry(), colorMaterial); let arrow2 = new Mesh(BufferGeometryUtils.ArrowGeometry(), colorMaterial); - /** - * 由于绘制的对象挂载在本实体下面,导致实体Clone后,在Dispose,可能把Text.Object给销毁了 - * 所以尝试还原它. - */ - let tObj = this._Text.DrawObject; - if (tObj.children.length === 0) - tObj.add(this._Text.GetDrawObjectFromRenderType()); + this.RepairText(); obj.add(line, arrow1, arrow2, this._Text.DrawObject); @@ -159,6 +153,20 @@ export class AlignedDimension extends Entity return obj; } + /** + * 由于绘制的对象挂载在本实体下面,导致实体Clone后,在Dispose,可能把Text.Object给销毁了 + * 所以尝试还原它. + */ + private RepairText() + { + let tObj = this._Text.DrawObject; + if (tObj.children.length === 0) + { + this._Text.ClearDraw(); + tObj.add(this._Text.GetDrawObjectFromRenderType()); + } + } + UpdateDrawObject(type: RenderType, obj: Object3D) { let [line, arrow1, arrow2, textObj] = obj.children; @@ -190,6 +198,8 @@ export class AlignedDimension extends Entity this._Text.TextString = FixedNotZero(this.m_ArmP1.distanceTo(this.m_ArmP2), 2); this._Text.Position = midPoint(this.m_ArmP1, this.m_ArmP2); this._Text.TextRotation = textRo; + + this.RepairText(); } GetObjectSnapPoints(