- A+
cad表格是可以直接导出到其他软件使用的,前提下数据要同步,前面已经介绍了两种,一种是硬通过直线画,缺点不能同步数据,第2种是使用组码创建,第3种就是使用vla-addtable 函数创建了,懒得介绍了,自己看吧,代码有注释。
(defun c:aDD ( / ActiveDocument mSpace pt myTable nRows nCols row cell lst_en ptt)
(vl-load-com)
;指向 AutoCAD 对象的指针,对象特性
(setq ActiveDocument (vla-get-activedocument
(vlax-get-acad-object)))
(setq mSpace(vla-get-modelspace ActiveDocument))
;vlax-vbDouble (5) 双精度浮点数
(setq pt (vlax-make-safearray vlax-vbDouble'(0 . 2)))
;表的插入点
(setq ptt (getpoint "\n-->>>伙计百科-->请指定表的基点:"))
(vlax-safearray-fill pt ptt);创建数组、填满数组
(setq myTable(vla-addtable mSpace pt 6 5 12 35));(vla-addtable 空间对象 表点 行数 列数 行高 列宽)
(vla-setcelltextheight myTable 0 0 15);标题字体大小
(vla-settext myTable 0 0 "网站huojibk.com");标题
;表的行数
(setq nRows(- (vla-get-rows myTable) 1))
;表的列数
(setq nCols(- (vla-get-columns myTable) 1))
(setq btt'("序号" "日期" "网站" "名称" "备注" )
cell 0)
;设置表头
(while (<= cell nCols)
(setq lst_en(nth cell btt))
(vla-setCelltextHeight myTable 1 cell 8.0);字体大小
(vla-settext myTable 1 cell lst_en)
(setq cell (1+ cell))
)
; 行和列的循环初始值
(setq row 2
cell 0
lst_en 0)
; 循环写表
(while (<= row nRows)
(while (<= cell nCols)
(vla-setCelltextHeight myTable row cell 6.0);字体大小
;(vla-settext 表对象 行 例 “值”)
(vla-settext myTable row cell (strcat "伙计百科" (itoa lst_en)))
; 中间对齐
(vla-setCellAlignment myTable row cell 5)
(setq cell (1+ cell)
lst_en(1+ lst_en))
);while
(setq row (1+ row))
(setq cell 0)
);while
(princ)
)
复制
测试命令ADD