找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 984|回复: 12

[求助] 麻烦大神修改一下,实现连续的复制旋转,谢谢

[复制链接]
发表于 2016-12-20 22:35:55 | 显示全部楼层 |阅读模式

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

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

×
这个代码选择对象以后,只能复制旋转一次,同一对象在另外的基点复制旋转又要按空格键重启命令,麻烦大神修改一下,想选中一个对象后,实现连续的复制旋转
(princ "\n[carrot1983][7/3/09]★复制旋转命令: CR")
(defun C:CR (/ LAST_PT NEW_SSALL SS SSALL SSP)
  (princ "\n★选择对象复制旋转")
  (if (and (setq SSALL (ssget "X"))
           (setq SS (ssget))
      )
    (progn
      (command "_.COPY" SS "")
      (while (= (getvar "CMDNAMES") "COPY")
        (command PAUSE)
      )
      (if (and (setq LAST_PT (getvar "LASTPOINT"))
               (setq NEW_SSALL (ssget "X"))
          )
        (progn
          (command "_.SELECT" NEW_SSALL "R" SSALL "")
          (setq SSP (ssget "P"))
          (command "_.ROTATE" SSP "" "_NON" LAST_PT)
        )
      )
    )
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 496个

财富等级: 日进斗金

发表于 2016-12-21 07:56:02 | 显示全部楼层
CAD旋转自带复制功能,ro后,选择基点,再输入C,你在这个基础上优化一下即可!不用这么麻烦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-21 09:11:17 | 显示全部楼层

  1. (princ "\n[carrot1983][7/3/09]★复制旋转命令: CR")
  2. (defun C:CR (/ LAST_PT SS)
  3.   (while (and (princ "\n★选择对象复制旋转")
  4.               (setq SS (ssget))
  5.          )
  6.     (command "_.COPY" SS "" "_none" "0,0,0" "@")
  7.     (command "_.move" ss "")
  8.     (while (= (getvar "CMDNAMES") "MOVE")
  9.       (command PAUSE)
  10.     )
  11.     (if        (setq LAST_PT (getvar "LASTPOINT"))
  12.       (progn
  13.         (command "_.ROTATE" ss "" "_NON" LAST_pT)
  14.         (while (= (getvar "CMDNAMES") "ROTATE")
  15.           (command PAUSE)
  16.         )
  17.       )
  18.     )
  19.   )
  20.   (princ)
  21. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-21 10:17:08 | 显示全部楼层
谢谢高手,能不能再帮忙优化一下,想同一对象选择后在多个位置进行复制旋转,不用每复制施转一次后,又要重新选择对象与基点,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2016-12-21 11:42:48 | 显示全部楼层

你应该一次性把你的要求全部说清楚,别人也好帮你,不要像挤牙膏一样,一次一点点,浪费别人的时间。个人建议而已!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-21 11:55:01 | 显示全部楼层

  1. (vl-load-com)
  2. (defun C:CR (/ LAST_PT SS)
  3.   (while (and (princ "\n选择复制旋转实体....") (setq SS (ssget)))
  4.     (command "_.COPY" SS "" "_none" "0,0,0" "@")
  5.     (command "_.move" ss "")
  6.     (while (= (getvar "CMDNAMES") "MOVE") (command PAUSE))
  7.     (if        (setq LAST_PT (getvar "LASTPOINT"))
  8.       (progn (command "_.ROTATE" ss "" "_NON" LAST_pT)
  9.              (while (= (getvar "CMDNAMES") "ROTATE") (command PAUSE))
  10.       )
  11.     )
  12.     (princ "\n*ESC 退出复制**")
  13.     (vl-catch-all-apply
  14.       '(lambda ()
  15.          (while        t
  16.            (setq ent (entlast))
  17.            (command "_.copy" "m" ss "" "_none" LAST_PT)
  18.            (while (= (getvar "CMDNAMES") "COPY") (command PAUSE))
  19.          )
  20.        )
  21.     )
  22.   )
  23.   (princ)
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

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

使用道具 举报

 楼主| 发表于 2016-12-21 12:53:11 | 显示全部楼层
啥也不说了,感谢楼主分享哇!感谢高手,也感谢楼上提出的意见,本人对代码不了解,表达也有问题,其实我要实现的功能是:选择对象--选择对象基点---选择插入点--旋转--选择插入点--旋转--选择插入点--旋转……(同一对象,选择基点后,多次进行复制旋转)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2016-12-21 21:12:41 | 显示全部楼层


(defun C:CR ( / p1 pt SS)
  (while (and (princ "\n选择复制旋转实体....") (setq SS (ssget)))
  (setq pt (getpoint "\n点取基点:"))
    (while (setq p1 (getpoint pt "\n 点取放置点:"))
    (command "_.COPY" SS "" pt pt)
(command "_.move" ss "" pt p1)
    (command "_.ROTATE" ss "" p1)
    (while (= (getvar "CMDNAMES") "ROTATE") (command PAUSE))
    (setq pt p1)
    )
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 183个

财富等级: 日进斗金

发表于 2016-12-22 09:51:51 | 显示全部楼层
自由复制,与天正的类似
http://bbs.xdcad.net/thread-668990-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-22 15:31:42 | 显示全部楼层
1 getafter 对有子实体的会出错,论坛有该函数,自行搜索
2 使用了 acet 函数,必须安装 Express Tools

  1. (defun c:cr (/ getafter ss bp tf tp ss1 e)
  2.   (defun getafter (e / ss)
  3.     (setq ss (ssadd))
  4.     (while (setq e (entnext e))
  5.       (ssadd e ss)
  6.     )
  7.     (if        (> (sslength ss) 0)
  8.       ss
  9.       nil
  10.     )
  11.   )
  12.   (if (and (setq ss (ssget))
  13.            (setq bp (getpoint "\nBase Point: "))
  14.       )
  15.     (progn
  16.       (setq tf t)
  17.       (while tf
  18.         (if (setq tp (acet-ss-drag-move ss bp 0))
  19.           (progn
  20.             (setq e (entlast))
  21.             (vl-cmdf ".copy" ss "" "_none" bp tp)
  22.             (setq ss1 (getafter e))             
  23.             (if        (and ss1 (setq ro (acet-ss-drag-rotate ss1 tp "\n旋转角度: " 0)))
  24.               (vl-cmdf ".rotate" ss1 "" tp (* 180 (/ ro pi)))
  25.               (setq tf nil)
  26.             )
  27.           )
  28.           (setq tf nil)
  29.         )
  30.       )
  31.     )
  32.   )
  33.   (princ)
  34. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-2-22 14:10:56 | 显示全部楼层
@q3_2006:9#楼,弄1次就完了,怎么整呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 14:39 , Processed in 0.227505 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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