乐筑天下

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

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

[复制链接]

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2004-5-15 10:49:00 | 显示全部楼层 |阅读模式
  1. Sub Main()       ' efan2000编写于2004-05-15
  2.        ' 创建表格样式
  3.        CreateTableStyle
  4.        ' 创建块
  5.        CreateBlock
  6.        ' 创建表格
  7.        CreateTable
  8. End SubSub CreateTableStyle()       Dim DictObj As AcadDictionary
  9.        Set DictObj = ThisDrawing.Database.dictionaries.Item("acad_tablestyle")       Dim keyName As String
  10.        Dim className As String
  11.        Dim customObj As AcadTableStyle
  12.        keyName = "明细表"
  13.        className = "AcDbTableStyle"
  14.        Set customObj = DictObj.AddObject(keyName, className)
  15.       
  16.        ' 表格样式名称
  17.        customObj.Name = "明细表"
  18.        customObj.Description = "明细表表格样式"
  19.       
  20.        ' 由上而下
  21.        customObj.FlowDirection = acTableBottomToTop
  22.       
  23.        ' 边距
  24.        customObj.HorzCellMargin = 0
  25.        customObj.VertCellMargin = 0
  26.       
  27.        ' 取消标题行
  28.        customObj.TitleSuppressed = True
  29.        ' 列标题行,正中对齐,字高为5
  30.        customObj.SetAlignment acHeaderRow, acMiddleCenter
  31.        customObj.SetTextHeight acHeaderRow, 5
  32.        ' 数据行,正中对齐,字高为3.5
  33.        customObj.SetAlignment acDataRow, acMiddleCenter
  34.        customObj.SetTextHeight acDataRow, 3.5
  35. End SubSub CreateBlock()
  36.        Dim iPt(0 To 2) As Double
  37.        iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  38.        Dim BlockObj As AcadBlock
  39.        Set BlockObj = ThisDrawing.Blocks.Add(iPt, "明细表-表头")
  40.        iPt(0) = 5: iPt(1) = 10.5: iPt(2) = 0
  41.        Dim MTextObj As AcadMText
  42.        Set MTextObj = BlockObj.AddMText(iPt, 10, "单件")
  43.        MTextObj.Height = 3.5
  44.        MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  45.        MTextObj.InsertionPoint = iPt
  46.        iPt(0) = 16: iPt(1) = 10.5: iPt(2) = 0
  47.        Set MTextObj = BlockObj.AddMText(iPt, 12, "总计")
  48.        MTextObj.Height = 3.5
  49.        MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  50.        MTextObj.InsertionPoint = iPt
  51.        iPt(0) = 11: iPt(1) = 3.5: iPt(2) = 0
  52.        Set MTextObj = BlockObj.AddMText(iPt, 22, "重量")
  53.        MTextObj.Height = 3.5
  54.        MTextObj.AttachmentPoint = acAttachmentPointMiddleCenter
  55.        MTextObj.InsertionPoint = iPt
  56.        Set MTextObj = Nothing
  57.        Dim sPt(0 To 2) As Double
  58.        Dim ePt(0 To 2) As Double
  59.        sPt(0) = 0: sPt(1) = 7: sPt(2) = 0
  60.        ePt(0) = 22: ePt(1) = 7: ePt(2) = 0
  61.        BlockObj.AddLine sPt, ePt
  62.        sPt(0) = 10: sPt(1) = 14: sPt(2) = 0
  63.        ePt(0) = 10: ePt(1) = 7: ePt(2) = 0
  64.        BlockObj.AddLine sPt, ePt
  65.        Set BlockObj = Nothing
  66. End SubSub CreateTable()
  67.        ' 设置当前表格样式
  68.        ThisDrawing.SetVariable "CTABLESTYLE", "明细表"
  69.        Dim MSpaceObj As IAcadModelSpace2
  70.        Set MSpaceObj = ThisDrawing.ModelSpace
  71.        Dim iPt(0 To 2) As Double
  72.        iPt(0) = 0: iPt(1) = 0: iPt(2) = 0
  73.        Dim TableObj As AcadTable
  74.        Set TableObj = MSpaceObj.AddTable(iPt, 2, 8, 7, 10)
  75.        ThisDrawing.SetVariable "CTABLESTYLE", "Standard"
  76.        ' 列标题行,行高为14,其余为7
  77.        TableObj.SetRowHeight 0, 14
  78.        ' 设置列宽
  79.        TableObj.SetColumnWidth 0, 8
  80.        ' 设置单元格文字
  81.        TableObj.SetText 0, 0, "序号"
  82.        TableObj.SetColumnWidth 1, 40
  83.        TableObj.SetText 0, 1, "代   号"
  84.        TableObj.SetColumnWidth 2, 44
  85.        TableObj.SetText 0, 2, "名   称"
  86.        TableObj.SetColumnWidth 3, 8
  87.        TableObj.SetText 0, 3, "数量"
  88.        TableObj.SetColumnWidth 4, 38
  89.        TableObj.SetText 0, 4, "材   料"
  90.        TableObj.SetColumnWidth 5, 10
  91.        TableObj.SetColumnWidth 6, 12
  92.        ' 合并,重量栏
  93.        TableObj.MergeCells 0, 0, 5, 6
  94.        ' 插入块,重理栏
  95.        TableObj.SetBlockTableRecordId 0, 5, ThisDrawing.Blocks("明细表-表头").ObjectID, True
  96.        TableObj.SetCellAlignment 0, 5, acTopCenter
  97.        TableObj.SetColumnWidth 7, 20
  98.        TableObj.SetText 0, 7, "备注"
  99.        ' 数据行
  100.        TableObj.SetText 1, 0, "1"
  101. End Sub

1qyep3mszjp.gif

1qyep3mszjp.gif

回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-15 11:37:00 | 显示全部楼层
好!学习中
回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-5-20 17:25:00 | 显示全部楼层
cAD2004的可以吗?
怎么做修改,我想用此程序做我的标题栏
回复

使用道具 举报

8

主题

21

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2012-4-19 10:42:00 | 显示全部楼层
Dim DictObj As AcadDictionary
       Set DictObj = ThisDrawing.Database.dictionaries.Item("acad_tablestyle")       Dim keyName As String
       Dim className As String
       Dim customObj As AcadTableStyle
       keyName = "明细表"
       className = "AcDbTableStyle"
       Set customObj = DictObj.AddObject(keyName, className)
我把这段代码拿来调试,提示错误:系统注册表中不存在 AcRxClassName 项。
这个该怎么解决 ?望指点
回复

使用道具 举报

14

主题

52

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2018-9-16 15:18:00 | 显示全部楼层
谢谢分享太有用了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-19 09:13 , Processed in 2.759688 second(s), 65 queries .

© 2020-2025 乐筑天下

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