找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4088|回复: 16

[原创] 一起用VLA来制造Table

[复制链接]
发表于 2014-3-8 16:29:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Free-Lancer 于 2014-3-8 16:46 编辑

  1. (defun Table:Begin (tb)
  2.   (vla-put-TitleSuppressed tb :vlax-true)
  3.   (vla-put-HeaderSuppressed tb :vlax-true)
  4.   (vla-put-RegenerateTableSuppressed tb :vlax-true)
  5.   t
  6. )
  7. (defun Table:End (tb)
  8.   (vla-put-titlesuppressed tb :vlax-false)
  9.   (vla-put-headersuppressed tb :vlax-false)
  10.   (vla-put-RegenerateTableSuppressed tb :vlax-false)
  11.   t
  12. )
  13. (defun Table:SetRowHeight (tb lst / i)
  14.   (Table:Begin tb)
  15.   (if (= (type lst) 'Real)
  16.     (progn
  17.       (setq i -1)
  18.       (repeat (fix (vla-get-rows tb))
  19.         (vla-setrowheight tb (setq i (1+ i)) lst)
  20.       )
  21.     )
  22.     (foreach x lst
  23.       (vla-setrowheight tb (car x) (cadr x))
  24.     )
  25.   )
  26.   (Table:End tb)
  27. )
  28. (defun Table:SetColumnWidth (tb lst)
  29.   (Table:Begin tb)
  30.   (if (= (type lst) 'Real)
  31.     (progn
  32.       (setq i -1)
  33.       (repeat (fix (vla-get-columns tb))
  34.         (vla-setcolumnwidth tb (setq i (1+ i)) lst)
  35.       )
  36.     )
  37.     (foreach x lst
  38.       (vla-setcolumnwidth tb (car x) (cadr x))
  39.     )
  40.   )
  41.   (Table:End tb)
  42. )
  43. ;|
  44. AcRowType enum; the row type
  45. acDataRow    0
  46. acHeaderRow  1
  47. acTitleRow   2
  48. acUnknownRow 3

  49. acBottomCenter   8
  50. acBottomLeft     7
  51. acBottomRight    9
  52. acMiddleCenter   5
  53. acMiddleLeft     4
  54. acMiddleRight    6
  55. acTopCenter      2
  56. acTopLeft        1
  57. acTopRight       3
  58. |;
  59. (defun Table:SetAlignment (tb typ mod /)
  60.   (vla-setalignment tb typ mod)
  61. )
  62. (defun Table:Make (lst p RowHeight ColWidth / tb i maxCol)
  63.   (setq        tb (vla-addtable
  64.              (fy:acspace)
  65.              (vlax-3d-point p)
  66.              (1+ (length lst))
  67.              (setq maxCol (apply 'max (mapcar 'length lst)))
  68.              RowHeight
  69.              ColWidth
  70.            )
  71.   )
  72.   (Table:Begin tb)
  73.   (setq i 0)
  74.   (vla-setalignment tb acDataRow acMiddleCenter) ;_5
  75.   (vla-setcellgridvisibility tb 0 0 acTopMask :vlax-false)
  76.   (vla-setcellgridvisibility tb 0 0 acLeftMask :vlax-false)
  77.   (vla-setcellgridvisibility
  78.     tb
  79.     0
  80.     (1- maxCol)
  81.     acRightMask
  82.     :vlax-false
  83.   )
  84.   (mapcar
  85.     '(lambda (x / j)
  86.        (setq j -1
  87.              i (1+ i)
  88.        )
  89.        (mapcar '(lambda        (a)

  90.                   (vla-settext tb i (setq j (1+ j)) a)
  91.                 )
  92.                x
  93.        )
  94.      )
  95.     lst
  96.   )
  97.   (Table:End tb)
  98. )


