- UID
- 109362
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-3-4
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
苯办法,可以画剖面,奇怪的是我的高城线从71--89逐级递增,总是先得到74,然后73,72,71 ,随后是75-89
为什么会出现前面的反常?
如果剖面线端点位于0,0, 好像问题就不会出现,这是咋回事?
Sub test()
Dim pObj As AcadEntity
Dim ss As AcadSelectionSet
Dim vps As Variant
Dim vps1 As Variant
Dim stri As String
Dim XX(0 To 9999) As Double
Dim YY(0 To 9999) As Double
Dim ZZ(0 To 9999) As Double
Dim distance(0 To 9999) As Double
Dim distance1(0 To 9999) As Double
‘按剖面线端点进行选择集创建
Set ss = ThisDrawing.ActiveSelectionSet
ss.Clear
ThisDrawing.Utility.GetEntity pObj, pnt
pObj.GetBoundingBox p1, p2
ss.Select acSelectionSetCrossing, p1, p2
Dim intPoints As Variant
Dim III As Integer, j As Integer, k As Integer
Dim strI1 As String
‘对选择集内的每个多段线进行求交点
For Each I In ss
If I.ObjectName = "AcDbPolyline" Then
‘把多段线的ELEVATON属性置为0,求交后恢复,得到K-1 个交点,坐标分别为XX\YY\ZZ
vps1 = I.Elevation
I.Elevation = 0
intPoints = pObj.IntersectWith(I, acExtendNone)
I.Elevation = VPS1
End If
If VarType(intPoints) <> vbEmpty Then
For III = LBound(intPoints) To UBound(intPoints)
intPoints(j + 2) = vps1
XX(k) = intPoints(j)
YY(k) = intPoints(j + 1)
ZZ(k) = intPoints(j + 2)
strI1 = "Intersection Point[" & k & "] is: " & XX(k) & "," & YY(k) & "," & ZZ(k)
MsgBox strI1, , "IntersectWith Example"
strI1 = ""
III = III + 2
j = j + 3
k = k + 1
Next
End If
j = 0
Next I
'求出每个交点的距离,把距离和高程对应,得到剖面线坐标DISTANCE
distance(0) = 0
For I = 1 To k - 1
distance(I) = Sqr(((XX(I) - XX(I - 1)) ^ 2) + ((YY(I) - YY(I - 1)) ^ 2)) + distance(I - 1)
Next
For I = 0 To k - 1
distance1(2 * I) = distance(I)
distance1(2 * I + 1) = ZZ(I)
Next
Set pline = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(distance1)
ss.Delete
End Sub |
|