明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4035|回复: 8

[求助]怎样把二维多段线转化为三维多段

[复制链接]
发表于 2004-9-29 12:09:00 | 显示全部楼层 |阅读模式
我想编制程序处理等高线. 等高线是二维多段线,并且标注有标高值.怎样编制程序把这些二维多段线转化为三维多段线呢?请大家出招.谢谢了!
发表于 2004-9-29 12:19:00 | 显示全部楼层
二维多段线的Coordinates属性是二维点数组,转换为三维点数组,再新生成一条多段线
 楼主| 发表于 2004-9-29 13:43:00 | 显示全部楼层
谢谢斑竹,能举个例子吗?
发表于 2004-9-29 14:22:00 | 显示全部楼层
gzy有一个程序是二维转三维的,你搜一下
 楼主| 发表于 2004-9-30 10:21:00 | 显示全部楼层
没找到呀.只是在看到了三维转二维的程序.
发表于 2004-9-30 10:23:00 | 显示全部楼层
原理是一样的呀
发表于 2004-9-30 10:48:00 | 显示全部楼层
无非是数组的维数改变一下,然后删掉原线,重画,楼主,
 楼主| 发表于 2004-9-30 11:37:00 | 显示全部楼层
本帖最后由 作者 于 2004-9-30 12:00:42 编辑

谢谢,帮我看看这个程序红色部分是什么意思?另外,我怎么判断哪个数字标注属于哪条线的呢? 程序目的:将3D多段线转换为2D多段线;
程序思路:创建选择集,然后遍历,提取3D多段线的X,Y,然后画2D多段线,再删除3D多段线。
Sub test3Dto2D()
创建选择集
Dim selset As AcadSelectionSet
Dim cor3 As Variant
Dim n As Integer
Dim a As Integer
a = 0
Set selset = ThisDrawing.SelectionSets.Add("sset")
selset.Select acSelectionSetAll 遍历选择集并将每一个对象镜相
Dim entry As AcadObject
Dim pl As AcadLWPolyline For Each entry In selset
If entry.EntityName = "AcDb3dPolyline" Then
cor3 = entry.Coordinates
n = (UBound(cor3) + 1) * 2 / 3
Dim pt() As Double
ReDim pt(0 To n - 1) As Double For i = 0 To (n - 2) Step 2
pt(i) = cor3(a)
pt(i + 1) = cor3(a + 1)
a = a + 3
Next i Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(pt)
继承特性
pl.Layer = entry.Layer
pl.color = entry.color
entry.Delete
a = 0
End If
Next entry selset.Delete 避免下次重复
发表于 2004-9-30 15:45:00 | 显示全部楼层
获得对应的二维多段线的顶点数组中元素个数。


本来是三维多段线,顶点个数就是顶点数组元素个数除以3,再乘以2就得到对应的二维多段线顶点数组中元素个数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 01:42 , Processed in 0.185946 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表