autoCAD 向图形中添加文字

本文详细介绍了如何在AutoCAD中使用文字样式创建单行文字和多行文字(MText),包括指定字体、高度、倾斜角度、文字生成标记,以及如何进行格式化、对齐和修改。此外,还涵盖了Unicode字符、控制符、特殊字符的应用和替代字体设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文字表达了图形中的重要信息。可以将文字用于标题栏、标注图形部件、提供规格说明或进行注释。

AutoCAD 提供多种创建文字的方法。对简短的输入项使用单行文字,对于较长而且有内部格式的输入,可以使用多行文字 (MText)。虽然所有输入的文字都使用建立默认字体和格式设置的当前文字样式,但也可以使用其他的方法自定义文字外观。

使用文字样式
使用单行文字(Text)
使用多行文字(MText)
使用Unicode字符、控制符和特殊字符
替代字体
拼写检查

使用文字样式

AutoCAD 图形中的所有文字都有关联样式。输入文字时,AutoCAD 使用当前的文字样式,该样式设置了字体、字号、角度、方向和其他文字特征。用户可以使用或修改默认的样式,或者创建和加载新的样式。创建样式后,可以修改其属性,也可以在不再需要时将其删除。

创建和修改文字样式
指定字体
使用TrueType字体
使用 Unicode 和 Big 字体
设置文字高度
设置倾斜角度
设置文字生成标记

创建和修改文字样式

新的文字会从当前的文字样式继承高度、宽度比例、倾斜角度和文字生成等属性。要创建文字样式,请创建一个 TextStyleTableRecord 对象的新实例。并使用 Name 属性为新文字样式指定名字。然后以写的方式打开 TextStyleTable 对象,并使用 Add 方法添加新创建的文字样式。

样式名称可以包含字母、数字和特殊字符美元符号 ($)、下划线 (_) 和连字符 (-)。AutoCAD 将字符转换为大写字符。如果不输入样式名称,新的样式将没有名字。

用户可以通过修改 TextStyleTableRecord 对象的特性来修改现有的样式。如果你想使用当前文字样式,请使用 Database 对象的 TextStyle 属性,它保存着当前文字样式的 ObjectiD。

也可以更新该样式的现有文字以反映更改。请使用以下特性来修改 TextStyleTableRecord 对象:

  • BigFontFileName
  • 指定适用于非 ASCII 字符集的特殊形定义文件。
  • FileName
  • 指定与字体(字符样式)关联的文件。
  • FlagBits
  • 指定定反向文字,倒置文字或两者都有
  • Font
  • 指定字体样式的字体、粗体、斜体、字符集,以及间距和系列等设置
  • IsVertical
  • 指定文字是垂直的或水平的。
  • ObliquingAngle
  • 指定字符的倾斜角度。
  • TextSize
  • 指定字符的高度 
  • XScale
  • 指定字符的放大和缩小。

如果修改一个已存在样式的字体或方向,所有使用这个样式的文字都会被修改而使用新的字体或方向。修改文字高宽比和倾斜角度不会更改现有文字,但是会影响随后创建的文字对象。

注意必须重生成,才能看到对上述特性所作的更改。

指定字体  

字体定义了构成每个字符集的文字字符的形状。一种字体可以被多个样式使用。使用 FileName 属性设置文字样式的字体文件。通过输入 TrueType 或 AutoCAD 编译的 SHX 字体给文字样式。 

设置文字字体

本例利用 Font 属性获取活动文字样式的当前字体值,并随后将该字体更改为“PlayBill”。要查看字体更改的效果,请在运行样例之前,向当前图形中添加一些多行文字或单行文字。注意,如果系统上没有 PlayBill 字体,则需要将其替换为一种已有的字体以使本例有效。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("UpdateTextFont")> _
Public Sub UpdateTextFont()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以写的方式打开当前文字样式   Open the current text style for write
      Dim acTextStyleTblRec As TextStyleTableRecord
      acTextStyleTblRec = acTrans.GetObject(acCurDb.Textstyle, _
                                            OpenMode.ForWrite)
 
      '' 获得当前的字体设置    Get the current font settings
      Dim acFont As Autodesk.AutoCAD.GraphicsInterface.FontDescriptor
      acFont = acTextStyleTblRec.Font
 
      '' 用“PlayBill”更新文字样式的字体   Update the text style's typeface with "PlayBill"
      Dim acNewFont As Autodesk.AutoCAD.GraphicsInterface.FontDescriptor
      acNewFont = New  _
        Autodesk.AutoCAD.GraphicsInterface.FontDescriptor("PlayBill", _
                                                          acFont.Bold, _
                                                          acFont.Italic, _
                                                          acFont.CharacterSet, _
                                                          acFont.PitchAndFamily)
 
      acTextStyleTblRec.Font = acNewFont
 
      acDoc.Editor.Regen()
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

