[LISP函数]:自动生成表格的lisp(好东西与大家共享)
(defun C:bg(/ rows colu rows1 rows2 ly lx i ii propt colu1 co coodx dy dxx dyy str with ptp1 ptp2 ptp3 ptp4 os)
(setvar "CMDECHO" 0)
(setq lay (getvar "clayer"))
(setq os (getvar "OSMODE"))
(setvar "OSMODE" 0)
(command "color" "bylayer")
(command "layer" "m" "bg" "c" "y" "bg" "")
(initget 7)
(setq rows (getint "\n表格总行数: "))
(initget 7)
(setq colu (getint "\n表格总列数: "))
(initget 7)
(setq rows1 (getreal "\n表格第一行行距: "))
(initget 7)
(setq rows2 (getreal "\n表格其它行行距: "))
(setq ly (+ rows1 (* rows2 (1- rows))))
(setq lx 0)
(setq i 1)
(repeat colu
(initget 7)
(setq ii (itoa i))
(setq propt (strcat "表格第" ii "列列距: "))
(setq colu1 (getreal propt))
(setq lx (+ lx colu1))
(if (= 1 i) (setq co (list colu1))
(progn
(setq coo (list colu1))
(setq co (append cocoo))
)
)
(setq i (1+ i))
)
(setq pt1 (getpoint "\n表格左上角点: "))
(setq ptp1 pt1)
(setq dy (cadr pt1))
(setq dx (car pt1))
(setq dxx (+ dx lx))
(setq pt2 (list dxx dy))
(command "line" pt1 pt2 "")
(setq dy (- dy rows1))
(setq pt1 (list dx dy))
(setq pt2 (list dxx dy))
(command "line" pt1 pt2 "")
(repeat (1- rows)
(setq dy (- dy rows2))
(setq pt1 (list dx dy))
(setq pt2 (list dxx dy))
(command "line" pt1 pt2 "")
)
(setq dyy (+ dy ly))
(setq pt2 (list dx dyy))
(command "line" pt1 pt2 "")
(setq i 0)
(repeat colu
(setq c (nth i co))
(setq dx (+ dx c))
(setq pt1 (list dx dy))
(setq pt2 (list dx dyy))
(command "line" pt1 pt2 "")
(setq i (1+ i))
)
(initget "Yes No")
(setq str (getkword "\n表格边框是否加粗: 不加粗:No / <加粗:Yes> "))
(if (or (= str nil) (= (strcase str) "YES"))
(progn
(initget 6)
(setq with (getreal "\n表格边框线宽<0.6>: "))
(if (= with nil) (setq with 0.6))
(setq dy (cadr ptp1))
(setq dx (car ptp1))
(setq dxx (+ dx lx))
(setq ptp2 (list dxx dy))
(setq dyy (- dy ly))
(setq ptp3 (list dxx dyy))
(setq ptp4 (list dx dyy))
(command "PLINE" ptp1 "w" with with ptp2 ptp3 ptp4 "c")
)
)
(setvar "OSMODE" os)
(command "layer" "s" lay "")
(princ)(princ)
) 没有效果图上传啊。。可以看看效果 就好了咯。。。这样看不出什么名堂来。。 你的程序只能生成表格,跟画出来没什么区别,没有多大用处,应该考虑做一个实用点的工具,比如统计材料等。 是单一了点,但对常画表的朋友是不错的,现在AUTOCAD2005 有一个命令是生成表格的 我觉得画简表倒是可以的,应该加工一下,复杂的表格就不行了 做的不错,比我那个功能强多了~`,经常做表就需要 是单一了点 怎么用?????? 实际上2005里面的表格命令已经很好用了,可以指定行列属性和字高. 源程序,支持你,虽然功能我用不着,2005中就有,至少也提供了一种方法 谢谢楼主,不错的程序! 升级到2005有表格功能,功能要强大些。 制作钢筋表可以用的,谢谢了。 谢谢楼主,我这段时间也打算编一个表格程序,只是我的想法是:在DCL中先做好表格内的内容,并且设置好表格的横列方向的大小,最后连表带字一齐生成.
谢谢你的源码,我又多一个参考. 没有效果图上传啊。。可以看看效果