乐筑天下

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

[编程交流] 联接表

[复制链接]
MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:30:09 | 显示全部楼层 |阅读模式
能解释一下如何从ACAD表中提取数据吗。我尝试转储对象,但找不到数据。
我想看看连接表的结构数据。
 
  1. ; IAcadTable: IAcadTable Interface
  2. ; Property values:
  3. ;   AllowManualHeights = 0
  4. ;   AllowManualPositions = 0
  5. ;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d5f1d4>
  6. ;   BreaksEnabled = 0
  7. ;   BreakSpacing = 0.99
  8. ;   Columns = 6
  9. ;   ColumnWidth (RO) = ...Indexed contents not shown...
  10. ;   Direction = (1.0 0.0 0.0)
  11. ;   Document (RO) = #<VLA-OBJECT IAcadDocument 02b6de18>
  12. ;   EnableBreak (RO) = ...Indexed contents not shown...
  13. ;   FlowDirection = 1
  14. ;   Handle (RO) = "ACB1F"
  15. ;   HasExtensionDictionary (RO) = 0
  16. ;   HasSubSelection (RO) = 0
  17. ;   HeaderSuppressed = -1
  18. ;   Height = 4.12
  19. ;   HorzCellMargin = 3.0
  20. ;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 2331417c>
  21. ;   InsertionPoint = (-1393.84 128.008 0.0)
  22. ;   Layer = "Construction Line"
  23. ;   Linetype = "ByLayer"
  24. ;   LinetypeScale = 3.0
  25. ;   Lineweight = -1
  26. ;   Material = "ByLayer"
  27. ;   MinimumTableHeight (RO) = 4.12
  28. ;   MinimumTableWidth (RO) = 54.0
  29. ;   ObjectID (RO) = 2082178808
  30. ;   ObjectName (RO) = "AcDbTable"
  31. ;   OwnerID (RO) = 2043363520
  32. ;   PlotStyleName = "ByLayer"
  33. ;   RegenerateTableSuppressed = 0
  34. ;   RepeatBottomLabels = 0
  35. ;   RepeatTopLabels = 0
  36. ;   RowHeight (RO) = ...Indexed contents not shown...
  37. ;   Rows = 1
  38. ;   StyleName = "Standard"
  39. ;   TableBreakFlowDirection = 1
  40. ;   TableBreakHeight = 0.0
  41. ;   TableStyleOverrides (RO) = (2)
  42. ;   TitleSuppressed = 0
  43. ;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 1f2df440>
  44. ;   VertCellMargin = 0.06
  45. ;   Visible = -1
  46. ;   Width = 259.2

 
谢谢
 
UdaAf公司
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:36:49 | 显示全部楼层
你在寻找单元格内的值吗?如果是这样,请看我在这个线程中的代码:http://forums.augi.com/showthread.php?t=135274
 
奇怪的是,相似的问题如此紧密地联系在一起
 
顺便说一句,要修改表,还需要它的方法。vlax dump对象仅在发送非nil第二个参数时显示这些。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:41:41 | 显示全部楼层
要基于Irneb的建议,请使用:
 
显示除属性外与对象相关的所有方法。
 
要检索单元格值,请研究GetText/GetCellValue/GetValue方法。
 
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:45:48 | 显示全部楼层
谢谢大家的回答。我会努力的。
 
谢谢
 
UdaAf公司
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:51:32 | 显示全部楼层
请为我的代码提供建议。我认为算法是正确的,但仍然无法从表中获得值。
 
  1. (defun c:jontab ()
  2. (vl-load-com)
  3. (setq        TblSel          (car (entsel "\nPilih Table Utama:"))
  4. TblObj          (vlax-ename->vla-object TblSel)
  5. Columns_1 (vla-get-columns TblObj)
  6. Rows_1          (vla-get-rows TblObj)
  7. )
  8. ;Membuat List Kosong Untuk Mengumpulkan Data
  9. (setq TblValList_1  '())
  10. (setq        row 0
  11. column 0
  12. )
  13. (repeat Rows_1
  14.    (repeat Columns_1
  15.      (setq TblVal         (vla-gettext TblObj row column)
  16.     TblValList_1 (cons TblVal TblValList_)
  17.     column         (1+ column)
  18.      )                                        ;setq
  19.    )                                        ;repeat
  20.    (setq row         (1+ row)
  21.   column 1
  22.    )                                        ;reset column menjadi 1
  23. )                                        ;repeat
  24. );defun

 
谢谢
 
UdaAf公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:59:33 | 显示全部楼层
试试这个,写得很快,但以矩阵形式返回的列表格式对我来说似乎更直观:
 
  1. (defun c:jontab ( / i j l o r s )
  2.    (if (setq s (ssget "_+.:E:S" '((0 . "ACAD_TABLE"))))
  3.        (progn
  4.            (setq o (vlax-ename->vla-object (ssname s 0)))
  5.            (repeat (setq i (vla-get-rows o))
  6.                (setq i (1- i))
  7.                (repeat (setq j (vla-get-columns o))
  8.                    (setq j (1- j)
  9.                          l (cons (vla-gettext o i j) l))
  10.                )
  11.                (setq r (cons l r)
  12.                      l nil
  13.                )
  14.            )
  15.            r
  16.        )
  17.    )
  18. )
  19. (vl-load-com)
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:02:32 | 显示全部楼层
嗨,李,
 
李代码不错。我将为join 2表或更多表改进此代码。
 
谢谢
 
UdaAf公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:07:28 | 显示全部楼层
谢谢UdaAf
 
祝你好运
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:10:56 | 显示全部楼层
嗨,李,
 
请提供此代码的建议。我想我的代码L00035是错的。如果我选择行数量为1的表,这没有问题。但如果我选择数量大于1的行,则最后一行没有字段。
这是代码;
 
  1. 4
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:15:46 | 显示全部楼层
尝试以下操作:
 
[code][颜色=绿色];;合并表-Lee Mac-www.Lee-Mac。com(defunc:MergeTables(/*error*\u entsel acdoc c c2 i j l r r2 t1 t2 x y)(defun*error*(msg)(ifacdoc(vla endundomarkacdoc))(ifnotwcmatchstrcasemsg)[=“*中断,*取消*,*退出*”)(princstrcat”\n错误:“msg”)(princ)(defun\u entsel(msg filter/msg)(setvar'NOMUTT 1)(setqsel(vl catch all apply'ssgetlist“_+:E:S:L”filter))(setvar'NOMUTT 0)(ifsel(notvl-catch-all-error-psel))(ssnamesel 0))(ifsetqt1(\u entsel“\n选择要合并的表:“”((0。“ACAD\u Table”))(setqt2(\u entsel“\n选择要合并的表:“”((0。“ACAD\u Table”))))(prognsetqacdoc(vla get activedocumentvlax get acad object)(vla startundomarkacdoc)(setqt1(vlax ename->vla objectt1)t2(vlax ename->vla objectt2))(repeatsetqi(vla get rowst1)(setqi(1-i))(repeatsetqj(setqj(1-j)l(consvla gettextt1 i j)l)))(setqr(consl r)lnil)(setqc2(vla get columnst2)r2(vla get rowst2))(if
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:02 , Processed in 0.399293 second(s), 72 queries .

© 2020-2025 乐筑天下

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