找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1395|回复: 4

[分享]:运用ACADR2005的表格功能创建明细表

[复制链接]

已领礼包: 181个

财富等级: 日进斗金

发表于 2004-5-15 10:47:56 | 显示全部楼层 |阅读模式

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

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

×

  1.   [FONT=courier new]
  2. Sub Main()

  3.     ' efan2000编写于2004-05-15
  4.     ' 创建表格样式
  5.     CreateTableStyle
  6.     ' 创建块
  7.     CreateBlock
  8.     ' 创建表格
  9.     CreateTable
  10. End Sub

  11. Sub CreateTableStyle()

  12.     Dim DictObj As AcadDictionary
  13.     Set DictObj = ThisDrawing.Database.dictionaries.Item("acad_tablestyle")

  14.     Dim keyName As String
  15.     Dim className As String
  16.     Dim customObj As AcadTableStyle
  17.     keyName = "明细表"
  18.     className = "AcDbTableStyle"
  19.     Set customObj = DictObj.AddObject(keyName, className)
  20.    
  21.     ' 表格样式名称
  22.     customObj.Name = "明细表"
  23.     customObj.Description = "明细表表格样式"
  24.    
  25.     ' 由上而下
  26.     customObj.FlowDirection = acTableBottomToTop
  27.    
  28.     ' 边距
  29.     customObj.HorzCellMargin = 0
  30.     customObj.VertCellMargin = 0
  31.    
  32.     ' 取消标题行
  33.     customObj.TitleSuppressed = True
  34.     ' 列标题行,正中对齐,字高为5
  35.     customObj.SetAlignment acHeaderRow, acMiddleCenter
  36.     customObj.SetTextHeight acHeaderRow, 5
  37.     ' 数据行,正中对齐,字高为3.5
  38.     customObj.SetAlignment acDataRow, acMiddleCenter
  39.     customObj.SetTextHeight acDataRow, 3.5
  40. End Sub

  41. Sub CreateBlock()
  42.     Dim iPt(0 To 2) As Double
  43.     iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  44.     Dim BlockObj As AcadBlock
  45.     Set BlockObj = ThisDrawing.Blocks.Add(iPt, "明细表-表头")
  46.     iPt(0) = 5: iPt(1) = 10.5: iPt(2) = 0
  47.     Dim MTextObj As AcadMText
  48.     Set MTextObj = BlockObj.AddMText(iPt, 10, "单件")
  49.     MTextObj.Height = 3.5
  50.     MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  51.     MTextObj.InsertionPoint = iPt
  52.     iPt(0) = 16: iPt(1) = 10.5: iPt(2) = 0
  53.     Set MTextObj = BlockObj.AddMText(iPt, 12, "总计")
  54.     MTextObj.Height = 3.5
  55.     MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  56.     MTextObj.InsertionPoint = iPt
  57.     iPt(0) = 11: iPt(1) = 3.5: iPt(2) = 0
  58.     Set MTextObj = BlockObj.AddMText(iPt, 22, "重量")
  59.     MTextObj.Height = 3.5
  60.     MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  61.     MTextObj.InsertionPoint = iPt
  62.     Set MTextObj = Nothing
  63.     Dim sPt(0 To 2) As Double
  64.     Dim ePt(0 To 2) As Double
  65.     sPt(0) = 0: sPt(1) = 7: sPt(2) = 0
  66.     ePt(0) = 22: ePt(1) = 7: ePt(2) = 0
  67.     BlockObj.AddLine sPt, ePt
  68.     sPt(0) = 10: sPt(1) = 14: sPt(2) = 0
  69.     ePt(0) = 10: ePt(1) = 7: ePt(2) = 0
  70.     BlockObj.AddLine sPt, ePt
  71.     Set BlockObj = Nothing
  72. End Sub

  73. Sub CreateTable()
  74.     ' 设置当前表格样式
  75.     ThisDrawing.SetVariable "CTABLESTYLE", "明细表"
  76.     Dim MSpaceObj As IAcadModelSpace2
  77.     Set MSpaceObj = ThisDrawing.ModelSpace
  78.     Dim iPt(0 To 2) As Double
  79.     iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  80.     Dim TableObj As AcadTable
  81.     Set TableObj = MSpaceObj.AddTable(iPt, 2, 8, 7, 10)
  82.     ThisDrawing.SetVariable "CTABLESTYLE", "Standard"
  83.     ' 列标题行,行高为14,其余为7
  84.     TableObj.SetRowHeight 0, 14
  85.     ' 设置列宽
  86.     TableObj.SetColumnWidth 0, 8
  87.     ' 设置单元格文字
  88.     TableObj.SetText 0, 0, "序号"
  89.     TableObj.SetColumnWidth 1, 40
  90.     TableObj.SetText 0, 1, "代  号"
  91.     TableObj.SetColumnWidth 2, 44
  92.     TableObj.SetText 0, 2, "名  称"
  93.     TableObj.SetColumnWidth 3, 8
  94.     TableObj.SetText 0, 3, "数量"
  95.     TableObj.SetColumnWidth 4, 38
  96.     TableObj.SetText 0, 4, "材  料"
  97.     TableObj.SetColumnWidth 5, 10
  98.     TableObj.SetColumnWidth 6, 12
  99.     ' 合并,重量栏
  100.     TableObj.MergeCells 0, 0, 5, 6
  101.     ' 插入块,重理栏
  102.     TableObj.SetBlockTableRecordId 0, 5, ThisDrawing.Blocks("明细表-表头").ObjectID, True
  103.     TableObj.SetCellAlignment 0, 5, acTopCenter
  104.     TableObj.SetColumnWidth 7, 20
  105.     TableObj.SetText 0, 7, "备注"
  106.     ' 数据行
  107.     TableObj.SetText 1, 0, "1"
  108. End Sub
  109.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-18 12:53:21 | 显示全部楼层
2005的功能确实很大,可惜很多应用软件没有跟上来,所以放在机器里一直没有用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 02:22 , Processed in 0.402950 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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