浅析VB语言在地籍测绘调查中的应用

2020-07-27 15:54吕永杰
关键词:批量文件夹实例

吕永杰

【摘  要】VB语言可以实现应用软件的转化也可以实现应用软件的批量改正,极大地提高了地籍测绘调查成果的转化和改正效率,为大批量的数据应用提供了可行的方法。

【Abstract】VB language can realize the transformation of application software and batch correction of application software, which greatly improves the efficiency of transformation and correction of the results of cadastral surveying, mapping and investigation, and provides a feasible method for mass data application.

【关键词】VB语言;地籍测绘;地籍调查

【Keywords】VB language; cadastral surveying and mapping; cadastral investigation

【中图分类号】P272;TP312                               【文献标志码】A                                   【文章编号】1673-1069(2020)05-0191-03

1 引言

地籍测绘调查是不动产登记中最基础的部分,是反映不动产的核心成果。VB语言可以实现在地籍测绘调查中宗地图的批量修改、PDF输出以及房屋的批量转化。本文结合具体实例,介绍了VB语言在地籍测绘调查中的具体应用,以期方便快捷地实现批量改正及转化。

2 VB语言简介

Visual Basic(以下简称VB)是一种通用的基于对象的程序设计语言,以结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。

VB语言便于程序员使用,可以简单建立应用程序的GUI系统,同时,又可以开发相当复杂的程序。VB语言具有以下几个特点:可视化的设计平台、事件驱动的编程机制、结构化的程序设计语言、强大的数据库功能。

3 VB语言在地籍测绘调查中的实例应用

VB語言既可以实现应用软件的转化又可以实现应用软件的批量改正。应用转化软件可以通过VB语言实现多种软件之间的转化,如CAD图形可以通过PDF转化软件实现转换。VB语言也可以实现宗地图的批量改正,可以极大地提高工作效率和质量。下面通过实例来说明CAD图形转换为PDF、宗地图的批量改正,具体分析VB语言在地籍测绘调查中的应用。

①CAD图形转换为PDF,单宗输出

Sub 单宗输出PDF()

Dim strPath As String

Dim Message, Title, Default As String

Message = "输入宗地文件夹所在地址,仅保留个人宗地文件"

Title = "地址输入框"    ' 设置标题。

Default = "D:\CADVBA\SFDFAS"    ' 设置缺省值。

' 显示信息、标题及缺省值。

strPath = InputBox(Message, Title, Default)

Call FindPathdanzongPDF(strPath)

End Sub

②宗地图的批量改正

Sub 修改宗地图()

Dim xuhao, ID, biaoshi, kong, jiushuju, xinshuju As String

Dim zongdihao, zongdihao2 As String

Dim y, x As Integer

Dim guding1, guding2 As AcadText

y = 0

x = 1

Dim returnObj As AcadObject

Dim wenjianming As String

wenjianming = InputBox("请输入文件路径", "改坐标生成文件输入框", "路径")

Close #1

Close #2

If wenjianming = "" Then

MsgBox "空文件"

End

Else

Open wenjianming + "\1.csv" For Input As #1

End If

Open wenjianming + "\2.txt" For Output As #2   ' 打开文件。

Dim cunwenjianjia As String

cunwenjianjia = InputBox("路径", "要修改宗地图文件夹", "路径")

Do While Not EOF(1)

Input #1, xuhao, ID, biaoshi, zongdihao, kong, jiushuju, xinshuju

If ID = "OID" Then GoTo line1

Debug.Print xuhao, ID, biaoshi, zongdihao, kong, jiushuju, xinshuju

If zongdihao2 <> CStr(zongdihao) Then

''找到宗地文件夹及调查数据成果

Dim s, zongditupath As String

s = wenjianjialujing(cunwenjianjia, CStr(zongdihao))

zongditupath = s & "\调查数据成果\ZDT.dwg"

If zongdihao2 = "" Then ''第一张图宗地号二等于"",不能关闭当前图形

ThisDrawing.Application.Documents.Open (zongditupath)

Else

ThisDrawing.Application.ActiveDocument.Save

'                 Print #2, x, CInt(xuhao) - 1, biaoshi, zongdihao2

'                 x = x + 1

ThisDrawing.Application.ActiveDocument.Close

ThisDrawing.Application.Documents.Open (zongditupath)

End If

''创建选择集

