明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1429|回复: 14

[提问] 如何用Llisp指定表格里其中一个单元格的精度?

[复制链接]
发表于 2023-8-6 13:46:03 | 显示全部楼层 |阅读模式
本帖最后由 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函数可能适合。但是我不会用。折腾两天了,实在折腾不出来了
 楼主| 发表于 2023-8-7 09:12:18 | 显示全部楼层
本帖最后由 cfc 于 2023-8-7 10:48 编辑
liuhe 发表于 2023-8-7 08:46
你这样不行的,这个是参数 (vla-SetCellFormat 表格  行 列 小数位设置),这个函数和那个插入表格是不好 ...

能帮着看一下哪里出问题了吗?下面这个是我修改的源码。我只想给某几个单元格指定精度。
(defun AddTable (Title datalst RowH / TableList-C2R datalst colms maxrow wlst  row 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
        )
)
 楼主| 发表于 2023-8-7 08:58:50 | 显示全部楼层

虽然,我没有测试出来。但是感觉方向对了。还非常感谢你。我想转账给你20个明经币的。但是上面规定必须账户余额至少500个。也就是至少冲一百。我没有这么多,就冲了十块钱的。但是明经一个贴子评分一天只能一个。我看看分多次给你吧。不好意思了,我第一次发贴,不懂这些东西。
发表于 2023-8-7 08:46:43 | 显示全部楼层
cfc 发表于 2023-8-7 00:05
大神,我用cad2024测试不成功呢
(vla-SetCellFormat tabela 4 0 "%lu2%pr1")
还需要注意什么吗?

你这样不行的,这个是参数 (vla-SetCellFormat 表格  行 列 小数位设置),这个函数和那个插入表格是不好匹配的,得需要修改才行。
注意:行列是从0行0列算起来的
 楼主| 发表于 2023-8-6 13:47:10 | 显示全部楼层
cad2024的帮助,关于table对象的 https://help.autodesk.com/view/A ... A-94FA-66BB3040F0AA
发表于 2023-8-6 16:38:52 | 显示全部楼层
6.066显示6.01 不合理吧
发表于 2023-8-6 18:14:18 | 显示全部楼层
带入表的时候把数据整理好后在写入
发表于 2023-8-6 20:11:20 | 显示全部楼层
本帖最后由 kozmosovia 于 2023-8-6 20:21 编辑

使用SetCellFormat

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
cfc + 1 + 5 虽然,我没有测试出来,但是感觉方向对了。.

查看全部评分

发表于 2023-8-6 20:26:12 | 显示全部楼层
本帖最后由 xyp1964 于 2023-8-6 20:27 编辑



其实普通直线和text的表格也不错

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-8-6 20:40:05 | 显示全部楼层
飞雪神光 发表于 2023-8-6 16:38
6.066显示6.01 不合理吧

一着急说错了。6.07。就是保持2位小数的精度
 楼主| 发表于 2023-8-7 00:05:30 | 显示全部楼层

大神,我用cad2024测试不成功呢
(vla-SetCellFormat tabela 4 0 "%lu2%pr1")
还需要注意什么吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:44 , Processed in 0.160626 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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