一个小程序:对齐文字,有时我们需要对不同区域内的文字排列整齐以下程序对你有帮助
一个小程序:对齐文字,有时我们需要对不同区域内的文字排列整齐以下程序对你有帮助。加载后命令行输入dq(defun C:dq ()
(setq oldcmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq oldblip (getvar "blipmode"))
(setvar "blipmode" 0)
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq text (ssget))
(initget "H L")
(setq a (getkword "行对齐(H)/列队齐(L)?"))
(if (= a nil)
(setq a "l"))
(SETQ a (strcase a T)) ;提示用户建立选择集text
(setq n 0) ;设置计数器初始值
(setq pointend0 (getpoint "对齐点:"))
(repeat (sslength text) ;建立循环长度为所选对象的个数
(setq name (ssname text n)) ;获取选择集中第n个对象的图元名
(setq entl (entget name)) ;设置 entl 为最新图元的数据关联表
(setq ct 9) ;设置nth函数参数
;(setq pointstar (nth ct entl)) ;获取文字图元的第9个属性---坐标属性
(setq pointstar (nth ct entl))
(if (= a "l")
(progn
(setq pointentl (list (cadr pointstar) (caddr pointstar)))
;建立其点表,并将其赋值给pointel1
(setq pointend (list (car pointend0) (caddr pointstar)))
;设置对齐点的坐标
)
(progn
(setq pointentl (list (cadr pointstar) (caddr pointstar)))
;建立其点表,并将其赋值给pointel1
(setq pointend (list (cadr pointstar) (cadr pointend0)))
;设置对齐点的坐标
)
)
(command "move" name "" pointentl pointend)
;)
(setq n (1+ n))
)
(setvar "cmdecho" oldcmd)
(setvar "blipmode" oldblip)
(setvar "osmode" oldsnap)
(princ) ;静默退出
) 程序不错!功能还有待改进!假如要对齐的文本包括TEXT文本、MTEXT文本或者是与尺寸线、箭头分开的尺寸文本,该程序不能实现列对齐或行对齐。 方便,整理以前的人写乱糟糟的技术要求有办法了
页:
[1]