明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4031|回复: 13

[讨论] [求助]镜像后如何不改变文字的相对关系?

[复制链接]
发表于 2010-9-2 09:08 | 显示全部楼层 |阅读模式

几列文字,镜像后,相对的顺序就完全反了

如图一的情况

 

想请教,有无办法,使得镜像后变成图二的情况?也就是说原来的文字的相对位置不改变的情况

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-9-2 09:39 | 显示全部楼层
好像没有直接办法,文字部分是不是可以用复制解决?
发表于 2010-9-2 11:08 | 显示全部楼层
是有一个变量设置的,不过我也找不到了,你看看CAD帮助吧
发表于 2010-9-6 20:01 | 显示全部楼层
改系统变量是不行的(mirrtext)

直线镜像,文字复制
发表于 2010-9-7 14:16 | 显示全部楼层
本帖最后由 作者 于 2010-9-7 21:27:05 编辑

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-9-7 18:13 | 显示全部楼层
xyp1964版主的动画演示好像不能满足楼主的要求?
发表于 2010-9-7 22:44 | 显示全部楼层

相对位置不变,还叫镜像?直接复制吧

 

发表于 2010-10-14 10:59 | 显示全部楼层
我们专业有特殊需求,这样来的更方便
发表于 2010-10-14 12:28 | 显示全部楼层
  1. (defun c:Mr (/ gxl-MidPoint gxl-GetssBox )
  2.   (defun gxl-GetssBox (ss / maxpt maxptlst minpt minptlst obj x ss1)
  3.   (setq ss1 (gxl-Sel-SS->List ss))
  4.   (foreach x ss1
  5.     (setq obj (vlax-ename->vla-object x))
  6.     ;(setq minPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  7.     ;(setq maxPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  8.     (vla-GetBoundingBox Obj 'minpt 'maxpt) ; 得到包围框
  9.     (setq minPt (vlax-safearray->list minPt))
  10.     (setq maxPt (vlax-safearray->list maxPt))
  11.     (setq minPtlst (append minPtlst (list minPt)))
  12.     (setq maxPtlst (append maxPtlst (list maxPt)))
  13.   ) ;_ 结束foreach
  14.   (setq minPt (list (apply 'min (mapcar 'car minPtlst))
  15.       (apply 'min (mapcar 'cadr minPtlst))
  16.       0
  17.        ) ;_ 结束list
  18.   ) ;_ 结束setq
  19.   (setq maxPt (list (apply 'max (mapcar 'car maxPtlst))
  20.       (apply 'max (mapcar 'cadr maxPtlst))
  21.       0
  22.        ) ;_ 结束list
  23.   ) ;_ 结束setq
  24.   ;(command "rectang" minPt maxPt)
  25. (list minPt maxPt)
  26. )
  27.   (defun gxl-MidPoint (p1 p2)
  28.   (if (> 2 (length p1))
  29.       (list (* 0.5 (+ (car p1) (car p2))) (* 0.5 (+ (cadr p1) (cadr p2))) (* 0.5 (+ (caddr p1) (caddr p2))))
  30.       (list (* 0.5 (+ (car p1) (car p2))) (* 0.5 (+ (cadr p1) (cadr p2))))
  31.   )  
  32.   )
  33.   (defun gxl-Sel-SS->List (ss / cs_i out)
  34.   (if (= (type ss) 'PICKSET)
  35.     (progn
  36.       (setq cs_i 0.0
  37.      out  '()
  38.       )
  39.       (repeat (sslength ss)
  40. (setq out (cons (ssname ss cs_i) out))
  41. (setq cs_i (1+ cs_i))
  42.       )
  43.       (setq out (reverse out))
  44.     )
  45.   )
  46. )
  47.   (defun gxl-getbox (e1 / obj minpoint maxpoint)
  48.   (if (= 'ENAME (type e1))
  49.   (setq obj (vlax-ename->vla-object e1)) ;转换图元名
  50.     (setq obj e1)
  51.     )
  52.   (vla-GetBoundingBox obj 'minpoint 'maxpoint)
  53.      ;取得包容图元的最大点和最小点
  54.   (setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
  55.   (setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
  56.   ;;(command "box" minpoint maxpoint 2)
  57.   (setq obj (list minpoint maxpoint))
  58. )
  59.   (setq oldosmode (getvar "osmode"))
  60.   (setvar "osmode" 0)
  61.   (princ "\n选择要镜像的物体:")
  62.   (setq ss (ssget))
  63.   (if ss
  64.     (progn
  65.       (setq pt1(getpoint "\n指定镜像线的第一点:")
  66.      pt2 (getpoint pt1 "\n指定镜像线的第二点:")
  67.      )
  68.       (command "line" pt1 pt2 "")
  69.     (setq line (entlast))
  70.       (initget 7 "Yes No  ")
  71.       (setq kd (getkword "\n是否删除源对象?[是<Yes>/否<No>]否<No>"))
  72.       (if (= kd "") (setq kd "No"))
  73.       (setq nn (sslength ss)
  74.      n 0)
  75.       ;|
  76.       (repeat nn
  77.       (setq pl (GXL-GETBOX (setq en (ssname ss n))))
  78.       (setq pt (GXL-MIDPOINT (car pl) (cadr pl)))
  79.       (setq mpt (vlax-curve-getclosestpointto line pt t))
  80.       (setq ang (angle pt mpt))
  81.       (command "copy" en "" pt (polar pt ang (* 2 (distance pt mpt))))
  82.       
  83.       (if (= kd "Yes") (command "erase" en ""))
  84. (setq n (1+ n))
  85. )|;
  86.       (setq pl (gxl-GetssBox ss))
  87.       (setq pt (GXL-MIDPOINT (car pl) (cadr pl)))
  88.       (setq mpt (vlax-curve-getclosestpointto line pt t))
  89.       (setq ang (angle pt mpt))
  90.       (command "copy" ss "" pt (polar pt ang (* 2 (distance pt mpt))))
  91.       
  92.       (if (= kd "Yes") (command "erase" ss ""))
  93.       
  94.       )
  95.       
  96.     )
  97.   (entdel line)
  98.   (setvar "osmode" oldosmode)
  99.   )
发表于 2013-5-2 14:05 | 显示全部楼层
G版主就是强大啊~~~~~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 07:50 , Processed in 0.262271 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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