vba编程实现合并多个dwg(指定图层并增加属性字段)转shp方案概述

1、项目需求

       如图所示,甲方提供多宗CAD格式宗地图,任务为把所有dwg图形中jzd图层提取出来合并为一个总shp文件,shp文件中每一宗地要显示测图号属性。

1.2

2. 解决问题思路 

       打开图形可看到,每个dwg文件内都有一个jzd图层,图层内包含范围线和文字,根据用户要求我们只需要范围线,不需要提取界址点号、界址点距离等文字。

 这一任务可借助vba编程解决。首先在dwg格式文件夹内新建一个空的dwg文件(以下称总文件),然后通过遍历文件夹内dwg文件,通过选择集的方式选择jzd图层中不包含文字的实体要素,选择集内容赋给一个新建数组,在总文件中新建一个block块,块名为包含jzd图层的dwg格式文件的文件名前8个字段,之后把新建数组通过copyobjects方法复制到图块中,在总图中插入块。针对所有dwg文件都采用以上办法获取所需信息,可采用do loop循环语句解决。

3.vba代码解决问题

Sub test()
Dim sel As AcadSelectionSet
Dim ljwj As String, lj As String
Dim ftype(0 To 10) As Integer, fdata(0 To 10) As Variant
ftype(0) = -4: fdata(0) = "<AND"
ftype(1) = 8: fdata(1) = "JZD"
ftype(2) = -4: fdata(2) = "<AND"
ftype(3) = -4: fdata(3) = "<NOT"
ftype(4) = 0: fdata(4) = "text"
ftype(5) = -4: fdata(5) = "NOT>"

ftype(6) = -4: fdata(6) = "<NOT"
ftype(7) = 0: fdata(7) = "mtext"
ftype(8) = -4: fdata(8) = "NOT>"
ftype(9) = -4: fdata(9) = "AND>"
ftype(10) = -4: fdata(10) = "AND>"
Dim obj As AcadObject
lj = ThisDrawing.Path
ljwj = Dir(lj & "\*.dwg")
 Dim myzong As AcadDocument
 Dim lay As AcadLayer
 For Each lay In ThisDrawing.Layers
   If lay.Name = "JZD" Then
   Set JZD = ThisDrawing.Layers("JZD")
   ThisDrawing.ActiveLayer = JZD
   JZD.color = acRed
   Exit For
   End If
    Next lay
    If ThisDrawing.ActiveLayer.Name <> "JZD" Then
    Set JZD = ThisDrawing.Layers.Add("JZD")
    ThisDrawing.ActiveLayer = JZD
    JZD.color = acRed
    End If
 Set myzong = ActiveDocument
 
 zong = ThisDrawing.Name
