天天问 发表于 2024-5-6 21:41:15

CAD表格,如何用Lisp设置单元格的边距?

个人习惯,喜欢用CAD自带的表格,因为便于随时调整格式。


找了一些资料,目前可以修改表格字体,设置表格行高、列宽,修改表格框线的线宽。


可是在设置表格框线的线宽中,发现会影响表格的单元格边距(水平单元边距、垂直单元边距)。其实以前在设置表格外框线宽的时候,就想着如何用Lisp修改单元格的边距,无奈查了好多资料,都没有找到可以实现的方法。


有没有老师得空指导一下,如何用Lisp修改单元格的边距的?


下面贴一段我写的控制单元格框线线宽的代码。
(defun ff:Table_set_border_009 (table_ename / obj nRows nCols i)
(vl-load-com)
(setq obj (vlax-ename->vla-object table_ename));将图元转为VLA对象
(setq nRows(- (vla-get-rows obj) 1))    ;获取表的行数
(setq nCols(- (vla-get-columns obj) 1));获取表的列数

;****************关闭表格的实时更新,以提高修改表格的运行速度****************
(vla-put-HeaderSuppressed obj :vlax-true)
(vla-put-TitleSuppressedobj :vlax-true)
(vla-put-regeneratetablesuppressedobj :vlax-true)
;****************关闭表格的实时更新,以提高修改表格的运行速度****************

(setq i 0)

(while (<= i nRows)
    (setq j 0)
    (while (<= j ncols)
      (vla-setcellgridlineweight obj i j actopmask aclnwt009)
      (vla-setcellgridlineweight obj i j acbottommask aclnwt009)
      (vla-setcellgridlineweight obj i j acleftmask aclnwt009)
      (vla-setcellgridlineweight obj i j acrightmask aclnwt009)
      (setq j (1+ j))
    )
   
    (setq i (1+ i))
)

;********************************打开表格更新********************************
(vla-put-HeaderSuppressed obj :vlax-false)
(vla-put-TitleSuppressedobj :vlax-false)
(vla-put-regeneratetablesuppressedobj :vlax-false)
;********************************打开表格更新********************************

(princ)
)


自贡黄明儒 发表于 2024-5-7 07:12:16

autocad逐步完善的东西,虽然是好东西,table版本不一样,可能不同,用(vlax-dump-Object obj T),可用信息尽收眼底

天天问 发表于 2024-5-7 09:39:51

自贡黄明儒 发表于 2024-5-7 07:12
autocad逐步完善的东西,虽然是好东西,table版本不一样,可能不同,用(vlax-dump-Object obj T),可用信息 ...

谢谢黄老师提醒,确实忘了还可以查这个。查完之后失望了,没有可以设置的参数。还是要谢谢!

自贡黄明儒 发表于 2024-5-7 11:37:53

天天问 发表于 2024-5-7 09:39
谢谢黄老师提醒,确实忘了还可以查这个。查完之后失望了,没有可以设置的参数。还是要谢谢!

右边可以显示,说明可以找到
(vla-SetCellDataType MyTable 2 2 acLong acUnitDistance)
    (vla-SetCellFormat MyTable 1 3 "testFormat")
    (vla-SetCellState MyTable 4 3 acCellStateContentLocked)
    (vla-SetCellValue MyTable 1 4 5)
估计是类似的函数

天天问 发表于 2024-5-7 17:29:41

自贡黄明儒 发表于 2024-5-7 11:37
右边可以显示,说明可以找到
(vla-SetCellDataType MyTable 2 2 acLong acUnitDistance)
    (vla-SetC ...

您这几个函数是哪里找来的?这几个函数放到飞诗编辑器里,不能识别为函数。
之前我在明镜通道的VBA参考文件里找过table对象的方法和属性,设置函数都瞅了一遍,楞是没找着。

aihuyujian 发表于 2024-5-28 14:30:32

我也找了很久找不到参考文件里也没有只好将就用空格代替吧;P

kozmosovia 发表于 2024-5-28 15:45:09

这玩意叫Margin
https://help.autodesk.com/view/OARX/2021/ENU/?guid=GUID-180D2C78-B661-439A-8891-73849F40D47B

天天问 发表于 2024-5-29 16:54:27

kozmosovia 发表于 2024-5-28 15:45
这玩意叫Margin
https://help.autodesk.com/view/OARX/2021/ENU/?guid=GUID-180D2C78-B661-439A-8891-7384 ...

网页的底部的示例显示,VBA不可以,LISP不可用

kozmosovia 发表于 2024-5-29 17:14:51

本帖最后由 kozmosovia 于 2024-5-29 17:24 编辑

Not available不是不可用,是没有具体的案例给你展示而已。
用是可以用的。https://forums.autodesk.com/t5/v ... -color/td-p/4373244

天天问 发表于 2024-5-29 20:45:03

kozmosovia 发表于 2024-5-29 17:14
Not available不是不可用,是没有具体的案例给你展示而已。
用是可以用的。https://forums.autodesk.com/t ...

谢谢大佬指导。我也去试试
页: [1]
查看完整版本: CAD表格,如何用Lisp设置单元格的边距?