自编的文字右对齐程序中为什么镜像不好使?
本帖最后由 yeahyeah 于 2013-8-14 21:44 编辑下面右对齐(ttt)程序和左对齐(tt)程序只差一个镜像。我的思路是只要实现了左对齐,再一镜像,就实现了右对齐。
现在左对齐程序好好的,为什么右对齐镜像功能实现不了呢?
憋得哇哇哭。。。求高人指点。。。。
(defun C:ttt () ;右对齐
(setq bp (getpoint "\n指定基准点:"))
(setq bpx (car bp))
(prompt "\n请选择要对齐的文字")
(setq ss (ssget '((0 . "TEXT")))) ;根据选择对象创建选择集
(setq n 0)
(setq bpy (cadr bp))
(setq bpay (1+ bpy))
(setq bpa (list bpx bpay 0))
(repeat (sslength ss) ;求出选择集中的对象(图元)数目
(setq en (ssname ss n)) ;返回选择集中由序号指定的那个对象(图元)的图元名
(setq endata (entget en)) ;获得对象(图元)的定义数据
(setq 10_data (assoc 10 endata))
(setq 10_y (caddr 10_data))
(setq 10_z (cadddr 10_data))
(setq 10_newdata (list 10 bpx 10_y 10_z))
(setq 72_data (assoc 72 endata))
(setq 72_newdata (cons 72 0))
(setq 11_data (assoc 11 endata))
(setq 11_newdata (list 11 0.0 0.0 0.0))
(setq endata (subst 10_newdata 10_data endata))
(setq endata (subst 72_newdata 72_data endata))
(setq endata (subst 11_newdata 11_data endata))
(entmod endata)
(command "mirror" endata "" bp bpa "y")
(setq n (1+ n))
)
)
;哈哈哈!谢谢群里的!我把群码当做图元用了!应该是(command "mirror" en "" bp bpa "y")!哈哈哈!
;========================================================
(defun C:tt () ;左对齐
(setq bp (getpoint "\n指定基准点:"))
(setq bpx (car bp))
(prompt "\n请选择要对齐的文字")
(setq ss (ssget '((0 . "TEXT")))) ;根据选择对象创建选择集
(setq n 0)
(setq bpy (cadr bp))
(setq bpay (1+ bpy))
(setq bpa (list bpx bpay 0))
(repeat (sslength ss) ;求出选择集中的对象(图元)数目
(setq en (ssname ss n)) ;返回选择集中由序号指定的那个对象(图元)的图元名
(setq endata (entget en)) ;获得对象(图元)的定义数据
(setq 10_data (assoc 10 endata))
(setq 10_y (caddr 10_data))
(setq 10_z (cadddr 10_data))
(setq 10_newdata (list 10 bpx 10_y 10_z))
(setq 72_data (assoc 72 endata))
(setq 72_newdata (cons 72 0))
(setq 11_data (assoc 11 endata))
(setq 11_newdata (list 11 0.0 0.0 0.0))
(setq endata (subst 10_newdata 10_data endata))
(setq endata (subst 72_newdata 72_data endata))
(setq endata (subst 11_newdata 11_data endata))
(entmod endata)
(setq n (1+ n))
)
)
(defun C:ttt () ;右对齐
(setq bp (getpoint "\n指定基准点:"))
(setq bpx (car bp))
(prompt "\n请选择要对齐的文字")
(setq ss (ssget '((0 . "TEXT")))) ;根据选择对象创建选择集
(setq n 0)
(setq bpy (cadr bp))
(setq bpay (1+ bpy))
(setq bpa (list bpx bpay 0))
(repeat (sslength ss) ;求出选择集中的对象(图元)数目
(setq en (ssname ss n)) ;返回选择集中由序号指定的那个对象(图元)的图元名
(setq endata (entget en)) ;获得对象(图元)的定义数据
(setq 10_data (assoc 10 endata))
(setq 10_y (caddr 10_data))
(setq 10_z (cadddr 10_data))
(setq 10_newdata (list 10 bpx 10_y 10_z))
(setq 72_data (assoc 72 endata))
(setq 72_newdata (cons 72 0))
(setq 11_data (assoc 11 endata))
(setq 11_newdata (list 11 0.0 0.0 0.0))
(setq endata (subst 10_newdata 10_data endata))
(setq endata (subst 72_newdata 72_data endata))
(setq endata (subst 11_newdata 11_data endata))
(entmod endata)
;;; (command "mirror" endata "" bp bpa "y")
(setq n (1+ n))
)
(command "mirror" ss "" bp bpa "y")
)
为什么我把 (command "mirror")从repeat里面移出来就好了呢?为什么?
提供了另外一个思路:
(command "_MOVE" en "" (cdr 10_data) (list bpx 10_y 10_z))
(command "mirror" en "" bp bpa "y")
直接这样试试
我试了下挺好!哈哈哈!谢谢 老师!
(defun C:ttt () ;右对齐
(setq bp (getpoint "\n指定基准点:"))
(setq bpx (car bp))
(prompt "\n请选择要对齐的文字")
(setq ss (ssget '((0 . "TEXT")))) ;根据选择对象创建选择集
(setq n 0)
(setq bpy (cadr bp))
(setq bpay (1+ bpy))
(setq bpa (list bpx bpay 0))
(repeat (sslength ss) ;求出选择集中的对象(图元)数目
(setq en (ssname ss n)) ;返回选择集中由序号指定的那个对象(图元)的图元名
(setq endata (entget en)) ;获得对象(图元)的定义数据
(setq 10_data (assoc 10 endata))
(setq 10_y (caddr 10_data))
(setq 10_z (cadddr 10_data))
(setq 72_data (assoc 72 endata))
(setq 72_newdata (cons 72 0))
(setq 11_data (assoc 11 endata))
(setq 11_newdata (list 11 0.0 0.0 0.0))
(setq endata (subst 72_newdata 72_data endata))
(setq endata (subst 11_newdata 11_data endata))
(entmod endata)
(command "_MOVE" en "" (cdr 10_data) (list bpx 10_y 10_z))
(command "mirror" en "" bp bpa "y")
(setq n (1+ n))
)
;;; (command "mirror" ss "" bp bpa "y")
)
谢谢楼主分享,辛苦了! 收集相关帖子: 改变文字的对齐方式 标记一下,收藏了 收藏了,标记一下
页:
[1]