Do While ljwj <> ""
   
    If ljwj <> zong Then
    
     Set mydqwj = Documents.Open(lj & "\" & ljwj)
     Do While ThisDrawing.SelectionSets.Count > 0
     ThisDrawing.SelectionSets.Item(0).Delete
     Loop
    Set sel = ThisDrawing.SelectionSets.Add("mysel")
    
    sel.Select acSelectionSetAll, , , ftype, fdata
         If sel.Count > 0 Then
            Dim arr() As Object
            ReDim arr(sel.Count - 1)
            Dim newarr() As Object
            ReDim newarr(sel.Count - 1)
             For i = 0 To sel.Count - 1
            Set arr(i) = sel.Item(i)
             Next i
      
       
            dqwj = lj & "\" & ljwj
      Dim myblock As AcadBlock: Dim ptbase(2) As Double: ptbase(0) = 0: ptbase(1) = 0: ptbase(2) = 0:
      Dim blockname As String:
      blockname = Left(ljwj, 10)
      Set myblock = myzong.Blocks.Add(ptbase, blockname)
'            mydqwj.CopyObjects arr, myzong.ModelSpace, newarr
            mydqwj.CopyObjects arr, myblock
            Set insblock = myzong.ModelSpace.InsertBlock(ptbase, blockname, 1, 1, 1, 0)
            End If
             mydqwj.Close
            Erase arr
            Erase newarr
            sel.Delete
           
        End If
        ljwj = Dir
Loop

  ThisDrawing.Regen acActiveViewport
  Zoomextents
  ThisDrawing.Save
End Sub

4.成果展示

由上图可知,我们已将所有图层合并到总图中。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: DWG属性SHP插件是一种用于将DWG文件换为SHP文件并保留属性信息的工具。DWG是AutoCAD绘文件的格式,而SHP是Shapefile文件的格式,常用于GIS(地理信息系统)软件中。该插件的作用是将DWG中的几何信息及其对应的属性信息换为SHP文件,使其在GIS软件中可以进行进一步的空间分析和数据管理。 使用DWG属性SHP插件非常简单。首先,将需要换的DWG文件加载到AutoCAD软件中。然后,打开插件并选择将要换的层。插件会自动提取DWG文件中的几何信息以及相应的属性信息,生成对应的SHP文件。换完成后,我们可以在GIS软件中导入SHP文件,查看并分析其中的空间数据。 除了换功能,该插件还提供其他一些辅助功能。例如,我们可以通过插件调整SHP文件中的属性,使其更符合我们的需求。同时,插件还支持批量换,可以同时处理多个DWG文件,提高工作效率。 总的来说,DWG属性SHP插件为我们在GIS软件中使用DWG文件提供了便利。它能够将DWG文件中的几何信息和属性信息换为SHP文件,使其在GIS软件中更容易进行空间分析和数据管理。该插件简单易用,功能强大,是GIS领域中不可或缺的工具之一。 ### 回答2: DWG属性SHP插件是一种常用的CAD软件辅助工具。DWG是AutoCAD的标准文件格式,而SHP则是ArcGIS软件使用的矢量地理信息文件格式。通过DWG属性SHP插件,用户可以将CAD中的形数据和属性信息换为GIS中的矢量数据,并保留形对象的属性信息。 该插件的安装和使用相对简单。首先,用户需要安装对应版本的CAD软件,并确保具备访问DWG文件的权限。其次,下载并安装DWG属性SHP插件,根据安装向导完成插件的安装。 一旦插件安装完成,用户可以通过以下步骤进行换操作: 1. 启动CAD软件,打开需要换的DWG文件。 2. 找到插件工具栏或菜单项,点击“DWG属性SHP”选项。 3. 在换设置中,用户可以选择要换的DWG层、属性字段以及输出文件的保存路径和格式。 4. 单击“换”按钮,开始进行DWG属性SHP的过程。 5. 换完成后,插件会将DWG中的层和属性信息按照用户设定的输出格式保存为SHP文件。 使用DWG属性SHP插件可以提高CAD与GIS之间的数据交互性和共享性。通过该插件,用户能够快速将DWG文件中的形数据换为SHP格式,方便在ArcGIS等GIS软件中进行空间分析、地等工作。同时,插件支持属性字段换,保留了CAD中对象的相关信息,使得换后的SHP数据更具可读性和可操作性。 需要注意的是,插件的换结果可能受到DWG文件的复杂程度和属性字段的多样性影响。用户在操作时应根据实际情况灵活选择换设置,以获得最佳的换效果。 ### 回答3: DWG属性SHP插件是一种用于将AutoCAD中的DWG文件(包含属性数据)换为SHP文件的工具。DWG文件是AutoCAD软件使用的原生数据格式,而SHP文件是一种用于存储地理空间数据的常用格式。 使用DWG属性SHP插件可以提供以下优点: 1. 数据换:该插件可以将DWG文件中的几何要素和相应的属性数据换为SHP文件,便于在GIS软件中使用和处理。 2. 属性保留:插件能够保留DWG文件中的属性数据,并将其换为SHP文件的属性表。这意味着换后的SHP文件会包含与DWG文件中相对应的属性信息,便于进一步的地理空间分析和可视化。 3. 批量换:插件通常支持批量换,可以一次性换多个DWG文件为SHP文件。这样可以节省时间和劳动力,提高工作效率。 4. 定制选项:一些插件提供了一些定制选项,允许用户根据自己的需要进行设置。例如,可以选择换的DWG层、换为SHP的几何要素类型等。 5. 操作简便:这类插件通常拥有用户友好的界面和简单的操作步骤,即使是对于没有专门的GIS技能的用户,也可以轻松上手。 总而言之,DWG属性SHP插件是一种方便快捷的工具,可以帮助用户将AutoCAD中的DWG文件换为SHP文件,并保留其属性数据。通过使用这种插件,用户可以更好地在GIS软件中分析和处理DWG数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值