cfc 发表于 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 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
      )
)

liuhe 发表于 2023-8-7 09:35:15

cfc 发表于 2023-8-7 09:12
能帮着看一下哪里出问题了吗?下面这个是我修改的源码。我只想给某几个单元格指定精度。
(defun AddTabl ...

需要先赋值再设置小数个位数

kozmosovia 发表于 2023-8-7 09:51:06

cfc 发表于 2023-8-7 08:58
虽然,我没有测试出来。但是感觉方向对了。还非常感谢你。我想转账给你20个明经币的。但是上面规定必须账 ...

不用了,没必要那么麻烦。我也不缺。

cfc 发表于 2023-8-7 10:34:23

liuhe 发表于 2023-8-7 09:35
需要先赋值再设置小数个位数

非常非常感谢。

cfc 发表于 2023-8-8 00:28:14

kozmosovia 发表于 2023-8-6 20:11
使用SetCellFormat

大神,还有个问题,如何给整个表格指定一个精度啊?目前经过您的指导,是可以给某一个单元格指定精度了
页: 1 [2]
查看完整版本: 如何用Llisp指定表格里其中一个单元格的精度?