`
yuanlanxiaup
  • 浏览: 896156 次
文章分类
社区版块
存档分类
最新评论

获取CAD中线的每个节点坐标程序设计(二)

 
阅读更多

Private Sub 保存坐标数据文件SToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存坐标数据文件SToolStripMenuItem.Click
On Error GoTo handle01
Dim dg As New SaveFileDialog
dg.Filter = "txt files (*.txt)|*.txt|dat files (*.dat)|*.dat"
dg.ShowDialog()
Dim s As String = dg.FileName
Dim i As Integer
Dim s1 As String = ""
Using sw As StreamWriter = New StreamWriter(s)
For i = 0 To Count
s1 = xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString()
sw.WriteLine(s1)
Next
sw.Close()
End Using
Exit Sub
handle01:
MsgBox(Err.Description)
End SubPrivate Sub 刷新CAD图形RToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 刷新CAD图形RToolStripMenuItem.Click
On Error GoTo Handle01
AcadApp.ActiveDocument.Regen(AutoCAD.AcRegenType.acActiveViewport)
Exit Sub
Handle01:
MsgBox(Err.Description)
End Sub
Private Sub 退出EToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出EToolStripMenuItem1.Click
On Error GoTo Handle01
Application.Exit()
Exit Sub
Handle01:
MsgBox(Err.Description)
End Sub
Private Sub 获取线条上节点坐标LToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取线条上节点坐标LToolStripMenuItem1.Click
On Error GoTo handle01
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
'判断线的类型
Dim LineTypenName As String
LineTypenName = returnObj.ObjectName.ToString()
If LineTypenName = "AcDbLine" Then
Call 获取line线节点坐标()
ElseIf LineTypenName = "AcDbSpline" Then
Call 获取Spline线拟合点坐标()
ElseIf LineTypenName = "AcDbPolyline" Then
Call 获取样条线节点坐标()
Else : Exit Sub
End If
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim i As Integer
Dim s As String = ""
For i = 0 To Count
s = s + xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString() + Chr(13)
Next
RichTextBox1.Text = s
Button3.Enabled = True
AppActivate(Me.Text)
Exit Sub
handle01:
MsgBox(Err.Description)
End Sub
Private Sub 获取多段线上节点坐标SToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取多段线上节点坐标SToolStripMenuItem.Click
On Error GoTo handle01
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
'判断线的类型
Dim LineTypenName As String
LineTypenName = returnObj.ObjectName.ToString()
If LineTypenName = "AcDbPolyline" Then
Call 获取样条线节点坐标()
Else : Exit Sub
End If
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim i As Integer
Dim s As String = ""
For i = 0 To Count
s = s + xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString() + Chr(13)
Next
RichTextBox1.Text = s
Button3.Enabled = True
AppActivate(Me.Text)
Exit Sub
handle01:
MsgBox(Err.Description)
End Sub
Private Sub 获取样条线上节点坐标ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取样条线上节点坐标ToolStripMenuItem.Click
On Error GoTo handle01
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
'判断线的类型
Dim LineTypenName As String
LineTypenName = returnObj.ObjectName.ToString()
If LineTypenName = "AcDbSpline" Then
Call 获取Spline线节点坐标()
Else : Exit Sub
End If
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim i As Integer
Dim s As String = ""
For i = 0 To Count
s = s + xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString() + Chr(13)
Next
RichTextBox1.Text = s
Button3.Enabled = True
AppActivate(Me.Text)
Exit Sub
handle01:
MsgBox(Err.Description)
End Sub
Private Sub 获取样条线上拟合点坐标NToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取样条线上拟合点坐标NToolStripMenuItem.Click
On Error GoTo handle01
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
'判断线的类型
Dim LineTypenName As String
LineTypenName = returnObj.ObjectName.ToString()
If LineTypenName = "AcDbSpline" Then
Call 获取Spline线拟合点坐标()
Else : Exit Sub
End If
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim i As Integer
Dim s As String = ""
For i = 0 To Count
s = s + xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString() + Chr(13)
Next
RichTextBox1.Text = s
Button3.Enabled = True
AppActivate(Me.Text)
Exit Sub
handle01:
MsgBox(Err.Description)
End Sub
Private Sub 获取点的坐标DToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取点的坐标DToolStripMenuItem1.Click
On Error GoTo Handle01
Call 启动CAD()
Dim sset As AutoCAD.AcadSelectionSet
sset = AcadApp.ActiveDocument.SelectionSets.Add("NewSelectionSet")
' 提示用户选择对象
sset.SelectOnScreen()
Dim ent As Object
Dim sss As AutoCAD.AcadPoint
Count = -1
For Each ent In sset
If ent.Objectname = "AcDbPoint" Then
Count = Count + 1
ReDim Preserve xx(Count)
ReDim Preserve yy(Count)
ReDim Preserve zz(Count)
xx(Count) = ent.Coordinates(0)
yy(Count) = ent.Coordinates(1)
zz(Count) = ent.Coordinates(2)
End If
Next ent
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim i As Integer
Dim s As String = ""
For i = 0 To Count
s = s + xx(i).ToString() + "," + yy(i).ToString() + "," + zz(i).ToString() + Chr(13)
Next
RichTextBox1.Text = s
AcadApp.ActiveDocument.SelectionSets.Item("NewSelectionSet").Delete()
AppActivate(Me.Text)
Button3.Enabled = True
Exit Sub
Handle01:
AcadApp.ActiveDocument.SelectionSets.Item("NewSelectionSet").Delete()
Call 获取点的坐标DToolStripMenuItem1_Click(sender, e)
MsgBox(Err.Description)
End Sub
Private Sub 设置自动保存路径ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 设置自动保存路径ToolStripMenuItem.Click
Dim fdg As FolderBrowserDialog
fdg = New FolderBrowserDialog
fdg.ShowDialog()
If fdg.SelectedPath = "" Then Exit Sub
FolderPath = fdg.SelectedPath
End Sub
Private Sub 取线条上节点坐标并自动保存LToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取线条上节点坐标获取线条上节点坐标并自动保存LToolStripMenuItem2.Click
Static ExitNum As Integer
On Error GoTo handle01
Static SaveNum As Integer
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
AcadApp.ActiveDocument.SendCommand("@选取下一条线!连续在空白地方点击两次将会自动退出批量存储状态!" + vbCr)
'判断线的类型
Dim LineTypenName As String
LineTypenName = returnObj.ObjectName.ToString()
If LineTypenName = "AcDbLine" Then
Call 获取line线节点坐标()
ElseIf LineTypenName = "AcDbSpline" Then
Call 获取Spline线节点坐标()
ElseIf LineTypenName = "AcDbPolyline" Then
Call 获取样条线节点坐标()
End If
If TextBox1.Text <> 0 Or TextBox2.Text <> 0 Or TextBox4.Text <> 0 Then
Call CalculateCoordinate()
End If
Dim j As Integer
Dim s1 As String = ""
Using sw As StreamWriter = New StreamWriter(FolderPath + SaveNum.ToString() + ".txt")
For j = 0 To Count
s1 = xx(j).ToString() + "," + yy(j).ToString() + "," + zz(j).ToString()
sw.WriteLine(s1)
Next
sw.Close()
SaveNum = SaveNum + 1
End Using
ExitNum = 0
Call 取线条上节点坐标并自动保存LToolStripMenuItem2_Click(sender, e)
Exit Sub
handle01:
ExitNum = ExitNum + 1
If ExitNum = 2 Then
ExitNum = 0
Exit Sub
Else : Call 取线条上节点坐标并自动保存LToolStripMenuItem2_Click(sender, e)
End If
End Sub
Private Sub 获取3D多段线上节点坐标TToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取3D多段线上节点坐标TToolStripMenuItem.Click
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
AppActivate(AcadApp.Caption)
If returnObj.objectname = "AcDb3DPolyline" Then
Dim i As Integer
For i = 0 To 500
On Error GoTo handle01
Count = i
ReDim Preserve xx(i)
ReDim Preserve yy(i)
ReDim Preserve zz(i)
xx(i) = returnObj.Coordinate(i)(0)
yy(i) = returnObj.Coordinate(i)(1)
zz(i) = returnObj.Coordinate(i)(2)
Next
handle01:
Count = Count - 1
Dim j As Integer
Dim s As String = ""
For j = 0 To Count
s = s + xx(j).ToString() + "," + yy(j).ToString() + "," + zz(j).ToString() + Chr(13)
Next
RichTextBox1.Text = s
Button3.Enabled = True
AppActivate(Me.Text)
Else
MsgBox(Err.Description)
End If
End Sub
Private Sub 查询实体的对象名称OToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 查询实体的对象名称OToolStripMenuItem.Click
On Error GoTo handle1
Call 启动CAD()
Dim basePnt As Object
AcadApp.ActiveDocument.Utility.GetEntity(returnObj, basePnt)
returnObj.highlight(True)
AppActivate(AcadApp.Caption)
MsgBox(returnObj.objectname)
Exit Sub
handle1:
MsgBox(Err.Description)
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
StepNum = CInt(TextBox3.Text)
End Sub
Private Sub 获取线上节点坐标并绘制该节点DToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 获取线上节点坐标并绘制该节点DToolStripMenuItem.Click
On Error GoTo handle01
Call 启动CAD()
Dim sset As AutoCAD.AcadSelectionSet
sset = AcadApp.ActiveDocument.SelectionSets.Add("NewSelectionSet01")
' 提示用户选择对象
sset.SelectOnScreen()
Dim ent As Object
Dim entObjectname As String
Dim i As Integer
Timer1.Enabled = True
Dim ProgressForm As New Form2 '定义进程窗体
ProgressForm.Show()
AppActivate(ProgressForm.Text)
For Each ent In sset
entObjectname = ent.Objectname
returnObj = ent
If entObjectname = "AcDbPolyline" Then
Call 获取样条线节点坐标()
ElseIf entObjectname = "AcDbLine" Then
Call 获取line线节点坐标()
ElseIf entObjectname = "AcDbSpline" Then
Call 获取Spline线拟合点坐标()
ElseIf entObjectname = "AcDb2dPolyline" Then
Call 获取2DPolyline节点坐标()
End If
Call 绘制点()
i += 1
ProgressForm.Refresh()
ProgressForm.ProgressBar1.Value = (i / sset.Count) * 100
ProgressForm.Label1.Text = "已完成:" + Format(((i / sset.Count) * 100), "##.##") + "%"
Next ent
AcadApp.ActiveDocument.SelectionSets.Item("NewSelectionSet01").Delete()
ProgressForm.Close()
MsgBox("执行完成!")
Exit Sub
handle01:
AcadApp.ActiveDocument.SelectionSets.Item("NewSelectionSet01").Delete()
MsgBox(Err.Description)
End Sub
Public Sub 绘制点()
Dim i As Integer
Dim ppoint(2) As Double
For i = 0 To Count
ppoint(0) = xx(i)
ppoint(1) = yy(i)
ppoint(2) = zz(i)
AcadApp.ActiveDocument.ModelSpace.AddPoint(ppoint)
Next
ReDim xx(0)
ReDim yy(0)
ReDim zz(0)
Count = -1
End Sub
End Class <!--v:3.2-->

<!--E 文章--><!--S 翻页-->
分享到:
评论

相关推荐

    VB制作 VB自动获取CAD内点、线坐标

    标题中的“VB制作 VB自动获取CAD内点、线坐标”是指使用Visual Basic(VB)编程语言来开发一个程序,该程序能够自动读取并提取AutoCAD(CAD)软件中的点和线的坐标信息。这个小工具对于那些需要进行CAD数据处理或者...

    提取CAD坐标至Excel

    - 在AutoCAD中,每个对象都有一个起点坐标和终点坐标,定义了它的位置和尺寸。 2. **提取坐标的方法** - **命令行操作**:在AutoCAD中,可以使用“LIST”或“DI”命令查看对象的坐标。例如,“LIST”命令会显示...

    中线逐桩坐标计算原理

    中线逐桩坐标计算原理很好用的看一下你就会了解的。

    cad Z坐标 归零.lsp

    cad编辑时经常遇到线不共面的情况,该小程序可以轻松解决cad中线不共面问题

    ZX中心线V1.0_LSP_cad中心线lsp_ZX中心线V1.0_生成中线_CAD插件_

    "ZX中心线V1.0_LSP_cad中心线lsp_ZX中心线V1.0_生成中线_CAD插件_"这个标题揭示了一个专为CAD设计的插件,它的主要功能是生成平行线的中线。此插件版本号为V1.0,意味着它可能是一个初始版本,但已经具备了基本的...

    中线CAD软件基本操作流程

    中线CAD软件是汽车线束行业中的一款专业绘图和设计软件,它能够处理汽车线束的设计任务,如计算线长、导出工艺数据和工装板等。软件的特色在于其快速的处理能力以及能够将客户提供的图纸迅速转换为中线CAD能够认可和...

    汽车线束设计软件及中线CAD应用简介 (1).pdf

    中线CAD在线束设计中的应用主要表现在以下几个方面: 2.1 原理图绘制 中线CAD在原理图绘制方面具备万能电器属性块定义功能和数据库电器模块参数化管理功能。这些功能可以快速定义电器及引脚属性,并通过自动连线...

    中线CAD使用步骤

    中线CAD使用步骤

    中线CAD基础操作流程.pdf

    根据提供的文件信息,内容似乎涉及了一本名为《中线CAD基础操作流程》的PDF文件。文件内容与CAD(计算机辅助设计)软件使用相关,可能包含了操作流程、步骤说明以及一些相关的CAD术语和概念。由于提供的内容片段包含...

    mapinfo中提取点坐标

    总的来说,MapInfo中的坐标提取是一个简单但非常实用的功能,它使得从地图对象中获取精确的地理位置信息变得容易,这对于地理数据分析、制图以及位置服务等多种应用都是至关重要的。熟练掌握这个操作,将使你在GIS...

    汽车线束设计软件及中线CAD应用简介.pdf

    本文将详细介绍汽车线束的发展历程,以及国内外汽车线束设计软件和中线CAD的应用情况。 在早期的汽车中,由于结构简单、机械控制占主导地位,线束的设计和制造相对简单,主要依赖手工进行连接和固定。但随着汽车...

    中线逐桩坐标计算原理PPT学习教案.pptx

    【中线逐桩坐标计算原理】是公路工程和土木工程中的重要理论,涉及到道路设计与施工中的坐标定位。在公路或铁路建设中,确保每个桩位的精确坐标至关重要,因为这直接影响到路线的平顺性和安全性。本教程将详细阐述这...

    线路中线坐标

    二维数组可以有效地表示每个坐标的X和Y分量,使后续的数据处理更加方便。 #### 关键知识点分析 1. **坐标计算与数组设置**: - 在进行坐标计算时,通常需要处理多个点之间的关系,因此使用二维数组来存储坐标是...

    齿轮传动CAD开发中线图程序化处理方法.pdf

    数字图像技术在CAD中的应用包括使用二维数组来表示图像矩阵,每一列的像素代表一个采样点。线图上的曲线可以用像素的颜色值来表示,通过搜索这些颜色值可以确定曲线上的点的位置。例如,在一个以灰度表示的图像中,...

    CAD软件+教程

    CAD,全称Computer-Aided Design,是计算机辅助设计的缩写,是一种广泛应用于工程、建筑、机械、电子等领域的设计工具。本资源“CAD软件+教程”提供了全面的学习材料,旨在帮助用户掌握CAD的基本操作和高级技巧,使...

    5800计算器全线坐标计算放样程序

    每个计算步骤都封装在一个标签(LB1)下,根据里程K的判断,程序跳转至相应的标签执行计算。在运行时,只需要加载对应的工程数据文件(如A匝道的"A"文件),即可自动完成整个计算过程。 5800计算器的这种编程模式...

    ArcGIS中线坐标的导出方法

    ArcGIS中导出线的坐标值,将shp文件的坐标点导出来

    5800P计算机坐标正反算程序

    1. **主程序**(Lbl4):这部分程序包含了两个主要功能选项,“1.SZ=&gt;XY”表示从线路参数坐标转换为空间直角坐标,“2.XY=&gt;SZ”则相反,从空间直角坐标转换为线路参数坐标。用户需要选择执行哪一种操作,并输入必要...

Global site tag (gtag.js) - Google Analytics