乐筑天下

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

创建和填充AutoCAD表

[复制链接]

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-16 18:18:55 | 显示全部楼层 |阅读模式
有人知道在哪里可以找到一些关于在Autocad中创建/编辑表格对象的各种控件和命令的有用信息吗?
我正在创建一个例程,该例程将使用某个块的每个实例的X,Y坐标填充一个表,该块被多次插入到图形中。
我已经完成了坐标提取部分,我只需要知道如何将该信息传递给我创建的表。
我搜索了Autodesk VBA的书,但是它完全排除了关于对象创建的表格,我搜索了一会儿,也搜索了这些论坛...我找到了一些几乎有帮助的,但明显不够。
有人有我可以检查的代码片段或我可以查找的一些函数吗?
“帮助”菜单中的visual basic参考也没有太大帮助(或者我不知道去哪里找)

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

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

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-16 18:35:45 | 显示全部楼层
这里有一个:
它是ARX,但可能很容易移植(不知道)-但我猜您最终会移动或尝试使用C#
在ARX SDK中有一些.NET示例…在这里:www.objectarx.com
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2008-7-16 18:51:14 | 显示全部楼层
谢谢你的帮助,路易斯,我得到了一些已经帮助我的好信息。
另外,令人尴尬的是,我......正在寻找通过可视化基本编辑器访问的帮助,哇......如果您使用从Autocad主窗口访问的开发人员的帮助,则有很大的不同!
*将前额砸在键盘上*
“Autocad表对象”的条目非常强大。
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 09:16:54 | 显示全部楼层
这里是一个Q&D示例,但这将使您开始
  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 xStr As String
  11.     Dim yStr As String
  12. Dim i As Long, j As Long
  13.     ftype(0) = 0: fdata(0) = "INSERT"
  14.     Dim dxfCode, dxfValue
  15.     dxfCode = ftype: dxfValue = fdata
  16.     With ThisDrawing.SelectionSets
  17.         While .Count > 0
  18.             .Item(0).Delete
  19.         Wend
  20.         Set oSset = .Add("$Blocks$")
  21.     End With
  22.     oSset.SelectOnScreen dxfCode, dxfValue
  23.     Dim oSpace As AcadBlock
  24.     If ThisDrawing.ActiveSpace = acModelSpace Then
  25.         Set oSpace = ThisDrawing.ModelSpace
  26.     Else
  27.         Set oSpace = ThisDrawing.PaperSpace
  28.     End If
  29.    
  30.     varPt = ThisDrawing.Utility.GetPoint(, vbCrLf & "Specify insertion point: ")
  31.     Dim oTable As AcadTable
  32.     Set oTable = oSpace.AddTable(varPt, oSset.Count + 2, 3, 10, 30)
  33.     ZoomExtents
  34.     With oTable
  35.     .RegenerateTableSuppressed = True
  36.         .SetCellTextHeight i, j, 5
  37.         .SetCellAlignment i, j, acMiddleCenter
  38.         .SetCellType i, j, acTextCell
  39.         .SetText 0, 0, "Blocks Position"
  40.         .SetCellType i, j, acTextCell
  41.         
  42.         .SetText 1, j, "Block Name"
  43.         .SetCellTextHeight 1, j, 4.5
  44.         .SetText 1, j + 1, "X"
  45.         .SetCellTextHeight 1, j + 1, 4.5
  46.         .SetText 1, j + 2, "Y"
  47.         .SetCellTextHeight 1, j + 2, 4.5
  48.         For i = 0 To oSset.Count - 1
  49.             Set oEnt = oSset.Item(i)
  50.             Set oBlk = oEnt
  51.             If oBlk.IsDynamicBlock Then
  52.                 bName = oBlk.EffectiveName
  53.             Else
  54.                 bName = oBlk.Name
  55.             End If
  56.             xStr = Format(CStr(Round(oBlk.InsertionPoint(0), 3)), "#0.000")
  57.             yStr = Format(CStr(Round(oBlk.InsertionPoint(1), 3)), "#0.000")
  58.             .SetCellTextHeight i, j, 4
  59.             .SetCellAlignment i, j, acMiddleCenter
  60.             .SetText i + 2, j, bName
  61.             .SetCellTextHeight i + 2, j, 4#
  62.             .SetText i + 2, j + 1, xStr
  63.             .SetCellTextHeight i + 2, j + 1, 4#
  64.             .SetText i + 2, j + 2, yStr
  65.             .SetCellTextHeight i + 2, j + 2, 4#
  66.         Next i
  67.     .RegenerateTableSuppressed = False
  68.     .Update
  69.     End With
  70.     MsgBox "done"
  71. End Sub

~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2008-7-17 09:35:28 | 显示全部楼层

我刚刚经历了这一点,它具有我需要的所有功能...我在使用选择集时遇到了最大的困难,但我想一旦我经历了这一切并弄清楚了什么在做什么...我应该状态良好。
我非常感谢这一点,你帮了我很多!
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 10:42:25 | 显示全部楼层
不客气
干杯
~'J'~
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 10:43:16 | 显示全部楼层
我必须再次感谢你,菲戈,你真是天赐之物。我花在这上面的最后一个小时比我从一开始就断断续续花的8个小时更有成效!!(尽管我确信需要这些开始的时间来理解发生了什么,就这么多)
我在创建表格时遇到了一些问题。我正在努力不要有单列的顶部行。我希望它像表格的其余部分一样不合并。我看不到或找不到将顶部行变成单个单元格的定义中的内容,而不是每列的单元格。
我无法弄清楚。我只学会了如何使用“object.MergeCells(minRow, maxRow, minCol, maxCol)”方法合并单元格。
(另外,有趣的是... FF3在尝试直接从acad中的VBA管理器粘贴代码时始终崩溃...我将其粘贴到记事本,并在此处成功复制。)
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2008-7-17 15:08:32 | 显示全部楼层

哦,伙计,我不是在想‘开箱即用’
它是这样设置的,因为第一行是表格样式中的“标题”类型。我假设它默认为“数据”类型,但由于它是一个标题,因此默认情况下它跨越整个表…它不在代码中,但活动表样式*有点前额*
现在我要弄清楚如何将第一行设置为“数据”,而不是标题或标题,现在。。。
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 16:16:42 | 显示全部楼层
很高兴你自己播种了它,
这样我就可以休息
了~'J'~
回复

使用道具 举报

27

主题

242

帖子

18

银币

后起之秀

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

铜币
335
发表于 2008-7-17 16:25:19 | 显示全部楼层
Fixo,除了上面的帖子之外,我想你没有意识到你今天对我的帮助有多大!
很多次我都在寻找如何让某样东西工作(例如合并单元格等),并且在沼泽上进行了搜索,发现你已经向某人解释过了
您在这个论坛上的vba指导非常好!
我目前在提取该块中定义的属性的值以放置到同一个表中时遇到了困难......但我还没有完全放弃。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 09:04 , Processed in 0.451016 second(s), 72 queries .

© 2020-2025 乐筑天下

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