明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1840|回复: 1

Line实体的排序问题。

[复制链接]
发表于 2008-6-26 14:40:00 | 显示全部楼层 |阅读模式

图1,在Acad中任意画4条line实体,顺序为1-3-2-4

 

其数据源为

619.5612 451.25180 969.7925 543.344 0LineCount1
791.6046846.2250486.4323 817.57410LineCount2
791.6046846.2250969.7925543.3440LineCount3
486.4323817.57410619.5612451.25180LineCount4

要求经过对4条line的startpoint和endpoint重新排序,要求顺序为1-2-3-4

 

请问各位大侠有什么好的算法和公式。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2008-6-26 15:03:00 | 显示全部楼层
本帖最后由 作者 于 2008-6-27 13:57:47 编辑

现在要经过首尾相连的算法,使顶点顺序为1-2-3-4
619.56119 451.25179  LineCount1
486.43234 817.5741  LineCount4
791.60463 846.22501  LineCount2
969.79248 543.34399  LineCount3
619.56119 451.25179  LineCount1

AutocadToTxt文件
  1. Sub ll()
  2.   ThisDrawing.ActiveTextStyle.fontFile = "c:\windows\fonts\SIMHEI.TTF"
  3.   Dim LineData As AcadLine, ArcData As AcadArc
  4.   Dim DrawingText As AcadText, DrawingCircle As AcadCircle
  5.   Close #1
  6.   Open "D:\ls.txt" For Output As #1
  7.   
  8.   Write #1, "m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8", "m9", "m10", "m11", "m12"
  9.   
  10.   Dim Ent As AcadEntity
  11.   ii = 1
  12.   For Each Ent In ThisDrawing.ModelSpace
  13.    
  14.     m1 = Ent.ObjectName
  15.     m2 = Ent.ObjectID
  16.     Select Case Ent.ObjectName
  17.       Case "AcDbLine"
  18.         Set LineData = Ent
  19.         
  20.         With LineData
  21.           'Set DrawingCircle = ThisDrawing.ModelSpace.AddCircle(.StartPoint, 35)
  22.          
  23.           m3 = Round(.StartPoint(0), 2)
  24.           m4 = Round(.StartPoint(1), 2)
  25.           m5 = Round(.StartPoint(2), 2)
  26.           m6 = Round(.EndPoint(0), 2)
  27.           m7 = Round(.EndPoint(1), 2)
  28.           m8 = Round(.EndPoint(2), 2)
  29.           ttt = "第" & ii & "点 " & "(" & m3 & "," & m4 & ")"
  30.          
  31.           Set DrawingText = ThisDrawing.ModelSpace.AddText(ttt, .EndPoint, 10)
  32.           With DrawingText
  33.             .Alignment = acAlignmentMiddleCenter
  34.             .TextAlignmentPoint = LineData.StartPoint
  35.             m9 = "第" & ii & "点"
  36.             ii = ii + 1
  37.           End With
  38.          
  39.         End With
  40.     End Select
  41.     Write #1, m1, m2, m3, m4, m5, m6, m7, m8, m9
  42.    
  43.   Next Ent
  44.   
  45.   Close #1
  46. End Sub


excel排序程序
  1. Sub aaarrr()
  2.   Dim rr(3, 5), rrr(4, 2)
  3.   For ii = 6 To 9
  4.     For jj = 3 To 7
  5.       rr(ii - 6, jj - 3) = Sheet1.Cells(ii, jj)
  6.     Next jj
  7.   Next ii
  8.   tt1 = rr(0, 0): tt2 = rr(0, 1)
  9. For gg = 0 To UBound(rrr)
  10.   For ii = 0 To UBound(rr)
  11.     If ii <> gg Then
  12.       If tt1 = rr(ii, 0) And tt2 = rr(ii, 1) Then
  13.         rrr(gg, 0) = rr(ii, 3): rrr(gg, 1) = rr(ii, 4):
  14.         tt1 = rrr(gg, 0): tt2 = rrr(gg, 1)
  15.       ElseIf tt1 = rr(ii, 3) And tt2 = rr(ii, 4) Then
  16.         rrr(gg, 0) = rr(ii, 0): rrr(gg, 1) = rr(ii, 1):
  17.         tt1 = rrr(gg, 0): tt2 = rrr(gg, 1)
  18.       End If
  19.       
  20.     End If
  21.    
  22.   Next ii
  23.   
  24.   For ii = 0 To UBound(rrr)
  25.     For jj = 0 To 1
  26.       Sheet1.Cells(ii + 16, jj + 6).Value = rrr(ii, jj)
  27.     Next jj
  28.   Next ii
  29.   
  30. Next gg
  31. End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1威望 +1 明经币 +1 收起 理由
Joseflin + 1 + 1 【好评】表扬一下

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-24 04:27 , Processed in 0.144585 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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