文字对齐源码
本帖最后由 whuluqw 于 2020-11-1 02:01 编辑最近在找文字对齐的程序,在明经看到这个帖还不错。但是原帖代码在文字有转角的时候仍然按照水平方向对齐,而不是沿着文字方向,于是修改一下考虑了文字角度。选择对象前还加了个if语句,如果没选择对象则自动退出。没有动图软件,放两张图片,需要的自行试用。原帖地址:http://bbs.mjtd.com/forum.php?mo ... 085&fromuid=7328399
;;******************************************************
;; 文字对齐
;;******************************************************
;;源码来源明经社区,最终由whuluqw修改 2020.11.01
(defun c:wzdq (/ ss ent amode obj i ii p px jd jdx jdy ang)
(setvar "cmdecho" 0)
;;-------------------------
(defun getdxf (ent ii)
(if (= (type ent) 'ename)
(setq ent (entget ent))
)
(cdr (assoc ii ent))
)
;;-------------------------
(defun ch_dxf (en num ch / old_num new_num ent)
(if
(setq ent (entget en)
new_num (cons num ch)
old_num (assoc num ent)
)
(entmod (subst new_num old_num ent))
(entmod (reverse (cons new_num (reverse ent))))
)
)
;;-------------------------
(princ "\n选择要对齐的文字<退出>:")
(if (setq ss (ssget '((0 . "TEXT"))))
(progn
(setq p (getpoint "指定对齐基点:"))
(setq px (car p)
py (cadr p)
);;基点x和y坐标
(initget "L C R")
(setq amode (getkword "\n选择对齐方式[左(L)/中(C)/右(R)]<左>:"))
(if (not amode)
(setq amode "L")
)
(cond
((= amode "L")
(setq ii 10)
(command "justifytext" ss "" "L")
)
((= amode "C")
(setq ii 11)
(command "justifytext" ss "" "C")
)
((= amode "R")
(setq ii 11)
(command "justifytext" ss "" "R")
)
)
(setq i 0)
(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq jd (getdxf ent ii))
(setq jdx (car jd)
jdy (cadr jd)
)
(princ )
;;;;;;;;;;;;;;;以下为添加代码 by whuluqw
(setq ang (getdxf ent 50)) ;;获取文字转角
(setq dx(- jdx px)
dy(- jdy py)
) ;;指定对齐点和文字基点距离
(setq dx2 (+ (* dx (cos ang)) (* dy (sin ang)))
dy2 (- (* dy (cos ang)) (* dx (sin ang)))
) ;;求移动距离
(setq newx (- jdx (* dx2 (cos ang)))
newy (- jdy (* dx2 (sin ang)))
)
;;;;;;;;;;;;;;以上为添加代码
(setq newjd (list newx newy))
(apply '(lambda (x) (ch_dxf x ii newjd)) (list ent))
;(vl-cmdf "_move" (ssname ss i) "" "non" jd "non" (list px jdy))
(setq i (+ i 1))
)
)
)
(princ)
)
那个梁图文字,PKPM下带的那个lsp 程序,可以实现左对齐而不改变文字位置。
但你这个梁图应该有详细点的需求。
比如: 集中标注左对齐, 原位标注,梁下中对齐,梁上,根据支座相对位置确定左或右对齐。
我有一份图纸,分解后,文字移位了,用CAD的 justifytext 命令选择左对齐,只能在文字当前位置固定
如何能够批量实现文字左对齐,如果有插件,可以付费,联系QQ3395426498 guankuiwu 发表于 2021-2-8 22:50
不错,如果 整合均布文字间距就更好
调整间距应该有调整间距的程序,我觉得不是每次对齐都要调整间距吧 谢谢楼主分享 谢谢楼主分享
谢谢楼主分享 谢谢分享。。。。 多谢分享!!!! 感谢分享!!! 谢谢楼主分享好程序 程序还是有点欠缺,如果选中的文字中有多种角度的文字,就不能对齐了,所以除了设置基点外,还应设置对齐的参照角度~谢谢 感谢楼主分享!!!