使用TrueType字体

TrueType 字体在图形中始终显示为已填充;而在打印时,TEXTFILL 系统变量控制是否填充字体。默认情况下,TEXTFILL 设置为 1,从而打印以填充方式显示的字体。当用户将图形输出为 PostScript® 格式并在 PostScript 设备上对其进行打印时,将按照设计的样式打印字体。

使用Unicode和Big字体

AutoCAD 支持 Unicode 字符编码标准。Unicode 字体可以包含 65,535 个字符,拥有多种语言的文字。现在,AutoCAD 的所有 SHX 形字体都是 Unicode 字体。

某些字母表的文字文件包含数千个非 ASCII 字符。为了适应这些文字,AutoCAD 支持一种特殊的形定义,称作大字体文件。用户可以将样式设置为同时使用常规文件和大字体文件。使用 FileName 特性指定常规字体。使用 BigFontFileName 特性指定大字体。  

注意字体文件名不能包含逗号  

当指定的字体文件不能被定位时,AutoCAD 允许指定使用指定的替换字体。使用 FONTALT 系统变量或 Application 的成员方法 SetSystemVariable 修改可用的替换字体。

修改字体文件

更改 FileName 和 BigFontFileName 属性。用户需要将本例中的路径信息替换为你系统中实际的系统路径和文件名。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("ChangeFontFiles")> _
Public Sub ChangeFontFiles()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以写的方式打开当前文字样式   Open the current text style for write
      Dim acTextStyleTblRec As TextStyleTableRecord
      acTextStyleTblRec = acTrans.GetObject(acCurDb.Textstyle, _
                                            OpenMode.ForWrite)
 
      '' 修改大字体和常规字体为可用的字体文件  Change the font files used for both Big and Regular fonts
      acTextStyleTblRec.BigFontFileName = "C:\AutoCAD\Fonts\bigfont.shx"
      acTextStyleTblRec.FileName = "C:\AutoCAD\Fonts\italic.shx"
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

设置文字高度

文字高度确定使用字体的字母大小,以图形单位计。该值通常表示大写字母的大小,但 TrueType 字体除外。

对于 TrueType 字体,文字高度的值可能不代表大写字母的高度,而是代表大写字母的高度加上预留给重音标记和非英语语言中其他标记的重音区域的高度。指定给大写字母和重音字符区域的相对区域是由字体设计者在设计字体时确定的,因此会随着字体而变动。

除了大写字母和组成用户指定高度的重音字符之外,TrueType 字型还有用于部分字符的下降区域,扩展到文字的插入线之下。这些字符的例子有 y、j、p、g 和 q。  

使用文字样式的 TextSize 属性或 文字对象的 Height 属性指定文字高度。此属性只接受正数。

设置倾斜角度

倾斜角度决定文字是向前还是向后倾斜。角度代表文字与其垂直轴(90 度)的偏移。要设置倾斜角度,请使用文字样式的 ObliquingAngle 属性或文字对象的 Oblique 属性。倾斜角度必须是弧度,正的角度值表示向右倾斜,负值则加上 2*PI 以转换为正的等价值。

创建倾斜文字

创建一个单行文本对象然后将它倾斜45度。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("ObliqueText")> _
Public Sub ObliqueText()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      ''创建单行文本对象    Create a single-line text object
      Dim acText As DBText = New DBText()
      acText.SetDatabaseDefaults()
      acText.Position = New Point3d(3, 3, 0)
      acText.Height = 0.5
      acText.TextString = "Hello, World."
 
      '' 修改文字对象的倾斜角度为45度(0.707弧度)   Change the oblique angle of the text object to 45 degrees(0.707 in radians)
      acText.Oblique = 0.707
 
      acBlkTblRec.AppendEntity(acText)
      acTrans.AddNewlyCreatedDBObject(acText, True)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

