此例程更改文本插入以使文本位置保持绘制状态,这也提供了您正在寻找的功能。
Function TEXT_align(entity As AcadEntity, opt As String) As AcadEntity
Set TEXT_align = Nothing
Dim MTEXT As AcadMText
Dim TTEXT As ACADTEXT
Dim ATTRIB As AcadAttribute
Dim Dest_min As Variant
Dim Dest_max As Variant
Dim Source_min As Variant
Dim Source_max As Variant
Call entity.GetBoundingBox(Source_min, Source_max)
Select Case LCase(entity.objectname)
Case "acdbtext"
Set TTEXT = entity
Select Case UCase(opt)
Case "TL": TTEXT.alignment = acAlignmentTopLeft
Case "TC": TTEXT.alignment = acAlignmentTopCenter
Case "TR": TTEXT.alignment = acAlignmentTopRight
Case "ML": TTEXT.alignment = acAlignmentMiddleLeft
Case "MC": TTEXT.alignment = acAlignmentMiddleCenter
Case "MR": TTEXT.alignment = acAlignmentMiddleRight
Case "BL": TTEXT.alignment = acAlignmentBottomLeft
Case "BC": TTEXT.alignment = acAlignmentBottomCenter
Case "BR": TTEXT.alignment = acAlignmentBottomRight
End Select
Case "acdbmtext"
Set MTEXT = entity
Select Case UCase(opt)
Case "TL": MTEXT.ATTACHMENTPOINT = acAttachmentPointTopLeft
Case "TC": MTEXT.ATTACHMENTPOINT = acAttachmentPointTopCenter
Case "TR": MTEXT.ATTACHMENTPOINT = acAttachmentPointTopRight
Case "ML": MTEXT.ATTACHMENTPOINT = acAttachmentPointMiddleLeft
Case "MC": MTEXT.ATTACHMENTPOINT = acAttachmentPointMiddleCenter
Case "MR": MTEXT.ATTACHMENTPOINT = acAttachmentPointMiddleRight
Case "BL": MTEXT.ATTACHMENTPOINT = acAttachmentPointBottomLeft
Case "BC": MTEXT.ATTACHMENTPOINT = acAttachmentPointBottomCenter
Case "BR": MTEXT.ATTACHMENTPOINT = acAttachmentPointBottomRight
End Select
Case "acdbattributedefinition"
Set ATTRIB = entity
Select Case UCase(opt)
Case "TL": ATTRIB.alignment = acAlignmentTopLeft
Case "TC": ATTRIB.alignment = acAlignmentTopCenter
Case "TR": ATTRIB.alignment = acAlignmentTopRight
Case "ML": ATTRIB.alignment = acAlignmentMiddleLeft
Case "MC": ATTRIB.alignment = acAlignmentMiddleCenter
Case "MR": ATTRIB.alignment = acAlignmentMiddleRight
Case "BL": ATTRIB.alignment = acAlignmentBottomLeft
Case "BC": ATTRIB.alignment = acAlignmentBottomCenter
Case "BR": ATTRIB.alignment = acAlignmentBottomRight
End Select
Case Else
Exit Function
End Select
Call entity.GetBoundingBox(Dest_min, Dest_max)
entity.MOVE Dest_min, Source_min
End Function