(table:Make '(("1" "2" "4") ("2" "4") ("5" "6" "7" "8")) (getpoint) 10. 10.)

(table:setcolumnwidth (e2o (car (entsel))) '((0 15.) (1 20.) (2 25.) (3 10.)))

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

已领礼包: 1个

财富等级: 恭喜发财

发表于 2014-3-8 22:05:57 | 显示全部楼层
长老:可否用动画show 一把 ?

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-8 22:43:50 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-3-8 22:44 编辑

长老一直是先发测试源码,然后就是整合编译的lib文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-9 00:50:34 | 显示全部楼层
dwg001 发表于 2014-3-8 22:05
长老:可否用动画show 一把 ?

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

使用道具 举报

 楼主| 发表于 2014-3-9 09:34:07 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-3-9 09:35 编辑

大家不常用啊

1 (Table:Begin tb)  
功  能: 禁止表格充生成,开始编辑
参  数: 表格Object
返回值: Object

2 (Table:End tb)
功  能: 结束编辑,启用重生成
参  数: 表格Object
返回值: Object

3 (Table:SetRowHeight tb Rowheight)
功  能: 设置Table行高
参  数: tb --- Table Object
        RowHeight --- 实数,统一行高
                ---- 表, ((rownum1 rowheight1) (rownum2 rowheight2) ...)
注  意: 计数由 0 起
返回值: Object

4 (Table:SetColumnWidth tb Colwidth)
功  能: 设置Table列宽
参  数: tb --- Table Object
        RowHeight --- 实数,统一列宽
                ---- 表, ((colnum1 colwidth1) (colnum2 colwidth2) ...)
注  意: 计数由 0 起
返回值: Object

5 (Table:Make lst p RowHeight textheight)
功  能: 制作表格
参  数: lst --- 字串列表
        p   --- 插入点,默认当前样式的插入点
        Rowheight --- 行高( INT or Real)
        textheight --- 字高,nil 或 "" 取 0.4 * RowHeight
返回值: Object

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

使用道具 举报

已领礼包: 3867个

财富等级: 富可敌国

发表于 2014-3-10 09:04:36 | 显示全部楼层
在acad.dwt模式时,表格的行高小于9时设置无效。

点评

试试这个 fas ,说明见上帖  详情 回复 发表于 2014-3-10 09:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-10 09:12:23 | 显示全部楼层
dnbcgrass 发表于 2014-3-10 09:04
在acad.dwt模式时,表格的行高小于9时设置无效。

试试这个 fas ,说明见上帖

lib-table.rar

2.25 KB, 下载次数: 22

fas

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

使用道具 举报

已领礼包: 3867个

财富等级: 富可敌国

发表于 2014-3-11 21:53:49 | 显示全部楼层
根据st788796 的意见,先将表格缩小到的行高为0.1,再设置行高至要求值即可解决行高设置的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2015-4-22 14:32:13 | 显示全部楼层
向长老请教个问题...块统计时缩略图选择自适应方式...图块高度等于行高...如果想设置成图块高等于行高的85%....有没有什么好效率高点的方法...我用vla-SetBlockScale...来逐个调整...速度好慢呀...听E大说单元格可以设置四个方向的space ....但我没找到相关函数...拜托长老是不是抽空研究下解决办法.....缩略图顶着表格线.....打印出来..确实不太好看呀...{:soso_e110:}

点评

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-4-22 16:36:42 来自手机 | 显示全部楼层
本帖最后由 iLisp 于 2015-4-22 16:43 编辑
q3_2006 发表于 2015-4-22 14:32
向长老请教个问题...块统计时缩略图选择自适应方式...图块高度等于行高...如果想设置成图块高等于行高的85% ...


在样式中设置HorzCellMargin VertCellMargin看看效果

点评

貌似没用...  详情 回复 发表于 2015-4-23 10:34
谢谢回复...我试试...  详情 回复 发表于 2015-4-23 08:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2015-4-23 08:36:51 | 显示全部楼层
iLisp 发表于 2015-4-22 16:36
在样式中设置HorzCellMargin VertCellMargin看看效果

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2015-4-23 10:34:37 | 显示全部楼层
iLisp 发表于 2015-4-22 16:36
在样式中设置HorzCellMargin VertCellMargin看看效果


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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-4-23 12:18:06 | 显示全部楼层
_$ (setq tb (vlax-ename->vla-object (car (entsel))))
#<VLA-OBJECT IAcadTable2 10fe59d4>
_$ (vla-SetBlockTableRecordId tb 1 2   (vla-get-objectid (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) "1"))
:vlax-true)
nil
_$
_$ (vla-put-HorzCellMargin tb 3.0)
nil
_$
_$ (vla-put-HorzCellMargin tb 6)
nil
_$
_$ (vla-put-vertcellmargin tb 3.0)
nil
_$

点评

谢谢......我太笨了...先STYLE里面设置好...再填的表...理解差很大....  详情 回复 发表于 2015-4-23 13:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2015-4-23 13:16:19 | 显示全部楼层
iLisp 发表于 2015-4-23 12:18
_$ (setq tb (vlax-ename->vla-object (car (entsel))))
#
_$ (vla-SetBlockTableRecordId tb 1 2   (vla ...

谢谢......我太笨了...先STYLE里面设置好...再填的表...理解差很大....{:soso_e110:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 05:53 , Processed in 0.450897 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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