找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 769|回复: 9

[求助] 怎么用entmake生成Table(表格)

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2020-9-1 10:26:34 | 显示全部楼层 |阅读模式

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

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

×
是组码太多吗?论坛找不到相关的资源
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

发表于 2020-9-1 15:31:18 | 显示全部楼层
Table从05开始才出现,是复杂对象。一般用户Vla-函数生成,估计entmake也行,恐怕没有人这么干,所以就没有回答你了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-9-2 01:06:19 | 显示全部楼层
为什么要纠结一定要 entmake

用 vla-addTable 去做

这是使用lisp创建TABLE实体的示例。 此示例还使用lisp创建了一些FIELDS。

该例程允许用户选择闭合的折线,它将创建一个包含两列的TABLE。 一个包含区域,另一个包含ObjectID。 最后一行总计面积。 您可以轻松地对此进行调整以显示图层,颜色或任何其他属性。

TABLE是在当前表样式上创建的,因此,根据当前表样式的设置,您可能必须在(vla-addTable ...)函数中调整大小参数,以使表看起来可以接受。 此处使用的这些尺寸在新的空工程图中与“标准”表格样式一起使用。

  1. ; load (vl-load-com) first
  2. (vl-load-com)
  3. (defun C:POLYTABLE ( / *MS* A CNT I LST MYTABLE PT1 ROW SSET TLST)

  4.   ; create an empty list, set a counter variable, and
  5.   ; set a reference to the current model space.
  6.   (setq lst '()
  7. i 0
  8. *ms* (vla-get-modelspace
  9.              (vla-get-activedocument
  10.              (vlax-get-acad-object)))
  11.   )
  12.   ; prompt the user to select closed polylines
  13.   (princ "\n Select closed polylines ")
  14.   (if (setq sset (ssget '((0 . "POLYLINE,LWPOLYLINE")(-4 . "&")(70 . 1))))
  15.     ; if a valid selection set was generated, then proceed.
  16.     (progn
  17.    
  18.       ; for each closed polyline selected, grab the ObjectID and Area
  19.       ; and store these values in a list.
  20.       (repeat (setq cnt (sslength sset))
  21.         (setq a (vlax-ename->vla-object (ssname sset i)))
  22.         (setq tlst (list (vla-get-Area a) (vla-get-ObjectID a)))
  23.         (setq lst (cons tlst lst))
  24.         (setq i (1+ i))
  25.       )
  26.       ; pick a point for the table
  27.       (setq pt1 (getpoint "\nPick point for table "))
  28.       ; add the new table
  29.       (setq myTable (vla-AddTable
  30.                     *ms*
  31.                     (vlax-3d-point pt1)
  32.                     (+ 3 cnt)
  33.                     2
  34.                     0.7
  35.                     2.5))
  36.       ; the next three lines set the header text
  37.       (vla-setText mytable 0 0 "Polyline Table")
  38.       (vla-setText mytable 1 0 "Area")
  39.       (vla-setText mytable 1 1 "Object ID")
  40.       (setq row 2)
  41.       
  42.       ; loop through the list of polyline properties
  43.       ; adding a line to the table that contains the
  44.       ; area and the ObjectID
  45.       (foreach item lst
  46.         (vla-setText mytable
  47.                      row
  48.                      0
  49.                      (strcat "%<\\AcObjProp Object(%<\\_ObjId "
  50.                      (itoa (last item))
  51.                      ">%).Area \\f \"%lu2\">%"))
  52.         (vla-setText mytable row 1 (last item))
  53.         (setq row (1+ row))
  54.       )      
  55.       ; On the last row, total up the area
  56.       (vla-setText mytable
  57.                    row
  58.                    0
  59.                    (strcat "Total=\\P"
  60.                    "%<\\AcExpr (Sum(A3:A" (itoa (+ 2 cnt)) ")) \\f \"%lu2\">%"))
  61.       ; release "myTable" and *ms*
  62.       (vlax-release-object myTable)      
  63.       (vlax-release-object *ms*)      
  64.     ); end progn

  65.    ; if no closed polylines were selected,
  66.    ; end the program with this message
  67.     (princ "\nNo closed polylines selected. ")
  68.   ); end if
  69.   (princ)
  70. ); end defun

点评

谢谢回复,请教一下该如何设置表中字体的宽度因子  详情 回复 发表于 2020-9-3 22:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6202个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 408个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 8710个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2020-9-3 22:36:58 | 显示全部楼层
Lisphk 发表于 2020-9-2 01:06
为什么要纠结一定要 entmake

用 vla-addTable 去做

谢谢回复,请教一下该如何设置表中字体的宽度因子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-9-3 23:13:27 | 显示全部楼层
zrg1 发表于 2020-9-3 22:36
谢谢回复,请教一下该如何设置表中字体的宽度因子

建议你去看下 acadauto.chm , 看看里面关于TABLE对象的ACTIVEX方法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 225个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2020-9-5 08:12:48 | 显示全部楼层
比如要创建这样的表格
  
1
  
  
2
  
  
3
  
  
A
  
  
B
  
  
C
  
CAD2006用下面的代码来实现
(entmake (list
'(0 ."ACAD_TABLE") '(100 . "AcDbEntity") '(100 ."AcDbBlockReference")
'(10 0.0 0.00.0) '(100 . "AcDbTable")
'(91 . 2) '(92. 3) '(93 . 0) '(94 . 0) '(95 . 0) '(96 . 0)
'(141 . 0.36)'(141 . 0.36) '(142 . 1.5) '(142 . 1.5) '(142 . 1.5)
'(171 . 1) '(1 . "1")
'(171 . 1) '(1 . "2")
'(171 . 1) '(1 . "3")
'(171 . 1) '(1 . "A")
'(171 . 1) '(1 . "B")
'(171 . 1) '(1 . "C")))
CAD2010以后版本实现代码
(entmake (list
'(0 ."ACAD_TABLE")'(100 . "AcDbEntity")'(100 ."AcDbBlockReference")
'(10 -3467.73377.763 0.0) '(100 . "AcDbTable")
'(91 . 2)'(92 .3)'(93 . 0)'(94 . 0)'(95 . 0)'(96 . 0)
'(141 . 0.36)'(141 . 0.36) '(142 . 1.5) '(142 . 1.5) '(142 . 1.5)
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4)'(1 . "1") '(304 . "ACVALUE_END")
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4)'(1 . "2") '(304 . "ACVALUE_END")
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4) '(1. "3") '(304 . "ACVALUE_END")
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4)'(1 . "A") '(304 . "ACVALUE_END")
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4)'(1 . "B") '(304 . "ACVALUE_END")
'(171 . 1) '(301 . "CELL_VALUE") '(90 . 4)'(1 . "C") '(304 . "ACVALUE_END")))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:48 , Processed in 0.349956 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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