设置文字生成标记

文字生成标志指定文字是否要反向或倒置显示。使用 FlagBits 属性定义文字样式是否控制文字的反向或倒置显示,或使用文字对象的 IsMirroredInX 和 IsMirroredInY 属性单个的控制文字对象。

如果想文字显示为反向,请设置 FlagBits 为2,如果设置为4将倒置显示文字。使用值6,文字将显示为反向和倒置。如果修改文字对象,如果想文字显示为反向的,请将 IsMirroredInX 设置为 True,而如果想文字倒置显示,请将 IsMirroredInY 设置为 True。

反向显示文字

创建一个单选文本对象,然后利用 IsMirroredInX 属性设置它反向显示。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("BackwardsText")> _
Public Sub BackwardsText()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      ''创建单行文本对象    Create a single-line text object
      Dim acText As DBText = New DBText()
      acText.SetDatabaseDefaults()
      acText.Position = New Point3d(3, 3, 0)
      acText.Height = 0.5
      acText.TextString = "Hello, World."
 
      '' 反向显示文字  Display the text backwards
      acText.IsMirroredInX = True
 
      acBlkTblRec.AppendEntity(acText)
      acTrans.AddNewlyCreatedDBObject(acText, True)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

使用单行文字(Text)

创建单行文字
格式化单行文字
对齐单行文字
修改单行文字

创建单行文字

使用单行文字时,每个单行文字都是一个不同的对象。要创建单行文字对象,请创建一个 DBText 对象的实例,然后把它添加到代表模型或图纸空间的块表记录中的一个中。当你创建一个新的 DBText 对象的实例时,不要为构造函数传递任何参数。 

创建一行文字

在模型空间中的 (2,2,0) 坐标处用0.5的高和文字字符串"Hello, World."创建一个单选文字对象。  

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("CreateText")> _
Public Sub CreateText()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      ''创建单行文本对象    Create a single-line text object
      Dim acText As DBText = New DBText()
      acText.SetDatabaseDefaults()
      acText.Position = New Point3d(2, 2, 0)
      acText.Height = 0.5
      acText.TextString = "Hello, World."
 
      acBlkTblRec.AppendEntity(acText)
      acTrans.AddNewlyCreatedDBObject(acText, True)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

格式化单行文字

单行文字 对象是使用活动文字样式创建的。用户可以通过修改与对象关联的文字样式或是编辑单行文字对象的特性来直接修改单行文字对象的格式,但不能对单个单词和字符应用格式。

要修改单个单行文字 对象的关联文字样式,请将 TextStyleId 属性设置为新的文字样式。只要修改了文字样式,就必须重新生成图形或更新对象以查看图形中的变化。

除了图元的标准可编辑特性(颜色、图层、线型等),用户还可以更改下列单行文本对象的其他属性:

  • HorizontalMode
  • 指定文字的水平对象方式。
  • VerticalMode
  • 指定文字的垂直对象方式。
  • Position
  • 指定文字的插入点
  • Oblique
  • 指定单个文字对象的倾斜角度。
  • Rotation
  • 指定以弧度表示的文字的旋转角度。
  • WidthFactor
  • 指定文字的缩放因子。
  • AlignmentPoint
  • 指定文字的对齐点。
  • IsMirroredInX
  • 指定文字是否反向显示。
  • IsMirroredInY
  • 指定文字是否倒置显示。
  • TextString
  • 指定实际显示的文字字符串。

一旦修改了属性,就必须重新生成图形或更新对象以查看所做的修改。

对齐单行文字

可以在水平和垂直方向对齐单行文字。左对齐是默认选项。要设置水平和垂直对齐选项,请使用 HorizontalMode 和 VerticalMode 属性。

通常当文字对象被关闭时,文字对象的定位和对齐点会被调整,以适用它的对齐和文字样式。然而,在内存中的文字对象的对齐将不会被自动更新。若要基于文字对象的当前属性值更新它的对齐特性可以调用它的 AdjustAlignment 方法。

