明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1773|回复: 6

[已解答] 自编的文字右对齐程序中为什么镜像不好使?

[复制链接]
发表于 2013-8-14 20:42 | 显示全部楼层 |阅读模式
本帖最后由 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))
  )
)
;哈哈哈!谢谢群里的[ZZXXQQ]!我把群码当做图元用了!应该是(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))
  )
)


 楼主| 发表于 2013-8-14 21:06 | 显示全部楼层
(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里面移出来就好了呢?为什么?




 楼主| 发表于 2013-8-14 22:03 | 显示全部楼层
[ZZXXQQ] 提供了另外一个思路:
(command "_MOVE" en "" (cdr 10_data) (list bpx 10_y 10_z))
(command "mirror" en "" bp bpa "y")
直接这样试试

我试了下挺好!哈哈哈!谢谢 [ZZXXQQ]老师!


(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")
)

发表于 2013-8-17 11:37 | 显示全部楼层
谢谢楼主分享,辛苦了!

点评

没什么,我也是设计干活需要才琢磨这东西,其实并不全,比如我这只是处理单行文本的,多行文本的还没研究,反正都是利用组码吧。呵呵。  发表于 2013-8-17 14:10
 楼主| 发表于 2013-8-17 15:39 | 显示全部楼层
收集相关帖子: 改变文字的对齐方式
发表于 2014-11-26 19:32 | 显示全部楼层
标记一下,收藏了
发表于 2014-11-26 19:33 | 显示全部楼层
收藏了,标记一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 11:44 , Processed in 1.048234 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表