明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11933|回复: 17

如何将CAD线段的长度输出到EXCEL中

  [复制链接]
发表于 2004-3-10 15:45:00 | 显示全部楼层 |阅读模式
我现在有件很无聊的事情要做,就是将CAD文件中许多线段的长度写到EXCEL中


然后做其他计算,由于测量的数据太多,手工做会吐血的!!


现在请教各位高手,我应该如何做呢?


我对编程不精通请哪位高手能详细的告诉我~~
发表于 2004-3-11 08:17:00 | 显示全部楼层
对编程不精通?若想学编程,可以阅读一下名为“VBA读写EXCEL文档的一般方法”或“在VC中彻底玩转EXCEL”的帖子。


若只要现成的程序,        请发一个EXCEL样表,编程时需要知道如何填写EXCEL表格。这样的程序用VBA相对容易,若需要VLISP或ARX程序,请跟帖说明。


最后,这个工作既然对你有用,就不应该是件很无聊的事情。
 楼主| 发表于 2004-3-11 08:48:00 | 显示全部楼层
多谢!我想先解决燃眉之急能否先给出程序?我需要的格式很简单,只需要将CAD中的某一层的线长输入到EXCEL中去,EXCEL的格式仅需要序列号和长度,仅仅是长度也可以.公司是为了计算芯片中金线用的.
发表于 2004-3-11 09:30:00 | 显示全部楼层

简单程序

  1. Sub GetLenth()
  2.    Dim ExcelApp As New Excel.Application
  3.    Dim ExcelWkbk As Excel.Workbook
  4.    Set ExcelWkbk = ExcelApp.Workbooks.Add
  5.    Dim i As Integer
  6.    i = 1
  7.    Dim Ent As AcadEntity
  8.    Dim pt1 As Variant, pt2 As Variant
  9.    With ExcelWkbk.Worksheets("sheet1")
  10.        For Each Ent In ThisDrawing.ModelSpace
  11.            If Ent.ObjectName = "AcDbLine" Then
  12.                .Range("A" & i) = i
  13.                .Range("B" & i) = Ent.Length
  14.                i = i + 1
  15.            End If
  16.        Next Ent
  17.    End With
  18.    ExcelApp.ActiveWorkbook.SaveAs "d:\AcadLen.xls"
  19.    ExcelApp.Workbooks.Close
  20.    ExcelApp.Quit
  21. End Sub
程序未加注释。工程需引用Microsoft Excel Object Library。EXCEL保存为d:\AcadLen.xls。EXCEL文档第一列为序号,第二列为线的长度。
发表于 2004-3-11 09:46:00 | 显示全部楼层

SRY,没注意你需要某特定图层对象

  1. Sub GetLenth()
  2.    Dim ExcelApp As New Excel.Application
  3.    Dim ExcelWkbk As Excel.Workbook
  4.    Set ExcelWkbk = ExcelApp.Workbooks.Add
  5.    Dim i As Integer
  6.    i = 1
  7.    Dim Sel As AcadSelectionSet
  8.    On Error Resume Next
  9.    Set Sel = ThisDrawing.SelectionSets.Add("ss")
  10.    If Err Then
  11.        Err.Clear
  12.        ThisDrawing.SelectionSets.Item("ss").Delete
  13.        Set Sel = ThisDrawing.SelectionSets.Add("ss")
  14.    End If
  15.    On Error GoTo 0
  16.    Dim gpCode(0) As Integer
  17.    Dim dbValue(0) As Variant
  18.    gpCode(0) = 8
  19.    dbValue(0) = "图层1"
  20.    Sel.Select acSelectionSetAll, , , gpCode, dbValue
  21.    Dim Ent As AcadEntity
  22.    With ExcelWkbk.Worksheets("sheet1")
  23.        For Each Ent In Sel
  24.            If Ent.ObjectName = "AcDbLine" Then
  25.                .Range("A" & i) = i
  26.                .Range("B" & i) = Ent.Length
  27.                i = i + 1
  28.            End If
  29.        Next Ent
  30.    End With
  31.    ExcelApp.ActiveWorkbook.SaveAs "d:\AcadLen.xls"
  32.    ExcelApp.Workbooks.Close
  33.    ExcelApp.Quit
  34.    Sel.Delete
  35. End Sub
以上程序仅保存“图层1”的线长。
 楼主| 发表于 2004-3-11 14:13:00 | 显示全部楼层
太感谢你了~~~~~


看来还需多学习!
发表于 2004-3-26 16:37:00 | 显示全部楼层
请问如果是要输入ACCESS数据库的该怎么办?
发表于 2009-10-6 10:55:00 | 显示全部楼层

如果图形中包含圆弧,或样条曲线,那样的话,按照上面的方法好像不可以?

发表于 2009-10-13 11:35:00 | 显示全部楼层
这个太有用了,谢谢
发表于 2009-10-25 20:34:00 | 显示全部楼层
执行的命令是什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 20:30 , Processed in 0.205187 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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