乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 54|回复: 1

简单的VB源码(Excel表格转 CAD)

[复制链接]

13

主题

59

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2014-1-22 20:26:00 | 显示全部楼层 |阅读模式
本来想看看“VB源码(Excel CAD)表格互转”的源代码,结果没有看到附件,我来发一个简单的。单元格的行高、列宽、对齐方式、字体、合并等等 等等都没有考虑,只是演示了读5行3列的电子表格数据转化到CAD中。
过程:新建一个CAD文件、打开电子表格文件、画格子、读电子表格内容添加到CAD。
使用方法:新建工程,添加一个按钮,将下面的代码复制,也可以下载源码附件(包含一个测试用的电子表格文件)。
  1. Private Sub Command1_Click()
  2. Dim oBook As Object
  3. Dim oSheet As Object
  4. Dim oAcadDoc As Object
  5. Dim txt As String
  6. Set oAcadDoc = AcadNewFile() '新建一个CAD文件
  7. Set oBook = ExcelBookOpen(App.Path & "\test.xls") '打开当前目录中文件名为的test电子表格
  8. Set oSheet = oBook.ActiveSheet '获得test中的当前工作表
  9. For Col = 1 To 3
  10.     ColsW = ColsW + oSheet.Columns(Col).ColumnWidth '获得宽度
  11. Next
  12.     RowsH = 5 * 2 '获得高度
  13. AcadSetFont oAcadDoc, "宋体" '将字体样式修改为宋体
  14. AcadLine oAcadDoc, 0, -RowsH, RowsH, 90 '画竖线
  15. AcadLine oAcadDoc, 0, -RowsH, ColsW, 0 '画横线
  16. For Col = 1 To 3
  17.     ColW = oSheet.Columns(Col).ColumnWidth '获得列宽
  18.     For Row = 1 To 5
  19.         txt = oSheet.cells(Row, Col) '读取电子表格中的数据,row代表行,col代表列
  20.         AcadText oAcadDoc, txt, jColW + ColW / 2, -(Row - 1) * 2 - 1, 1 '写入文字,X=jColW + ColW / 2, Y=-(Row - 1) * 2 - 1,文字高度= 1
  21.         If Col = 1 Then
  22.             AcadLine oAcadDoc, 0, -(Row - 1) * 2, ColsW, 0 '画横线,x=0,y= -(Row - 1) * 1.5,长度= ColsW,角度= 0
  23.         End If
  24.    
  25.     Next
  26.     jColW = jColW + ColW '累加列宽
  27.     AcadLine oAcadDoc, jColW, -RowsH, RowsH, 90 '画竖线
  28. Next
  29. End Sub
  30. Public Function ExcelBookOpen(FilePath As String)
  31. '打开excel工作簿,返回工作薄对象
  32. '打开一个excel文件
  33. Dim o_Excel As Object
  34. Dim o_book As Object
  35. Set o_Excel = CreateObject("Excel.Application") '建立电子表格实例
  36. o_Excel.Visible = True '设置可见
  37. Set o_book = o_Excel.Workbooks.Open(FilePath, 0) '打开文件
  38. Set ExcelBookOpen = o_book '返回对象
  39. End Function
  40. Public Function AcadNewFile(Optional FileName As String = "")
  41. '创建新图形
  42. Dim o_AcadDoc As Object
  43. Set o_Acad = CreateObject(".Application") '建立CAD实例
  44. Set o_AcadDoc = o_Acad.Documents.Add '新建一个CAD文件
  45. o_Acad.Visible = True '设置可见
  46. Set AcadNewFile = o_AcadDoc '返回对象
  47. End Function
  48. Public Function AcadText(o_AcadDoc As Object, sText As String, X, y, h)
  49.      ' 添加单行文字
  50.      Dim o_Text As Object
  51.     Dim Location(0 To 2) As Double
  52.     Location(0) = X
  53.     Location(1) = y
  54.     Set o_Text = o_AcadDoc.ModelSpace.AddText(sText, Location, h)
  55.    ' o_Text.Rotation = 0 '角度
  56.     o_Text.Alignment = 10 '对齐方式(正中)
  57.     o_Text.TextAlignmentPoint = Location '对齐到指定点
  58.     o_Text.Update '更新
  59.     Set AcadText = o_Text
  60. End Function
  61. Sub AcadLine(o_AcadDoc As Object, X, y, l, R)
  62. '创建直线线
  63. 'x,y为起点坐标 ,l为长度,r为角度
  64. ' 确定直线的两个端点
  65. Dim o_Line As Object
  66. Dim x2 As Double
  67. Dim y2 As Double
  68. Dim startPoint(0 To 2) As Double
  69. Dim endPoint(0 To 2) As Double
  70. If R = 0 Or R = 180 Then
  71.     x2 = X + l
  72.     y2 = y
  73. End If
  74. If R = 90 Or R = 270 Then
  75.     x2 = X
  76.     y2 = y + l
  77. End If
  78. If R = -90 Or R = -270 Then
  79.     x2 = X
  80.     y2 = y - l
  81. End If
  82. '起点坐标
  83. startPoint(0) = X
  84. startPoint(1) = y
  85. '终点坐标
  86. endPoint(0) = x2
  87. endPoint(1) = y2
  88.    
  89. ' 在模型空间创建一条直线
  90. Set o_Line = o_AcadDoc.ModelSpace.AddLine(startPoint, endPoint)
  91. End Sub
  92. Public Sub AcadSetFont(o_AcadDoc As Object, Optional FontName As String = "宋体")
  93. '设置字体
  94.     Dim typeFace As String
  95.     Dim SavetypeFace As String
  96.     Dim Bold As Boolean
  97.     Dim Italic As Boolean
  98.     Dim charSet As Long
  99.     Dim PitchandFamily As Long
  100.    
  101.         ' 获取当前设置
  102.     o_AcadDoc.ActiveTextStyle.GetFont typeFace, _
  103. Bold, Italic, charSet, PitchandFamily
  104.   ' 改变字体
  105. typeFace = FontName
  106. o_AcadDoc.ActiveTextStyle.SetFont typeFace, _
  107. Bold, Italic, charSet, PitchandFamily
  108. End Sub

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
3
发表于 2014-3-31 14:22:00 | 显示全部楼层
支持,我也是那个帖子找不到附件,来这里看看,谢谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-20 18:14 , Processed in 2.176639 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表