找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 728|回复: 9

[寻找]:论坛曾发表过一个多重拷贝的帖子,哪位知道请告知一下,谢谢!

[复制链接]
发表于 2003-11-19 09:13:30 | 显示全部楼层 |阅读模式

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

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

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

  1. ;直接多重拷贝
  2. ;cc.lsp
  3. ??(defun c:cc (/ ss pt1)      
  4. ??(setq ss (ssget))
  5.       (if (/= ss nil)
  6.         (progn
  7.           (prompt "拾取基点:")
  8.       (setq pt1 (getpoint))
  9.       (if (/= pt1 nil)
  10.         (progn
  11. ??(command ".copy" ss "" "m" pt1)
  12. ?)
  13.         (exit)
  14.         )
  15.       )
  16.       (princ "\n#--选择的物体为空!!!--#")
  17.       )
  18.       (princ)
  19.         )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-19 12:44:03 | 显示全部楼层

  1. ;;连续 copy + 旋转
  2. ;;BY LUCAS(龙龙仔〕
  3. (defun C:CR1 (/ HOLDOSMODE SS SS1 PT1 PT2 ROT MARK)
  4.   (arxload "ACETUTIL.ARX" NIL)
  5.   (defun RTD (ANG) (* ANG (/ 180 pi)))
  6.   (setq HOLDOSMODE (getvar "osmode"))
  7.   (if (setq SS1 (ssget))
  8.     (progn
  9.       (initget 1)
  10.       (setq PT1 (getpoint "\n指定基准点: "))
  11.       ;;acet-ss-drag-move缺点:
  12.       ;;Normally returns the selected point(即不能输入距离), but will honor "initget"
  13.       ;;settings and can return arbitrary text or keywords.
  14.       ;;Returns nil if the dragging operation is aborted.
  15.       (while (setq PT2 (acet-ss-drag-move
  16.                          SS1
  17.                          PT1
  18.                          "\n指定位移的第二点: "
  19.                          t
  20.                        )
  21.              )
  22.         (setvar "osmode" 0)
  23.         (setq MARK (entlast))
  24.         (command "_.copy" SS1 "" PT1 PT2)
  25.         (setq SS (ssadd))
  26.         (while (setq MARK (entnext MARK))
  27.           (ssadd MARK SS)
  28.         )
  29.         (setvar "osmode" HOLDOSMODE)
  30.         (if (setq ROT (acet-ss-drag-rotate
  31.                         SS
  32.                         PT2
  33.                         "\n指定旋转角度: "
  34.                         t
  35.                       )
  36.             )
  37.           (setq ROT (RTD ROT))
  38.           (setq ROT 0.0)
  39.         )
  40.         (command "_.ROTATE" SS "" PT2 ROT)
  41.       )
  42.     )
  43.   )
  44.   (princ)
  45. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-19 14:31:51 | 显示全部楼层
copy命令本身就有多次copy功能,
copy->选择对象->M->选择基点->就可以多次拷贝了.
用不着编程
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-19 14:40:41 | 显示全部楼层
libo2000兄比我勤快,我就是那个不想输入M的人:)~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2003-11-19 17:33:20 | 显示全部楼层
最初由 snsj 发布
[B]libo2000兄比我勤快,我就是那个不想输入M的人:)~~~~ [/B]


太懒了也不好^_^ ---虽然我也很懒.
c:cc用了几天就kill kill kill,老和c糊涂,麻烦!
c+m习惯就好了:--)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-11-19 22:39:52 | 显示全部楼层
(defun  c:c() (command ".copy" (ssget) "" "m" ))
就一句话.



前面我写过LUCAS 的方法,不过我的没旋转,但可以每步undo掉.(和命令line时一样,就不会copy错一个而前功尽弃)找一下吧,要装express tools的