重新排列文字

本例创建一个单行文本(DBText)对象和一个点(DBPoint)对象。点对象将设置到文字的对齐点,然后将点样式修改成红色的十字光标形状以使点可见。文字对齐将被修改,并显示消息框以终止宏的执行。这样用户就可以查看修改文字对齐的影响。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("TextAlignment")> _
Public Sub TextAlignment()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      Dim textString(0 To 2) As String
      textString(0) = "Left"
      textString(1) = "Center"
      textString(2) = "Right"
 
      Dim textAlign(0 To 2) As Integer
      textAlign(0) = TextHorizontalMode.TextLeft
      textAlign(1) = TextHorizontalMode.TextCenter
      textAlign(2) = TextHorizontalMode.TextRight
 
      Dim acPtIns As Point3d = New Point3d(3, 3, 0)
      Dim acPtAlign As Point3d = New Point3d(3, 3, 0)
 
      Dim nCnt As Integer = 0
 
      For Each strVal As String In textString
          ''创建单行文本对象    Create a single-line text object
          Dim acText As DBText = New DBText()
          acText.SetDatabaseDefaults()
          acText.Position = acPtIns
          acText.Height = 0.5
          acText.TextString = strVal
 
          '' 设置文字的对齐方式  Set the alignment for the text
          acText.HorizontalMode = textAlign(nCnt)
 
          If acText.HorizontalMode <> TextHorizontalMode.TextLeft Then
              acText.AlignmentPoint = acPtAlign
          End If
 
          acBlkTblRec.AppendEntity(acText)
          acTrans.AddNewlyCreatedDBObject(acText, True)
 
          '' 创建一个经过文字对齐点的点对象   Create a point over the alignment point of the text
          Dim acPoint As DBPoint = New DBPoint(acPtAlign)
          acPoint.SetDatabaseDefaults()
          acPoint.ColorIndex = 1
 
          acBlkTblRec.AppendEntity(acPoint)
          acTrans.AddNewlyCreatedDBObject(acPoint, True)
 
          '' 调整插入和对齐点   Adjust the insertion and alignment points
          acPtIns = New Point3d(acPtIns.X, acPtIns.Y + 3, 0)
          acPtAlign = acPtIns
 
          nCnt = nCnt + 1
      Next
 
      '' 设置点样式   Set the point style to crosshair
      Application.SetSystemVariable("PDMODE", 2)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

修改单行文字

与其他所有对象一样,文字对象可以被移动、旋转、删除和复制。还可以镜像文字。如果不希望在镜像文字将将其反转,可以将 MIRRTEXT 系统变量设置为 0(零)。移动、旋转和复制对象请使用  TransformBy 和 Clone 方法。更多关于 TransformBy 和 Clone 方法。

使用多行文字(MText)

对于较长的、复杂的输入项,可以创建多行文字(MText)。多行文字将布满指定的宽度,而在垂直方向上可以无限延伸。用户可以格式化多行文字中的单个单词或字符。

创建多行文字

用户可以首先创建一个 MText 对象的实例,然后将它添加到代表模型空间或图纸空间的块表记录中去。MText 对象的构造函数不能带任何参数。MText 对象的实例被创建后,就可以利用它的属性指定它的文本字符串,插入点和宽度以及另外值中的一个。你可以修改另外的属性来影响对象的文字高度、对齐、旋转角度和文字样式,以及应用字符格式到选择的字符。

创建多行文本对象

在模型空间中的 (2,2,0) 坐标处创建 MText 对象。 

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("CreateMText")> _
Public Sub CreateMText()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      '' 创建多行文本对象  Create a multiline text object
      Dim acMText As MText = New MText()
      acMText.SetDatabaseDefaults()
      acMText.Location = New Point3d(2, 2, 0)
      acMText.Width = 4
      acMText.Contents = "This is a text string for the MText object."
 
      acBlkTblRec.AppendEntity(acMText)
      acTrans.AddNewlyCreatedDBObject(acMText, True)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

格式化多行文字

