找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 638|回复: 5

[VBA程序]:直线顶点信息输到excel中怎样排序?

[复制链接]
发表于 2004-11-20 15:53:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我想把我在cad图形中所选择的所有直线的顶点信息(起点、终点)输到excel表中,但是我发现所列出的数据不是我想像的顺序。我画的直线都是竖直的(起点、终点x相同,y不同),从左向右的(就是x值逐渐增大),但是我查看导到表中的直线x坐标,有些线没有按照顺序,x小的直线排到x大的下一条线后面去了。这是怎么回事?我选择线的顺序是每一行从左到右,选了5行。恳请大侠指正,谢谢!
Public Sub linetoexcel()
  Dim ExcelApp As New Excel.Application
  Dim ExcelWkbk As Excel.Workbook
  Set ExcelWkbk = ExcelApp.Workbooks.Add
  Dim sel As AcadSelectionSet
  Dim i As Integer
  i = 2
  On Error Resume Next
  Set sel = ThisDrawing.SelectionSets.Add("ssel")
  If Err Then
    Err.Clear
    Set sel = ThisDrawing.SelectionSets.Item("ssel")
  End If
  On Error GoTo 0
  sel.SelectOnScreen
  Dim Ent As AcadEntity
  Dim pt1 As Variant, pt2 As Variant
  MsgBox ExcelWkbk.Name
  With ExcelWkbk.Worksheets("sheet1")
  For Each Ent In sel
    If UCase(Ent.ObjectName) = "ACDBLINE" Then
        .Range("A" & i) = "l" & i
        pt1 = Ent.StartPoint
        pt2 = Ent.EndPoint
        .Range("B" & i) = pt1(0)
        .Range("c" & i) = pt1(1)
        .Range("D" & i) = pt2(0)
        .Range("E" & i) = pt2(1)
        i = i + 1
      Else
    End If
  Next Ent
  End With
  ExcelApp.ActiveWorkbook.SaveAs "e:yy\vba\book1.xls"
  ExcelApp.Workbooks.Close
  ExcelApp.Quit
  sel.Delete
End Sub
运行后,excel表中数据:
l2        362.4241116        373.1835472        362.4241116        373.7570472
l3        360.4241116        373.2168806        360.4241116        373.7570472
l4        376.8741116        372.9427139        376.8741116        373.7570472
l5        373.5641116        372.9978806        373.5641116        373.7570472
l6        371.5641116        373.0312139        371.5641116        373.7570472
l7        378.8741116        372.9093806        378.8741116        373.7570472
l8        390.0141116        372.7903806        390.0141116        373.7570472
l9        388.0141116        373.7570472        388.0141116        372.7570472
l10        393.3241116        372.8455472        393.3241116        373.7570472
l11        395.3241116        372.8788806        395.3241116        373.7570472
l12        406.4641116        373.0645472        406.4641116        373.7570472
l13        404.4641116        373.0312139        404.4641116        373.7570472
l14        411.7741116        373.1530472        411.7741116        373.7570472
l15        409.7741116        373.1197139        409.7741116        373.7570472
l16        420.9141116        373.3053806        420.9141116        373.7570472
l17        422.9141116        373.3387139        422.9141116        373.7570472
l18        358.4241116        370.805545        358.4241116        371.3123783
l19        360.4241116        370.7722117        360.4241116        371.3123783
l20        369.5641116        370.6198783        369.5641116        371.3123783
l21        376.8741116        370.498045        376.8741116        371.3123783
l22        374.8741116        370.5313783        374.8741116        371.3123783
l23        371.5641116        370.586545        371.5641116        371.3123783
l24        386.0141116        370.3457117        386.0141116        371.3123783
l25        388.0141116        371.3123783        388.0141116        370.3123783
l26        393.3241116        370.4008783        393.3241116        371.3123783
l27        391.3241116        370.367545        391.3241116        371.3123783
l28        402.4641116        370.5532117        402.4641116        371.3123783
l29        407.7741116        370.6417117        407.7741116        371.3123783
l30        404.4641116        370.586545        404.4641116        371.3123783
l31        409.7741116        370.675045        409.7741116        371.3123783
l32        420.9141116        370.8607117        420.9141116        371.3123783
l33        418.9141116        370.8273783        418.9141116        371.3123783
l34        356.192092        367.6595657        356.192092        367.4228991
l35        360.192092        367.6595657        360.192092        367.3562324
l36        375.192092        367.6595657        375.192092        367.1062324
l37        379.192092        367.6595657        379.192092        367.0395657
l38        393.592092        367.6595657        393.592092        366.7995657
l39        392.192092        367.6595657        392.192092        366.8228991
l40        389.192092        367.6595657        389.192092        366.8728991
l41        401.992092        367.6595657        401.992092        366.6595657
l42        400.592092        367.6595657        400.592092        366.6828991
l43        411.992092        367.6595657        411.992092        366.8262324
l44        415.992092        367.6595657        415.992092        366.8928991
l45        434.992092        367.6595657        434.992092        367.2095657
l46        430.992092        367.6595657        430.992092        367.1428991
l47        357.592092        364.7454142        357.592092        364.4854142
l48        361.592092        364.7454142        361.592092        364.4187475
l49        376.592092        364.7454142        376.592092        364.1687475
l50        380.592092        364.7454142        380.592092        364.1020809
l51        390.592092        364.7454142        390.592092        363.9354142
l52        394.992092        364.7454142        394.992092        363.8620809
l53        393.592092        364.7454142        393.592092        363.8854142
l54        401.992092        364.7454142        401.992092        363.7454142
l55        403.392092        364.7454142        403.392092        363.7687475
l56        413.392092        364.7454142        413.392092        363.9354142
l57        417.392092        364.7454142        417.392092        364.0020809
l58        432.392092        364.7454142        432.392092        364.2520809
l59        436.392092        364.7454142        436.392092        364.3187475
l60        346.192092        361.4637004        346.192092        361.3937004
l61        350.192092        361.4637004        350.192092        361.3270338
l62        369.192092        361.4637004        369.192092        361.0103671
l63        365.192092        361.4637004        365.192092        361.0770338
l64        382.192092        361.4637004        382.192092        360.7937004
l65        383.592092        361.4637004        383.592092        360.7703671
l66        379.192092        361.4637004        379.192092        360.8437004
l67        390.592092        361.4637004        390.592092        360.6537004
l68        391.992092        361.4637004        391.992092        360.6303671
l69        401.992092        361.4637004        401.992092        360.4637004
l70        405.992092        361.4637004        405.992092        360.5303671
l71        420.992092        361.4637004        420.992092        360.7803671
l72        424.992092        361.4637004        424.992092        360.8470338
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-20 19:34:05 | 显示全部楼层
通过选择集选择的物体是乱的,你可以使用代码一个一个添加,按从左到右,从上到下的顺序逐个向选择集内添加。或者也可以读取数据后利用代码循环重新排列。
不知道斑竹有没有更好的方法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-22 12:22:49 | 显示全部楼层
是的,我想按这样的顺序选择实体(四行竖向的短线段):从第一行开始,从左向右读取,然后是第二行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-22 19:50:34 | 显示全部楼层
全部选择进去后,用代码实现重新排序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-23 10:24:07 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-28 16:29:11 | 显示全部楼层
我觉得应该编程后按顺序选取各直线,你不妨试一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 13:04 , Processed in 0.173354 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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