Dim tucengSS As AcadSelectionSet

Dim wenziSS As AcadSelectionSet

''图层选择集

'           Set tucengSS = ThisDrawing.SelectionSets.Add("tucengSS")

'           If Err Then Set tucengSS = ThisDrawing.SelectionSets.Add("tucengSS")

'           tucengSS.Clear

''文字选择集

Set wenziSS = ThisDrawing.SelectionSets.Add("wenziSS")

If Err Then Set wenziSS = ThisDrawing.SelectionSets.Add("wenziSS")

wenziSS.Clear

On Error Resume Next

Dim gpCode(0) As Integer

Dim dataValue(0) As Variant

gpCode(0) = 0

dataValue(0) = "Text"

Dim groupCode As Variant, dataCode As Variant

groupCode = gpCode

dataCode = dataValue

wenziSS.Select acSelectionSetAll, , , groupCode, dataCode

'文字替換

Dim tihuan As AcadText

If biaoshi = "ZD" Then

For Each tihuan In wenziSS

With tihuan

If InStr(.TextString, jiushuju) Then

.TextString = Replace(.TextString, jiushuju, xinshuju)

Print #2, CInt(xuhao), biaoshi, zongdihao

Exit For

End If

End With

Next tihuan

ElseIf biaoshi = "JZX" Then

For Each tihuan In wenziSS

If tihuan.TextString = jiushuju Then

y = y + 1

Set guding1 = tihuan

End If

Next tihuan

If y = 1 Then

guding1.TextString = xinshuju

Print #2, CInt(xuhao), biaoshi, zongdihao

y = 0

ElseIf y > 1 Then

ThisDrawing.Application.ZoomExtents

MsgBox "修改" & jiushuju

ThisDrawing.Utility.GetEntity returnObj, basePnt,

If returnObj.EntityName = "AcDbText" Then

Set guding2 = returnObj

guding2.TextString = xinshuju

Print #2, CInt(xuhao), biaoshi, zongdihao

'                      ThisDrawing.Application.ActiveDocument.Saved

End If

y = 0

End If

End If

'         Dim zongditupath2 As String

zongditupath2 = zongditupath

zongdihao2 = zongdihao

Else

If biaoshi = "ZD" Then

For Each tihuan In wenziSS

With tihuan

If InStr(.TextString, jiushuju) Then

.TextString = Replace(.TextString, jiushuju, xinshuju)

Print #2, CInt(xuhao), biaoshi, zongdihao

Exit For

End If

End With

Next tihuan

ElseIf biaoshi = "JZX" Then

For Each tihuan In wenziSS

If tihuan.TextString = jiushuju Then

y = y + 1

Set guding1 = tihuan

End If

Next tihuan

If y = 1 Then

guding1.TextString = xinshuju

Print #2, CInt(xuhao), biaoshi, zongdihao

y = 0

ElseIf y > 1 Then

ThisDrawing.Application.ZoomExtents

MsgBox "修改" & jiushuju

ThisDrawing.Utility.GetEntity returnObj, basePnt,

If returnObj.EntityName = "AcDbText" Then

Set guding2 = returnObj

guding2.TextString = xinshuju

Print #2, CInt(xuhao), biaoshi, zongdihao

'                      ThisDrawing.Application.ActiveDocument.Save

End If

y = 0

End If

End If

End If

line1:

'    Print #2, CInt(xuhao) - 1, biaoshi, zongdihao

Loop

ThisDrawing.Application.ActiveDocument.Save

ThisDrawing.Application.ActiveDocument.Close

'      Print #2, x + 1, CInt(xuhao) - 1, biaoshi, zongdihao

Print #2, CInt(xuhao), biaoshi, zongdihao

Close #1

Close #2

End Sub

4 結语

本文通过具体实例,验证了VB程序的逻辑可行性,对实现大数据改正和应用转化作出了有益的探索。

【参考文献】

【1】TD/T 1001—2012 地籍调查规程[S].

【2】何伟.实例学习VB条件语句[J].电脑编程技巧与维护,2016(2):13.

【3】津政办发〔2012〕66号.天津市农村集体土地使用权及其地上房屋调查及确权登记发证工作实施细则[Z].

猜你喜欢
批量文件夹实例
挂在墙上的文件夹
浅议高校网银批量代发
完形填空Ⅱ
完形填空Ⅰ
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究