新的文字将自动使用当前文字样式的特征。默认文字样式是 STANDARD。用户可以通过格式化个别字符和对多行文本 对象应用特性来替代默认的文字样式,也可以使用本节介绍的方法指定格式或特殊字符。

类似于样式、对正、宽度和旋转这些方向选项,可以影响多行文字边框内的所有文字,而不是只影响特定的字或字符。使用 Attachment 特性修改多行文字的对正方式,使用 Rotation 特性控制文字边界的旋转角度。

使用 TextStyleId 属性设置多行文字的字体和格式特征。当创建多行文字,可以从现有的样式列表中选择要使用的样式。用户修改某个部分应用了字符格式的 MText 对象的样式时,样式将应用到整个对象,但字符的某些格式可能无法保留。例如,如果一种 TrueType 样式更改为使用 SHX 字体或使用其他的 TrueType 字体,将导致整个对象的文字使用新字体,而所有的字符格式都会丢失。

格式选项象下划线、堆叠文字或字体可以应用到段落中的个别单词或字符。用户可以修改颜色、字体和文字高度,还可以修改文字的字符间距或是增加字符的宽度。

使用大括号 ({ }) 可以仅对括号内的文字应用格式修改。用户最多可以设置八层深度的括号。

用户也可以在行或段落中输入控制代码的 ASCII 等价值来表示格式或特殊字符,例如公差和标注符号。

使用控制符格式化文字

创建并格式化一个多行文本对象。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
 
<CommandMethod("FormatMText")> _
Public Sub FormatMText()
  '' 获得当前文档和数据库   Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
 
  ''启动一个事务   Start a transaction
  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
      '' 以只读方式打开块表   Open the Block table for read
      Dim acBlkTbl As BlockTable
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                   OpenMode.ForRead)
 
      '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
      Dim acBlkTblRec As BlockTableRecord
      acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                      OpenMode.ForWrite)
 
      '' 创建多行文本对象  Create a multiline text object
      Dim acMText As MText = New MText()
      acMText.SetDatabaseDefaults()
      acMText.Location = New Point3d(2, 2, 0)
      acMText.Width = 4.5
      acMText.Contents = "{{\H1.5x; Big text}\A2; over text\A1;/\A0;under text}"
 
      acBlkTblRec.AppendEntity(acMText)
      acTrans.AddNewlyCreatedDBObject(acMText, True)
 
      ''保存更改并销毁事务   Save the changes and dispose of the transaction
      acTrans.Commit()
  End Using
End Sub

使用Unicode字符、控制符和特殊字符

用户可以在文本字符串中使用 Unicode 字符、控制代码和特殊字符来代表符号。(所有的非文字字符必须用其 ASCII 等价值输入。)

用户可以输入以下 Unicode 字符串来创建特殊字符:

Unicode 字符说明  

Unicode 字符  

说明

\U+00B0

度符号

\U+00B1

正/负公差符号

\U+2205

直径标注符号

除了可以使用 Unicode 字符作为特殊字符外,用户还可以通过在文本字符串中包括控制信息来指定特殊字符。使用两个百分数符号 (%%) 引入每个控制序列。例如,以下控制代码使用标准 AutoCAD 文字和 PostScript 字体描绘字符编号 nnn

这些控制代码仅使用标准 AutoCAD 文字字体

控制代码说明

控制代码

说明 

%%o

打开或关闭上划线模式

%%u

打开或关闭下划线模式  

%%d

绘制度符号 

%%p

绘制正/负公差符号  

%%c

绘制直径标注符号  

%%%

绘制一个百分数符号  

替代字体

用户可以指定字体,该字体可以替代其他字体,或作为 AutoCAD 找不到图形中指定字体时的默认字体。

图形中文字的字体取决于文字样式,对于多行文字则取决于各部分文字应用的字体格式。

用户可以使用字体映射表确保图形中仅使用某种字体,或者将使用的字体转换为其他字体。可以使用这些字体映射表来强制共享字体标准或进行脱机打印。AutoCAD 附带一个默认字体映射表。可以使用任意 ASCII 文字编辑器编辑该文件。也可以使用 FONTMAP 系统变量指定不同的字体映射表文件。

指定一个选择性的默认字体

