找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3316|回复: 19

[编程申请] 求一个1/4镜像的lisp

[复制链接]
发表于 2013-5-1 17:00:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
1/4镜像的lisp的思路大概是:首先提示要求先选择对象再拾取四角镜像的中心点<选对象确定中心>:
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 18:00:31 | 显示全部楼层
你说的这些工具你在用什么软件? 把你执行的过程作动画文件贴上来。

你这个功能是做啥的,都详细说说。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-2 20:06:42 | 显示全部楼层
本帖最后由 rxing 于 2013-12-8 12:35 编辑

1/4镜像就是这样的,比如把一个矩形就可以做出其他三个,注意是mirror,要文字不要镜像,这只是一个简单例子,要求对于其他图元也通用。程序执行的过程提示是:首先提示要求先选择对象;再拾取四角镜像的中心点<选对象确定中心>:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-2 22:22:05 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-5-3 00:45 编辑

[pcode=lisp,true](defun c:tt (/ ss p1 p2 s1 en)
  (if (and (setq ss (ssget))
             (setq pt (getpoint "\nCenter Point: "))
      )
    (progn
      (setq p1 (polar pt 0. 1.)
              p2 (polar pt (* 0.5 pi) 1.)
              en (entlast)
              s1 (ssadd)
      )
      (vl-cmdf ".undo" "g")
      (vl-cmdf ".mirror" ss "" "_none" pt "_none" p1 "N")
      (while (setq en (entnext en))
          (ssadd en s1)
      )
      (vl-cmdf ".mirror" ss "" "_none" pt "_none" p2 "n")
      (vl-cmdf ".mirror" s1 "" "_none" pt "_none" p2 "n")
      (vl-cmdf ".undo" "e")
    )
  )
  (princ)
)[/pcode]

点评

不错,好用。  发表于 2013-5-17 16:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-2 23:58:41 | 显示全部楼层
test12.gif


我用矩阵方法写一个。用前请加载高飞鸟斑竹的通用矩阵库函数。
我给矩阵函数库添加了下面几个函数。
[pcode=lisp,true]
;;通用矩阵函数;
; by Lispboy  ;
;给VLAX增加 TransformedCopy;
(defun Ent:TransformedCopy(ss mat / e e1 i obj ss1)
   (setq i -1)
   (setq ss1 (ssadd))
   (while (setq e (ssname ss (setq i (1+ i))))
      (setq e1 (entmakex (entget e)))
      (setq obj (vlax-ename->vla-object e1))
      (vla-transformby obj (vlax-TMatrix mat))
      (ssadd (entlast) ss1)
   )
   ss1
)
;选择集合并;
(defun Ent:PicksetUnion(ss1 ss2 / e i)
   (setq i -1)
   (while (setq e (ssname ss2 (setq i (1+ i))))
      (ssadd e ss1)
   )
)   
;;测试四角镜像程序;
;使用矩阵方法;
;
(defun c:tt( / mat_x mat_y  pt px py ss ss1)
   (if (and (setq ss (ssget))
            (setq pt (getpoint "\n四角镜像中心点<退出>:"))
       )
      (progn
         (setq px (polar pt 0.0 1e5)
               py (polar pt (/ pi 2) 1e5)
               mat_x (MAT:Reflect pt px) ;; 沿X轴镜像变换矩阵
               mat_y (MAT:Reflect pt py) ;;  沿Y轴镜像变换矩阵
         )
         (setq ss1 (Ent:TransformedCopy ss mat_x))
         (Ent:PicksetUnion ss ss1)
         (Ent:TransformedCopy ss mat_y)
      )
  )
  (princ)
)
[/pcode]

点评

可否把程序改下:在选择镜像中心的时候能够选择图形,并求出图形的中心作为要镜像的中心;最后程序执行完后可否继续执行,不要自动结束命令?以上,谢谢!!!  发表于 2013-5-4 18:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-5-3 08:52:57 | 显示全部楼层
本帖最后由 dwg001 于 2013-5-3 09:00 编辑

(while (setq en (entnext en))
         (ssadd en s1)
     )
[size=+0]Free-Lancer 楼主这句用得很好,赞一个。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-4 18:37:52 | 显示全部楼层

可否把程序改下:在选择镜像中心的时候能够选择图形,并求出图形的中心作为要镜像的中心;最后程序执行完后可否继续执行,不要自动结束命令?以上,谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-4 18:59:04 | 显示全部楼层
重拾下API,变换就不用矩阵了[pcode=lisp,true](defun c:tt (/ ss ss1 s1 p1 p2 s1 box pt)
  (while (and (progn
                (princ "\n选择镜像物体....")
                (setq ss (ssget))
              )
              (progn
                (princ "\n选择镜像中心物体...")
                (setq ss1 (ssget))
              )
         )
    (progn
      (setq box        (xdrx_entity_box ss1)
            pt        (xdrx_midp (car box) (caddr box))
      )
      (setq p1 (polar pt 0. 1.)
            p2 (polar pt (* 0.5 pi) 1.)
      )
      (xdrx_begin)
      (xdrx_setmark)
      (vl-cmdf ".mirror" ss "" "_none" pt "_none" p1 "N")
      (setq s1 (xdrx_getss))
      (vl-cmdf ".mirror" ss "" "_none" pt "_none" p2 "n")
      (vl-cmdf ".mirror" s1 "" "_none" pt "_none" p2 "n")
      (xdrx_end)
    )
  )
  (princ)
)[/pcode]

点评

真的很好,只是这样的话只能使用选择图形了,而不能提供单独选点的镜像,如果把这两种选择合并在一个程序里面就好了  发表于 2013-5-5 21:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-4 23:02:35 | 显示全部楼层
rxing 发表于 2013-5-4 18:37
可否把程序改下:在选择镜像中心的时候能够选择图形,并求出图形的中心作为要镜像的中心;最后程序执行完 ...

程序执行完,再运行回下车就行了啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-4 23:04:01 | 显示全部楼层
eachy 发表于 2013-5-4 18:59
重拾下API,变换就不用矩阵了(defun c:tt (/ ss ss1 s1 p1 p2 s1 box pt)
  (while (and (progn
                (princ ...

这代码看着这整洁呢,学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-16 17:48:27 | 显示全部楼层
不错,好程式。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-12 08:42:07 | 显示全部楼层
  1. (defun c:test550 ()
  2.   (if (and (setq ss (ssget))
  3.            (setq pt (getpoint "\n中心点: "))
  4.       )
  5.     (progn
  6.       (setq s0 (entlast))
  7.       (xyp-Mirror ss pt (xyp-Pt2X pt 10) nil)
  8.       (setq ss (SSUNION (xyp-SSelEntnext s0) ss))
  9.       (xyp-Mirror ss pt (xyp-Pt2Y pt 10) nil)
  10.     )
  11.   )
  12.   (princ)
  13. )

点评

能解决一下我用不了的问题吗?  详情 回复 发表于 2013-10-4 11:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-28 16:13:11 | 显示全部楼层
不错,谢谢分享,是个好东东!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-26 14:39:29 | 显示全部楼层
这个我怎么就用不了呢!
提示:选择对象:
中心点: ; 错误: no function definition: XYP-PT2X
命令:
请高手解答一下!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-4 11:28:32 | 显示全部楼层

能解决一下我用不了的问题吗?

点评

需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF  发表于 2013-10-4 11:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 01:17 , Processed in 0.435388 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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