导入符号

使用 MAPSYMBOLIMPORTEXPORT 命令或 Microsoft VBA 脚本,可以在单个操作中导入多个符号。

对点、线或多边形要素设置样式时,使用“加载选项”可导入符号。也可以使用 MAPSYMBOLIMPORTEXPORT 命令,如下所述。

使用用户界面导入符号

  1. 将 CMDDIA 或 FILEDIA 系统变量设置为 “1”。
  2. 在命令提示下,输入 MAPSYMBOLIMPORTEXPORT。
  3. “符号库”中,单击“导入”
  4. “打开”对话框中,查找并选择要导入的文件,或在“文件名”中输入文件名称,然后单击“打开”

    可以将块作为符号导入 DWG 文件。您还可以将符号库 (*.layer)、矢量符号 (*.xml),图案填充定义 (*.pat)、线样式 (*.lin) 或光栅图像 (*.gif、*.jpg、*.bmp、*.png)导入符号库。

  5. 单击“关闭”。

导入符号而不使用用户界面

  1. 将 CMDDIA 和 FILEDIA 系统变量同时设置为“0”。
  2. 在命令提示下,输入 MAPSYMBOLIMPORTEXPORT。
  3. 按照提示,选择“导入”
  4. 输入包含要导入的符号的符号文件路径。
  5. 如果想要替换名称相同的现有符号,请选择“是”;如果不想要覆盖相同名称的符号,请选择“否”。
  6. 等待直到看到“符号已导入成功!”的消息。
提示: 或者也可以通过脚本自动完成上述步骤。在命令行中,使用脚本命令加载脚本文件并等其完成。以下是脚本示例。将其另存为扩展名为 .scr 的文件。
CMDDIA 0
FILEDIA 0
_MAPSYMBOLIMPORTEXPORT _IMPORT "C:\data\MySymbols.dwg" _YES

VBA 脚本选项

若要节省时间,可以使用 Microsoft Visual Basic for Applications (VBA) 脚本一次导入多个图形的符号。以下脚本为示例。您可将其用作模板并进行必要的修改,然后另存为 .bas 文件。

Attribute VB_Name = "ImportSymbolIntoDWG"
Sub ImportSymbolIntoAllDWG()
    Dim fileSystemObject, fileSystemFolder, file, fileCollection
    Dim collectionOfFiles As New Collection
    
    Dim path As String
    ' Define where the DWG files are located
    path = "C:\Autodesk\DWGFiles"
    
    Dim prototypeDWG As String
    ' Define where the symbol(s) should be imported from
    prototypeDWG = "C:\Autodesk\Prototype\Prototype_GA_modified.dwg"
    
    Dim currentSDI As Integer
    currentSDI = ThisDrawing.GetVariable("SDI")
    
    If (currentSDI = 1) Then
        MsgBox "The functions works only with multiple drawings [SDI=0]"
        Exit Sub
    End If
    
    '' use this to request the path
    'path = ThisDrawing.Utility.GetString(1, vbCrLf & "Enter the path of the DWG files to update: ")
    'prototypeDWG = ThisDrawing.Utility.GetString(1, vbCrLf & "Enter the path of the prototype DWG: ")
    
    ThisDrawing.SetVariable "FILEDIA", 0
    ThisDrawing.SetVariable "CMDDIA", 0
    
    Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
    Set fileSystemFolder = fileSystemObject.GetFolder(path)
    Set fileCollection = fileSystemFolder.Files
    
    For Each file In fileCollection
        If UCase(Right(file.Name, 4)) = UCase(".dwg") Then
            collectionOfFiles.Add file.path
        End If
    Next
    
    For Each drawing In collectionOfFiles
        Application.Documents.Open (drawing)
        ThisDrawing.SendCommand "_MAPSYMBOLIMPORTEXPORT" & vbCr & "_IMPORT" & vbCr & prototypeDWG & vbCr & "_YES" & vbCr
        ThisDrawing.Save
        ThisDrawing.Close
    Next drawing
    
End Sub

在示例脚本中,包含一个带有子内容“ImportSymbolIntoAllDWG()”的“ImportSymbolIntoDWG”模块。您需要修改“path”变量来指定图形所处位置的路径,然后修改“prototypeDWG”变量来指向要导入的包含符号的 DWG 文件。

若要导入多个图形的符号,请使用 VBA 脚本。

  1. 将要更新符号的所有图形放入一个文件夹中。
  2. AutoCAD Map 3D 工具集 命令行中,输入 VBAIDE 以打开 Microsoft VBA 窗口。

    如果尚未安装 Autodesk AutoCAD VBA Enabler,系统会显示一条消息,提醒您下载。

  3. 在“Microsoft VBA”窗口中,执行以下操作:
    1. 单击文件,然后选择“导入文件”
    2. “导入文件”对话框中,找到并选择包含脚本的 .bas 文件。
    3. 单击“打开”
    4. 在 Microsoft VBA 窗口中,单击“保存”
    5. “另存为”对话框中,指定路径和文件名,然后单击“保存”
  4. 关闭 Microsoft VBA 窗口。
  5. 在命令行中输入 VBALOAD 加载上面保存的 .dvb 文件。

    如果系统向您发出关于宏的警告,请单击“启用宏”。

  6. 在命令行中,输入 VBARUN 并选择要运行的相关宏。