明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 999999

[提问] (求助)关于CAD原始的镜像功能的想法,求路过的大神看能不能实现

[复制链接]
 楼主| 发表于 2020-10-23 09:16:38 | 显示全部楼层
mokson 发表于 2020-10-22 08:00
mirrtext 设置为1,但是文字是反看的。
这种123 变 321文本信息的镜像,只能用 lisp 才能实现了。

您好,我需要的不是指镜像原本的功能,我想要那种,镜像后的关系,不是以光标经过的两点为中心对称的镜像,而是镜像后的东西是挨着光标经过的两点成镜像的关系哟,和文本镜不镜像没有关系哟,,谢谢您让我学到了文字镜像的参数设置
 楼主| 发表于 2020-10-23 09:17:46 | 显示全部楼层
cq4920 发表于 2020-10-22 18:03
(defun c:tt()

  (setq ss (ssget))

大神,您知道函数的链接哪吗
 楼主| 发表于 2020-10-23 09:18:31 | 显示全部楼层

8910是什么意思     哈哈,,专业的人说专业的术语,我都看不懂
 楼主| 发表于 2020-10-23 09:19:08 | 显示全部楼层
cghdy 发表于 2020-10-22 09:14
你这不是常规镜像功能,用论坛上的超级复制可以实现。

好的哟,我搜了一下,超级复制有一个贴子,我试试,谢谢啦
发表于 2020-10-23 14:46:10 | 显示全部楼层
本帖最后由 cq4920 于 2020-10-23 14:51 编辑
999999 发表于 2020-10-23 09:17
大神,您知道函数的链接哪吗

稍微整理了一下 原理不难

如果 选择 可以不分先后
再加个预览就更beautiful啦
有兴趣就再加个判断,如果不输入插入点,直接按空格,就原地翻转 ,如果输入A或者其他就垂直翻转,

  1. (defun c:tt(/ SS WK P1 P2 P3 P4 PT1 SS2)
  2. (MC:be1)
  3.   (setq ss (ssget))
  4.         (mc:Wk ss)
  5.         (setq wk (entlast)) ;获取选择集外框图元名
  6.          (progn
  7.                         (vl-load-com)
  8.                         (vla-getboundingbox (vlax-ename->vla-object wk) 'minpoint 'maxpoint)
  9.                         (setq p3 (vlax-safearray->list maxpoint)
  10.                                 p1 (vlax-safearray->list minpoint))
  11.                         (setq p2 (list (car p3) (cadr p1)))
  12.                         (setq p4 (list (car p1) (cadr p3)))
  13.       (COMMAND "_.erase"  wk "")
  14.                      )   
  15. (command "_.mirror" ss "" P2  P3 "n" "")            
  16. (setq ss2 (last_ent WK));;论坛里的一个函数
  17.    (setvar "OSMODE" os)
  18. ( setq pt1 (getpoint"\n指定放置位置"))
  19. (command "_.MOVE" ss2 "" p2 pt1)
  20. (MC:be11)      
  21. )

  22. ;;39外框
  23. (defun mc:wk (ss / oldos oldla  lst n obj minx miny maxx  maxy pt1
  24.          pt2 pt3 pt4)
  25.   (setq oldos (getvar "osmode"))
  26.   (setq oldla (getvar "clayer"))
  27.   (setvar "cmdecho" 0)
  28.   (setvar "osmode" 0)
  29.   (repeat (setq n (sslength ss))
  30.     (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
  31.     (vla-getboundingbox obj 'x 'y)
  32.     (setq lst (cons (vlax-safearray->list y)
  33.         (cons (vlax-safearray->list x) lst)
  34.         )
  35.     )
  36.   )
  37.   (setq  minx (car (vl-sort (mapcar 'car lst) '<))
  38.   miny (car (vl-sort (mapcar 'cadr lst) '<))
  39.   maxx (car (vl-sort (mapcar 'car lst) '>))
  40.   maxy (car (vl-sort (mapcar 'cadr lst) '>))
  41.   )
  42.   (setq pt1 (list minx miny))
  43.   (setq pt2 (list maxx miny))
  44.   (setq pt3 (list maxx maxy))
  45.   (setq pt4 (list minx maxy))
  46.         (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 10 pt1) (cons 10 pt2) (cons 10 pt3) (cons 10 pt4)))
  47.   (setvar "osmode" oldos)
  48.   (setvar "clayer" oldla)
  49.   (setvar "cmdecho" 1)
  50.   (princ)
  51. )
  52. ;;40最后生产出的图元
  53. (defun last_ent (en / ss)
  54.         (if en
  55.                 (progn
  56.                         (setq ss (ssadd))
  57.                         (while (setq en (entnext en))
  58.                                 (if (not (member (cdr (assoc 0 (entget en)))
  59.                                                                          '("ATTRIB" "VERTEX" "SEQEND")
  60.                                                                  )
  61.                                                 )
  62.                                         (ssadd en ss)
  63.                                 );if
  64.                         );while
  65.                         (if (zerop (sslength ss)) (setq ss nil))
  66.                         ss
  67.                 );progn
  68.                 (ssget "_x")
  69.         );if
  70. )


  71. ;准备:控制回显和输入,捕捉,当前颜色
  72. (defun MC:be1()
  73.         (setq cm (getvar "cmdecho")
  74.                 os (getvar "osmode"))
  75.         (setvar "CMDECHO" 0)
  76.         (setvar "OSMODE" 0)
  77.         (command "color" "bylayer")
  78.         (command "_undo" "be"))        

  79. (defun Mc:be11 ()
  80.         (setvar "orthomode" 0)
  81.   (command "_undo" "e")
  82.   (setvar "OSMODE" os)
  83.         (setvar "cmdecho" cm))

回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-23 17:18:26 | 显示全部楼层
本帖最后由 bai2000 于 2020-10-23 18:56 编辑

指定放置位置前,能加个指定插入点就好用了--------就是镜像复制出,插入另外位置的在镜像后图形的点
 楼主| 发表于 2020-10-23 18:31:28 | 显示全部楼层
cq4920 发表于 2020-10-23 14:46
稍微整理了一下 原理不难

如果 选择 可以不分先后

谢谢大神,辛苦了,我好好研究一下
 楼主| 发表于 2020-10-23 18:31:53 | 显示全部楼层
bai2000 发表于 2020-10-23 17:18
指定放置位置前,能加个指定插入点就好用了

没有看懂呢
发表于 2020-10-25 09:32:30 | 显示全部楼层
明总辛苦了
 楼主| 发表于 2020-12-16 08:37:25 | 显示全部楼层
cq4920 发表于 2020-10-23 14:46
稍微整理了一下 原理不难

如果 选择 可以不分先后

谢谢大神,,大神这个插件代码正解决了我的需求,,谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 13:53 , Processed in 0.174019 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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