明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4923|回复: 19

连续copy和旋转copy,如何编程?

  [复制链接]
发表于 2003-11-14 12:42:00 | 显示全部楼层 |阅读模式
由于工作上的需要,绘图工作经常要使用copy命令(废话),当我们copy时,先选取几个的元素,然后确定,选基准点,然后到目的点,确定,就完成了。而我们需要再copy这些元素的时候又得重新选元素和基准点,能否编个程,用“lc”命令来实现copy完一组之后接着点第二个目的点实现连续copy呢?旋转copy,就是将copy命令和旋转命令合在一起,操作过程如下:选元素,选基准点,输入角度,完成。没有这个命令我的租做法是先copy出来,然后再旋转到我需要的角度,有点麻烦。希望大家能交流交流。
发表于 2003-11-14 13:03:00 | 显示全部楼层
连续copy时,输入M就可。
实际上,专业工具上都有!
发表于 2003-11-14 13:22:00 | 显示全部楼层
依二樓的意思的話用夾持點也能實現.
可樓主的意思有點象在重復執行COPY指令. 但是在操作的過程中可以ROTATE或MIRROR的. 這樣的要用程序來解決. 我好象在什麼地方見過可以這樣做的. 但是我用LISP程序也做不出來. 也希望做出的大俠給我一個用用. 呵呵
发表于 2003-11-14 13:41:00 | 显示全部楼层
copy并旋转,只能是一次拷贝

  1. (defun c:rc( / ang ent ss)
  2.   (setq ang (getreal "输入角度:"))
  3.   (setq ent (entlast))
  4.   (setvar "cmdecho" 1)
  5.   (command "_.copy" pause pause pause pause)
  6.   (setq ss (ssadd))
  7.   (while (setq ent (entnext ent))
  8.     (ssadd ent ss)
  9.   )
  10.   (setvar "cmdecho" 0)
  11.   (command "_.rotate" ss "" (getvar "lastpoint") ang)
  12.   (princ)
  13. )
发表于 2003-11-14 13:56:00 | 显示全部楼层
to meflying
,                                 對這個程序我的要求是這樣的.
1. 可做到沒有確定復制定位時按一個鍵盤鍵(如 R 就向右轉 L就向左轉)嗎?
2. 另外執行程序選了圖素再確定起點后如能象插入塊時的效果就很好. (這樣做時程序把選到的圖素復制到剪切板, 再貼出來)
3, 可以在進行復制未確定時, 要還是可以再更改復制的基點. 真的就好了, 呵呵
4. 確定退出程序啦
发表于 2003-11-14 15:57:00 | 显示全部楼层
没有做出错检查,按取消键退出
  1. ;;复制旋转对象
  2. (defun c:cr ( / ent1 ent pnt )
  3.   (setq ent (ssget))
  4.   (setq pnt (getpoint "\n请选择基点:"))
  5.   (while t
  6.     (setq ent1 (entlast))
  7.     (setvar "cmdecho" 0)
  8.     (command "copy" ent "" pnt "@" )
  9.     (setq ss (ssadd ))
  10.     (while (setq ent1 (entnext ent1))
  11.       (ssadd ent1 ss)
  12.     )
  13.     (command "rotate" ss "" pnt)
  14.     (setvar "cmdecho" 1)
  15.     (princ "\n指定旋转角度:")
  16.     (command pause)
  17.   )
  18.   (princ)
  19. )
发表于 2003-11-14 16:51:00 | 显示全部楼层
樓上這個, 只能在原地打轉地復制, 呵呵.
发表于 2003-11-14 16:54:00 | 显示全部楼层
(defun c:coro (/ ss e0 ss2 e1)
  (setq ss (ssget))
  (setq e0 (entlast))
  (vl-cmdf "copy" ss "" pause pause)
  (setq ss2 (ssadd))
  (setq e1 (entnext e0))
  (while e1
    (ssadd e1 ss2)
    (setq e1 (entnext e1))
  )
  (vl-cmdf "rotate" ss2 "" pause pause)
)
发表于 2003-11-14 23:22:00 | 显示全部楼层

我也來一個,去年寫的

本帖最后由 作者 于 2003-11-16 15:29:51 编辑

(defun ai_error        (errmsg)
  (if errmsg
    '("console break"
      "Function Cancelled"
     )
    (princ (strcat "\nError: " errmsg))
  )
  (princ)
)
(defun c:cr ()
  (setq cm (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq        old_error *error*
        *error*        ai_error               
  )
  (setq ss (ssget))
  (if ss
    (progn
      (command "copy" ss "" "0,0" "0,0")
      (command "rotate" ss "")
    )
  )
  (setvar "cmdecho" cm)
  (setq *error* old_error)
  (princ)
)
发表于 2003-11-15 01:12:00 | 显示全部楼层
楼主要的是某些软件中的自由复制
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 10:39 , Processed in 0.170414 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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