乐筑天下

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

创建和填充AutoCAD表

[复制链接]

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 17:03:37 | 显示全部楼层
好吧,我最终放弃了
我查阅了太多使用GetAttributes的人的例子,弄不清是怎么回事……帮助文件似乎对我也没什么帮助
下面是我到目前为止的代码
我将用于此表的块中有3或4个属性,这些属性保存将传递给此表的信息
标记:
ID
ELEVATION
DATUMLOC
DESC
我需要获取每个单独属性/标记的值,并将其输出到一个表格单元格,正如您所示,我是如何使用xStr和yStr的。
  1. Option Explicit
  2. Sub Blocks_Table()
  3.     Dim oSset As AcadSelectionSet
  4.     Dim oEnt As AcadEntity
  5.     Dim oBlk As AcadBlockReference
  6.     Dim varPt As Variant
  7.     Dim ftype(0) As Integer
  8.     Dim fdata(0) As Variant
  9.     Dim bName As String
  10.     Dim Atts As Variant
  11.     Dim xStr As String
  12.     Dim yStr As String
  13.     Dim ID As String
  14.     Dim Desc As String
  15. Dim i As Long, j As Long
  16.     ftype(0) = 0: fdata(0) = "INSERT"
  17.     Dim dxfCode, dxfValue
  18.     dxfCode = ftype: dxfValue = fdata
  19.     With ThisDrawing.SelectionSets
  20.         While .Count > 0
  21.             .Item(0).Delete
  22.         Wend
  23.         Set oSset = .Add("$Blocks$")
  24.     End With
  25.    
  26.     ThisDrawing.ActivePViewport.Display True
  27.     ThisDrawing.ActiveSpace = acModelSpace
  28.     oSset.SelectOnScreen dxfCode, dxfValue
  29.    
  30.     ThisDrawing.ActiveSpace = acPaperSpace
  31.    
  32.     Dim paSpace As AcadPaperSpace
  33.     Set paSpace = ThisDrawing.PaperSpace
  34.    
  35.     varPt = ThisDrawing.Utility.GetPoint(, vbCrLf & "Specify insertion point: ")
  36.     Dim oTable As AcadTable
  37.     Set oTable = paSpace.AddTable(varPt, oSset.Count + 3, 6, 0.3, 1.5)
  38.     oTable.TitleSuppressed = False
  39.     oTable.HeaderSuppressed = True
  40.     ZoomExtents
  41.     With oTable
  42.     .RegenerateTableSuppressed = True
  43.    
  44.         .SetCellTextHeight i, j, 0.15625
  45.         .SetCellAlignment i, j, acMiddleCenter
  46.         .SetCellType i, j, acTextCell
  47.         .SetText 0, 0, "EQUIPMENT LAYOUT SCHEDULE"
  48.    
  49.         .SetText 1, 0, "ITEM"
  50.         .SetCellTextHeight 1, 0, 0.09375
  51.         .SetText 1, 1, "EQUIPMENT DATUM"
  52.         .SetCellTextHeight 1, 1, 0.09375
  53.         .SetText 1, 4, "DATUM LOCATION"
  54.         .SetCellTextHeight 1, 4, 0.09375
  55.         .SetText 1, 5, "DESCRIPTION"
  56.         .SetCellTextHeight 1, 5, 0.09375
  57.         
  58.         .SetText 2, 1, "N"
  59.         .SetCellTextHeight 2, 1, 0.09375
  60.         .SetText 2, 2, "E"
  61.         .SetCellTextHeight 2, 2, 0.09375
  62.         .SetText 2, 3, "EL"
  63.         .SetCellTextHeight 2, 3, 0.09375
  64.         
  65.         For i = 0 To oSset.Count - 1
  66.             Set oEnt = oSset.Item(i)
  67.             Set oBlk = oEnt
  68.             If oBlk.IsDynamicBlock Then
  69.                 bName = oBlk.EffectiveName
  70.             Else
  71.                 bName = oBlk.Name
  72.             End If
  73.             xStr = Format(CStr(Round(oBlk.InsertionPoint(1), 3)), "#0.000")
  74.             yStr = Format(CStr(Round(oBlk.InsertionPoint(0), 3)), "#0.000")
  75.             
  76.             .SetCellTextHeight i + 3, j, 0.09375
  77.             .SetCellAlignment i + 3, j, acMiddleCenter
  78.             .SetText i + 3, j, ID
  79.             .SetCellTextHeight i + 3, j, 0.09375
  80.             .SetText i + 3, j + 1, xStr
  81.             .SetCellTextHeight i + 3, j + 1, 0.09375
  82.             .SetText i + 3, j + 2, yStr
  83.             .SetCellTextHeight i + 3, j + 2, 0.09375
  84.             .SetText i + 3, j + 3, Desc
  85.             .SetCellTextHeight i + 3, j + 3, 0.09375
  86.         Next i
  87.         
  88.     .RegenerateTableSuppressed = False
  89.     .Update
  90.     End With
  91.         oTable.MergeCells 1, 2, 0, 0
  92.         oTable.MergeCells 1, 2, 4, 4
  93.         oTable.MergeCells 1, 2, 5, 5
  94.         oTable.MergeCells 1, 1, 1, 3
  95.         
  96.     MsgBox "Yahoooooo!"
  97. End Sub

回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2008-7-17 17:04:14 | 显示全部楼层
现在我还没有将值设置为ID或DESC,但我不确定如何执行此操作。
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 17:21:17 | 显示全部楼层
上传带有块的示例绘图
(删除未使用的信息和其他内容之前)
我明天会看
它〜'J'~
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 17:31:07 | 显示全部楼层
这里有一切必要的东西
从表面上看……我认为我的问题是,我不知道如何处理数组以获得测试所需的信息。dwg<br>在各种实例中包含模型空间中的块“基准”
我在例程中选择所有这些块,它切换到paperspace,请求表的插入点,然后创建它
我只是不知道如何获取属性的值,然后将它们放入表中<非常感谢您抽出时间!
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 18:43:08 | 显示全部楼层
菲索
是我获得最终完整代码的地方
如果你有意见、教训和建议,我很欢迎,但我不会再要求你为此花费时间了……你已经做了很多,我肯定要感谢你(和杰夫·M)!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 09:13 , Processed in 0.863968 second(s), 61 queries .

© 2020-2025 乐筑天下

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