乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 82|回复: 7

[编程交流] DXF中的顶点

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:40:34 | 显示全部楼层 |阅读模式
我想从已经创建的中获取顶点。dxf文件。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:52:20 | 显示全部楼层
是否要分析与关联的文本。dxf文件而不在AutoCAD中打开该文件?
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:00:26 | 显示全部楼层
我想将其存储在数组中,以便修改。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:13:43 | 显示全部楼层
今天剩下的时间我都不在办公室附近,所以要到今晚晚些时候才能提供任何编码建议。不过,我会问几个问题来帮助澄清你的情况。
 
文件是否在AutoCAD中打开?您将使用什么程序语言?所有的多段线是否都与世界坐标系共面,或者在空间中是否存在一些任意方向,或者,更好的是,您是否可以发布一个示例文件来演示数据?
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:23:22 | 显示全部楼层
为此,我正在使用Autocad VBA和Autocad2007。假设我在空间中有一个共面闭合多边形(例如三角形)的文件,那么我应该能够将顶点数据(x,y,z坐标)存储在一个数组中。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:26:39 | 显示全部楼层
Coordinates属性(AcadLWPolyline.Coordinates)返回一维数组。如果需要一个二维数组(逻辑要求),那么这样的东西可能会达到目的。
 
编辑:代码已删除。参见第#8页中的修改代码
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:34:57 | 显示全部楼层
非常感谢。它起作用了。你是怎么做到的?有没有找到解决方案的一般方法?
再次感谢
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:47:58 | 显示全部楼层
使用ActiveX和VBA参考需要一些时间才能习惯AutoCAD文件的数据结构。帮助文档非常好。
 
For/Next循环必须根据实体的底层数据结构进行设置。
 
 
 
为了完整性;这里有一个更通用的例程,它将在任何方向或高程分析LWPOLY。
 
  1. Sub StoreCoordsInArray3d()
  2. Dim entPline As AcadLWPolyline
  3. Dim varPt As Variant
  4. Dim ent As AcadEntity
  5. Dim coords As Variant
  6. Dim dblPtArray() As Double
  7. Dim intBound As Integer
  8. Dim i As Integer
  9. Dim strMsg As String
  10. Dim varNormal As Variant
  11. Dim dblElev As Double
  12. Dim dblPt(2) As Double
  13. Dim varTrans As Variant
  14.   With ThisDrawing
  15.      On Error Resume Next
  16.      .Utility.GetEntity ent, varPt, "Select a Poly:"
  17.      If Err <> 0 Then Exit Sub
  18.      On Error GoTo 0
  19.      If TypeOf ent Is AcadLWPolyline Then
  20.         Set entPline = ent
  21.         dblElev = entPline.Elevation
  22.         varNormal = entPline.Normal
  23.         coords = entPline.Coordinates
  24.         intBound = ((UBound(coords) + 1) / 2) - 1
  25.         ReDim dblPtArray(intBound, 2)
  26.         For i = 0 To intBound
  27.            dblPt(0) = coords(2 * i)
  28.            dblPt(1) = coords((2 * i) + 1)
  29.            dblPt(2) = dblElev
  30.            varTrans = .Utility.TranslateCoordinates(dblPt, acOCS, acWorld, 0, varNormal)
  31.            dblPtArray(i, 0) = varTrans(0)
  32.            dblPtArray(i, 1) = varTrans(1)
  33.            dblPtArray(i, 2) = varTrans(2)
  34.            strMsg = strMsg & CStr(dblPtArray(i, 0)) & ", "
  35.            strMsg = strMsg & CStr(dblPtArray(i, 1)) & ", "
  36.            strMsg = strMsg & CStr(dblPtArray(i, 2)) & vbCr
  37.         Next
  38.         MsgBox strMsg
  39.         
  40.      End If
  41.      
  42.   End With
  43. End Sub
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 02:09 , Processed in 0.601657 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表