如果用户图形指定了当前系统中不存在的字体,AutoCAD 将自动用指定的替换字体替换该字体。默认情况下,AutoCAD 使用 simplex.shx 文件。但是,如果需要,用户也可以指定另一种字体。使用 FONTALT 系统变量设置一个可选择性的字体文件名。  

如果用户使用具有大字体的文字样式,可以使用 FONTALT 系统变量映射其他字体,字体映射必须是成对的字体文件: txt.shx、bigfont.shx。

如果 AutoCAD 在打开图形时找不到字体文件,将应用默认的字体集替代规则。

拼写检查

在拼写检查过程中,AutoCAD 将图形中的词语与当前主词典中的词语相匹配。所有新添加的词语都存储自定义词典中,该词典在执行拼写检查时是当前词典。例如,用户可以添加正确的名称,以便 AutoCAD 不再将其标识为拼错的单词。

要检查其他语言的拼写,可以切换到另一个主词典

AutoCAD .NET API 没有提供拼写检查的方法。但是,用户可以使用 DCTMAIN 系统变量指定其他主词典,也可以使用 DCTCUST 系统变量指定其他自定义词典。

从acdbmgd.dll导出的内容,方便参考,格式如下: 类:Autodesk.AutoCAD.DatabaseServices.TextStyleTableRecord:Autodesk.AutoCAD.DatabaseServices.SymbolTableRecord New() 方法: {dtor}() {dtor}() {dtor}() {dtor}() ApplyPaperOrientationTransform(Viewport) ApplyPartialUndo(DwgFiler,RXClass) Audit(AuditInfo) Cancel() Close() CloseAndPage(Boolean) CopyFrom(RXObject) CreateExtensionDictionary() DisableUndoRecording(Boolean) Dispose() DowngradeOpen() DowngradeToNotify(Boolean) DwgIn(DwgFiler) DwgOut(DwgFiler) DxfIn(DxfFiler) DxfOut(DxfFiler) Erase() Erase(Boolean) HandOverTo(DBObject,Boolean,Boolean) ReleaseExtensionDictionary() RemoveField(ObjectId) ResetScaleDependentProperties() SetObjectIdsInFlux() SetPaperOrientation(Boolean) SwapIdWith(ObjectId,Boolean,Boolean) SwapReferences(IdMapping) UpgradeOpen() ViewportDraw(ViewportDraw) XDataTransformBy(Matrix3d) 函数: Clone() AS System.Object CompareTo(Object) AS System.Int32 CreateObjRef(Type) AS System.Runtime.Remoting.ObjRef DecomposeForSave(DwgVersion) AS Autodesk.AutoCAD.DatabaseServices.DecomposeForSaveReplacementRecord DeepClone(DBObject,IdMapping,Boolean) AS Autodesk.AutoCAD.DatabaseServices.DBObject Equals(Object) AS System.Boolean GetHashCode() AS System.Int32 GetLifetimeService() AS System.Object GetObjectSaveVersion(DwgFiler) AS Autodesk.AutoCAD.DatabaseServices.FullDwgVersion GetObjectSaveVersion(DxfFiler) AS Autodesk.AutoCAD.DatabaseServices.FullDwgVersion GetPersistentReactorIds() AS Autodesk.AutoCAD.DatabaseServices.ObjectIdCollection GetReactors() AS System.Collections.Generic.List`1[[Autodesk.AutoCAD.Runtime.RXObject, acdbmgd, Version=17.1.0.0, Culture=neutral, PublicKeyToken=null]] GetRXClass() AS Autodesk.AutoCAD.Runtime.RXClass GetType() AS System.Type GetXDataForApplication(String) AS Autodesk.AutoCAD.DatabaseServices.ResultBuffer HasPersistentReactor(ObjectId) AS System.Boolean InitializeLifetimeService() AS System.Object QueryX(RXClass) AS System.IntPtr RemoveField() AS Autodesk.AutoCAD.DatabaseServices.ObjectId RemoveField(String) AS Autodesk.AutoCAD.DatabaseServices.ObjectId SetAttributes(DrawableTraits) AS System.Int32 SetField(Field) AS Autodesk.AutoCAD.DatabaseServices.ObjectId SetField(String,Field) AS Autodesk.AutoCAD.DatabaseServices.ObjectId SetFromStyle() AS System.Boolean ToString() AS System.String UpgradeFromNotify() AS System.Boolean ViewportDrawLogicalFlags(ViewportDraw) AS System.Int32 WblockClone(RXObject,IdMapping,Boolean) AS Autodesk.AutoCAD.DatabaseServices.DBObject WorldDraw(WorldDraw) AS System.Boolean X(RXClass) AS System.IntPtr 属性: AcadObject AS System.Object 可读不可写 Annotative AS Autodesk.AutoCAD.DatabaseServices.AnnotativeStates 可读可写 AutoDelete AS System.Boolean 可读可写 BigFontFileName AS System.String 可读可写 ClassID AS System.Guid 可读不可写 Database AS Autodesk.AutoCAD.DatabaseServices.Database 可读不可写 Drawable AS Autodesk.AutoCAD.GraphicsInterface.Drawable 可读不可写 DrawableType AS Autodesk.AutoCAD.GraphicsInterface.DrawableType 可读不可写 ExtensionDictionary AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读不可写 FileName AS System.String 可读可写 FlagBits AS System.Byte 可读可写 Font AS Autodesk.AutoCAD.GraphicsInterface.FontDescriptor 可读可写 Handle AS Autodesk.AutoCAD.DatabaseServices.Handle 可读不可写 HasFields AS System.Boolean 可读不可写 HasSaveVersionOverride AS System.Boolean 可读可写 Id AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读不可写 IsAProxy AS System.Boolean 可读不可写 IsCancelling AS System.Boolean 可读不可写 IsDependent AS System.Boolean 可读不可写 IsDisposed AS System.Boolean 可读不可写 IsErased AS System.Boolean 可读不可写 IsEraseStatusToggled AS System.Boolean 可读不可写 IsModified AS System.Boolean 可读不可写 IsModifiedGraphics AS System.Boolean 可读不可写 IsModifiedXData AS System.Boolean 可读不可写 IsNewObject AS System.Boolean 可读不可写 IsNotifyEnabled AS System.Boolean 可读不可写 IsNotifying AS System.Boolean 可读不可写 IsObjectIdsInFlux AS System.Boolean 可读不可写 IsPersistent AS System.Boolean 可读不可写 IsReadEnabled AS System.Boolean 可读不可写 IsReallyClosing AS System.Boolean 可读不可写 IsResolved AS System.Boolean 可读不可写 IsShapeFile AS System.Boolean 可读可写 IsTransactionResident AS System.Boolean 可读不可写 IsUndoing AS System.Boolean 可读不可写 IsVertical AS System.Boolean 可读可写 IsWriteEnabled AS System.Boolean 可读不可写 MergeStyle AS Autodesk.AutoCAD.DatabaseServices.DuplicateRecordCloning 可读可写 Name AS System.String 可读可写 ObjectBirthVersion AS Autodesk.AutoCAD.DatabaseServices.FullDwgVersion 可读不可写 ObjectId AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读不可写 ObliquingAngle AS System.Double 可读可写 OwnerId AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读可写 PaperOrientation AS Autodesk.AutoCAD.DatabaseServices.PaperOrientationStates 可读不可写 PriorSize AS System.Double 可读可写 TextSize AS System.Double 可读可写 UndoFiler AS Autodesk.AutoCAD.DatabaseServices.DwgFiler 可读不可写 UnmanagedObject AS System.IntPtr 可读不可写 XData AS Autodesk.AutoCAD.DatabaseServices.ResultBuffer 可读可写 XScale AS System.Double 可读可写 -------------------------------- 类:Autodesk.AutoCAD.DatabaseServices.TextVerticalMode:System.Enum 函数: CompareTo(Object) AS System.Int32 Equals(Object) AS System.Boolean GetHashCode() AS System.Int32 GetType() AS System.Type GetTypeCode() AS System.TypeCode ToString() AS System.String ToString(IFormatProvider) AS System.String ToString(String,IFormatProvider) AS System.String ToString(String) AS System.String 字段: TextBase AS TextVerticalMode TextBottom AS TextVerticalMode TextTop AS TextVerticalMode TextVerticalMid AS TextVerticalMode value__ AS Int32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值