LUCAS说的不能输入距离,应该可以的.
其实它好像是grread一样的。

  1.       (setq pt2 t)
  2.    (while pt2
  3.            (setvar "lastpoint" pt1)   ;这样输数字就可以了.
  4.            (setq PT2 (acet-ss-drag-move SS1 PT1 "\n指定位移的第二点: " t )  )
  5.            (if(= 1(getvar "orthomode"))   ;orthomode =1时距离要改正.
  6.               (progn
  7.                (setq pt3(cadr(grread 5)))
  8.                (if(not(equal pt2 pt3 1e-3))
  9.                (setq pt2
  10.                   (polar pt1(angle pt1 pt2)
  11.                   (abs(/(distance pt1 pt2)(if(equal(sin(angle pt1 pt2))0 1e-3)(cos(angle pt1 pt3))(sin(angle pt1 pt3)))))))
  12.                  )
  13.             ))
  14.           (setvar "osmode" 0)
  15.         (setq MARK (entlast))
  16.         (command "_.copy" SS1 "" PT1 PT2)
  17.         (setq SS (ssadd))
  18.         (while (setq MARK (entnext MARK))
  19.              ......
  20.    

orthomode =1时只能这么考虑,因为它自动修正过了。
设了极轴就没办法的,要转换很麻烦.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-20 02:28:23 | 显示全部楼层
虽然一般情况下不推荐用pause
但有的时候也可四两拨千斤,程序可以小很多.要冒一点风险,但是未必不值得:)

  1. (defun c:cc ( / ss pt1 tt pt2)
  2. (princ "\n连续相对点拷贝------陌生人.2001.2")
  3. (setq ss (ssget) pt1 (getpoint "\n基点:") tt "true")
  4. (command "copy" ss "" pt1 pt1)  ;原点拷贝
  5. (while tt
  6.   (princ "\n下一基点:")
  7.   (command "move" ss "" pt1 pause) ;;用了pause,但可输入距离值或者取点
  8.   (setq pt2 (getvar "lastpoint"))
  9.   (if (equal pt1 pt2)
  10.    (progn(entdel ss)(setq tt nil));当回车/原点时pt2=pt1
  11.    (progn(setq pt1 pt2)(command "copy" ss "" pt2 pt2))
  12.   )
  13. )(princ)
  14. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-21 07:59:31 | 显示全部楼层

  1. ;;受教了,那就再增加Undo功能吧!
  2. ;;连续 copy + 旋转 + Undo功能
  3. ;;BY LUCAS(龙龙仔〕+ AEO
  4. (defun C:CR1 (/ HOLDOSMODE SS SS1 PT1 PT2 PT4 ROT MARK N)
  5.   (arxload "ACETUTIL.ARX" NIL)
  6.   (defun RTD (ANG) (* ANG (/ 180 pi)))
  7.   (setq HOLDOSMODE (getvar "osmode"))
  8.   (command "_.undo" "_group")
  9.   (if (setq SS1 (ssget))
  10.     (progn
  11.       (initget 1)
  12.       (setq PT1 (getpoint "\n指定基准点: "))
  13.       (setq PT2        t
  14.             N 0
  15.       )
  16.       (while
  17.         (and (setvar "lastpoint" PT1)
  18.              (progn (initget "Undo")
  19.                     (setq
  20.                       PT2 (acet-ss-drag-move
  21.                             SS1
  22.                             PT1
  23.                             "\n指定位移的第二点(U-undo): "
  24.                             t
  25.                           )
  26.                     )
  27.              )
  28.         )
  29.          (cond ((= PT2 "Undo")
  30.                 (if (> N 0)
  31.                   (progn (command "_.undo" "2") (setq N (1- N)))
  32.                   (princ "\n没有可Undo的了!")
  33.                 )
  34.                )
  35.                (PT2
  36.                 (if (= 1 (getvar "orthomode"))
  37.                   (progn
  38.                     (setq PT3 (cadr (grread 5)))
  39.                     (if        (not (equal PT2 PT3 1e-3))
  40.                       (setq PT2
  41.                              (polar
  42.                                PT1
  43.                                (angle PT1 PT2)
  44.                                (abs (/ (distance PT1 PT2)
  45.                                        (if (equal (sin (angle PT1 PT2)) 0 1e-3)
  46.                                          (cos (angle PT1 PT3))
  47.                                          (sin (angle PT1 PT3))
  48.                                        )
  49.                                     )
  50.                                )
  51.                              )
  52.                       )
  53.                     )
  54.                   )
  55.                 )
  56.                 (setvar "osmode" 0)
  57.                 (setq MARK (entlast))
  58.                 (command "_.copy" SS1 "" PT1 PT2)
  59.                 (setq SS (ssadd))
  60.                 (while (setq MARK (entnext MARK))
  61.                   (ssadd MARK SS)
  62.                 )
  63.                 (setvar "osmode" HOLDOSMODE)
  64.                 (if (setq ROT (acet-ss-drag-rotate
  65.                                 SS
  66.                                 PT2
  67.                                 "\n指定旋转角度: "
  68.                                 t
  69.                               )
  70.                     )
  71.                   (setq ROT (RTD ROT))
  72.                   (setq ROT 0.0)
  73.                 )
  74.                 (setvar "osmode" 0)
  75.                 (command "_.ROTATE" SS "" PT2 ROT)
  76.                 (setvar "osmode" HOLDOSMODE)
  77.                 (setq N (1+ N))
  78.                )
  79.          )
  80.       )
  81.       (command "_.undo" "_end")
  82.     )
  83.   )
  84.   (princ)
  85. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 20:48 , Processed in 0.393106 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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