如何用Llisp指定表格里其中一个单元格的精度?
本帖最后由 cfc 于 2023-8-7 10:35 编辑已解决,谢谢大家的帮助
原贴在这里http://bbs.mjtd.com/forum.php?mo ... ghlight=EDF1&page=1
第一楼这个创建表格的函数。我如何指定单元格的精度呢?比如6.066。我想指定精度为2。显示出来:6.01
我现在用的是CAD2024。我参看帮助:https://help.autodesk.com/view/A ... E-9729-F5E15341BAF5
有个SetDataType函数可能适合。但是我不会用。折腾两天了,实在折腾不出来了 本帖最后由 cfc 于 2023-8-7 10:48 编辑
liuhe 发表于 2023-8-7 08:46
你这样不行的,这个是参数 (vla-SetCellFormat 表格行 列 小数位设置),这个函数和那个插入表格是不好 ...
能帮着看一下哪里出问题了吗?下面这个是我修改的源码。我只想给某几个单元格指定精度。
(defun AddTable (Title datalst RowH / TableList-C2R datalst colms maxrow wlstrow colm i rown coln)
(defun TableList-C2R (lst n / l lst)
(setq l nil)
(repeat n
(setq l (cons (mapcar
'car
lst
) l
)
lst (mapcar
'cdr
lst
)
)
)
(reverse l)
)
(setq datalst (mapcar
'(lambda (y)
(mapcar
'vl-princ-to-string
y
)
)
datalst
)
colms (length datalst)
maxrow (apply
'max
(mapcar
'length
datalst
)
)
wlst (mapcar
'(lambda (x)
(apply
'max
(mapcar
'(lambda (y)
(if y
(strlen y)
0
)
)
x
)
)
)
(TableList-C2R datalst maxrow)
)
tabela (vla-addTable (vla-get-ModelSpace
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
) (vlax-3d-point (getpoint "\n在屏幕上指定插入点创建表格."));
(1+ colms) maxrow RowH (* RowH 50)
)
)
(vla-put-regenerateTableSuppressed tabela :vlax-true)
(setq i -1)
(foreach w wlst
(vla-setcolumnwidth tabela (setq i (1+ i))
1700
)
)
(vla-SetCellFormat tabela 4 1 "%lu2%pr2") ;精度测试不成功,没有任何效果
(vla-SetTextHeight tabela acTitleRow (* 0.75 RowH))
(vla-SetTextHeight tabela (+ acDataRow acHeaderRow) (* 0.5 RowH))
(vla-setalignment tabela acDataRow acMiddleCenter)
(vla-setText tabela 0 0 Title)
(setq row 0)
(foreach data datalst
(setq row (1+ row)
colm -1
)
(foreach str data
(vla-setText tabela row (setq colm (1+ colm)) str)
)
)
(vla-put-regenerateTableSuppressed tabela :vlax-false)
(princ)
)
(defun c:fff()
(vl-load-com)
(AddTable "TITLE" '( ("Pe(kW)" "6.0012")
("Kd" "1.0012")
("cosφ" "0.8012")
("Pc(kW)" "=B3*B2")
("Ic(A)" "=B5/1.732/0.38/B4")
) 600
)
) kozmosovia 发表于 2023-8-6 20:11
使用SetCellFormat
虽然,我没有测试出来。但是感觉方向对了。还非常感谢你。我想转账给你20个明经币的。但是上面规定必须账户余额至少500个。也就是至少冲一百。我没有这么多,就冲了十块钱的。但是明经一个贴子评分一天只能一个。我看看分多次给你吧。不好意思了,我第一次发贴,不懂这些东西。 cfc 发表于 2023-8-7 00:05
大神,我用cad2024测试不成功呢
(vla-SetCellFormat tabela 4 0 "%lu2%pr1")
还需要注意什么吗?
你这样不行的,这个是参数 (vla-SetCellFormat 表格行 列 小数位设置),这个函数和那个插入表格是不好匹配的,得需要修改才行。
注意:行列是从0行0列算起来的
cad2024的帮助,关于table对象的 https://help.autodesk.com/view/ACD/2024/CHS/?guid=GUID-7B82400C-53D0-4D1A-94FA-66BB3040F0AA 6.066显示6.01 不合理吧 带入表的时候把数据整理好后在写入 本帖最后由 kozmosovia 于 2023-8-6 20:21 编辑
使用SetCellFormat 本帖最后由 xyp1964 于 2023-8-6 20:27 编辑
其实普通直线和text的表格也不错
飞雪神光 发表于 2023-8-6 16:38
6.066显示6.01 不合理吧
一着急说错了。6.07。就是保持2位小数的精度 kozmosovia 发表于 2023-8-6 20:11
使用SetCellFormat
大神,我用cad2024测试不成功呢
(vla-SetCellFormat tabela 4 0 "%lu2%pr1")
还需要注意什么吗?
页:
[1]
2