根据首行改字高左对齐并按一定间距排序
(defun c:wzpx (/ e1 e2 ent heigh heighy i inpoint k lst ob ob_ptx ob_pty ptpto ptx ss
)
(prompt "\n欢迎使用由Gavin业余时间写的程序! 本程序命令:wzpx")
(prompt "\n本程序主要功能:将文字左对齐并按一定间距排序!")
(setq ss (ssget '((0 . "text"))))
(setq i 0
lst '()
)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq inpoint (Vlax-Get (Vlax-Ename->Vla-Object ent) 'InsertionPoint))
(setq lst (append
(list (cons ent inpoint))
lst
)
)
(setq i (1+ i))
)
(setq lst (vl-sort lst (function (lambda (e1 e2)
(< (caddr e1) (caddr e2))
)
)
)
)
(setq ob_ptx (cadr (last lst)))
(setq ob_pty (caddr (last lst)))
(setq heigh (Vlax-Get (Vlax-Ename->Vla-Object (car (last lst))) 'Height))
(setq k 0)
(repeat (length lst)
(setq ob (Vlax-Ename->Vla-Object (car (nth k lst))))
(setq pt (Vlax-Get ob 'InsertionPoint))
(setq ptx (subst
ob_ptx
(car pt)
pt
)
)
(setq heighy (- ob_pty (* 1.2 heigh (- (length lst) (1+ k)))))
(setq pto (subst
heighy
(cadr ptx)
ptx
)
)
(Vlax-Put-Property ob 'InsertionPoint (Vlax-3d-Point pto))
(Vlax-Put-Property ob 'Height heigh)
(setq k (1+ k))
)
(princ)
)
垂直向的文字重叠了,能再加个循环就更完美了 楼主这个源码可以学习不错,谢谢 谢谢楼主分享
谢谢楼主的分享,试用了,非常好,收藏备用了! 谢谢楼主分享,收藏学习! http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99960 菜卷鱼 发表于 2014-1-5 09:25 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99960
这个可以参考。 繁花落叶 发表于 2014-1-5 11:16 static/image/common/back.gif
这个可以参考。
两者各有特色 1.2倍行高! 试了试貌似有时候不起作用哦 sabbathcn 发表于 2014-12-16 11:48 static/image/common/back.gif
试了试貌似有时候不起作用哦
程序只是改变的插入点,也就是组码10,当文字为中、右、调整时,程序就不起作用的了。 springwillow 发表于 2014-12-16 13:54 static/image/common/back.gif
程序只是改变的插入点,也就是组码10,当文字为中、右、调整时,程序就不起作用的了。
时而管用时而不管用
是和字体有关还是和文字的位置有关系呢?
页:
[1]
2