找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5061|回复: 47

[LISP函数]:珍藏多年的LISP放出,欢迎大家

[复制链接]
发表于 2008-9-24 12:01:18 | 显示全部楼层 |阅读模式

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

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

×
珍藏多年的LISP放出,一个一个来,都是我自己常用的,欢迎大家
01  多种COPY,

  1. ;;;********************************************************图形矫正程序-jz
  2. (defun c:cc (/ p1 p2 s e cn)
  3. ;__________________
  4.   (defun ttt (ss n / m)
  5.     (setq ee e
  6.           ns (ssadd)
  7.     )
  8.     (while (setq ee (entnext ee))
  9.       (setq ns (ssadd ee ns))
  10.     )
  11.     (command "erase" ns "")
  12.     (command "copy" ss "" "m" "non" p1)
  13.     (setq m 0)
  14.     (repeat (atoi n)
  15.       (setq m (1+ m))
  16.       (cond
  17.         ((= "/" (substr n (strlen n)))
  18.          (command
  19.            "non"
  20.            (mapcar '(lambda (x y) (+ x (* m (/ (- y x) (atof n)))))
  21.                    p1
  22.                    p2
  23.            )
  24.          )
  25.         )
  26.         (t
  27.          (command "non"
  28.                   (mapcar '(lambda (x y) (+ x (* m (- y x)))) p1 p2)
  29.          )
  30.         )
  31.       )
  32.     )
  33.     (command)
  34.   )
  35. ;__________________
  36.     (princ "\n选择要复制的物体:")
  37.   (setq s (ssget))
  38.   (setq p1 (getpoint "\n复制的起点:"))
  39.   (setq p2 (getpoint p1 "\n复制的终点:"))
  40.   (setq e (entlast))
  41.   (command "copy" s "" "non" p1 "non" p2)
  42.   (while (/= 0
  43.              (atof (setq cn (getstring "\n份数(以 / 结束为等分):")))
  44.          )
  45.     (ttt s cn)
  46.   )
  47.   (princ)
  48. )



  49. (defun c:c1 (/ p1 p2 s e cn a1 d1 ns cnn)
  50. ;__________________
  51.   (defun ttt (ss n / m)
  52.     (setq ee e
  53.           ns (ssadd)
  54.     )
  55.     (while (setq ee (entnext ee))
  56.       (setq ns (ssadd ee ns))
  57.     )
  58.     (command "erase" ns "")
  59.     (command "copy" ss "" "m" "non" p1)
  60.     (if        (member (substr n (strlen n)) '("/" "*"))
  61.       (progn
  62.         (setq m 0)
  63.         (repeat        (atoi n)
  64.           (setq m (1+ m))
  65.           (cond
  66.             ((= "/" (substr n (strlen n)))
  67.              (command
  68.                "non"
  69.                (mapcar '(lambda (x y) (+ x (* m (/ (- y x) (atof n)))))
  70.                        p1
  71.                        p2
  72.                )
  73.              )
  74.             )
  75.             ((= "*" (substr n (strlen n)))
  76.              (command "non"
  77.                       (mapcar '(lambda (x y) (+ x (* m (- y x)))) p1 p2)
  78.              )
  79.             )
  80.           )
  81.         )
  82.       )
  83.       (command "non" (setq p2 (polar p1 a1 (atof n))))
  84.     )
  85.     (command)
  86.   )
  87. ;__________________
  88.   (princ "\n选择要复制的物体:")
  89.   (setq s (ssget))
  90.   (setq p1 (getpoint "\n复制的起点:"))
  91.   (command "undo" "be" "line" p1 p1 "")
  92.   (setq e (entlast))
  93.   (command "copy" s "" "non" p1 pause)
  94.   (setq        p2 (getvar "lastpoint")
  95.         a1 (angle p1 p2)
  96.         d1 (distance p1 p2)
  97.   )
  98.   (setq cn "1*")
  99.   (while cn
  100.     (ttt s cn)
  101.     (initget 128)
  102.     (princ
  103.       "\n输入坐标=复制终点                         输入数值=修改间距 "
  104.     )
  105.     (princ
  106.       "\n输入数值n并以 / 结束=间距内等分n次复制    输入数值n并以 * 结束=按间距复制n次 "
  107.     )
  108.     (setq cnn (getpoint "\n请按提示输入<退出>:"))
  109.     (if        (= 'LIST (type cnn))
  110.       (setq p2 cnn
  111.             a1 (angle p1 p2)
  112.             d1 (distance p1 p2)
  113.       )
  114.       (setq cn cnn)
  115.     )
  116.   )
  117.   (entdel e)
  118.   (command "undo" "e")
  119.   (princ)
  120. )


  121. (defun c:c2 (/ p1 p2 s e cn)
  122. ;__________________
  123.   (defun ttt (ss n / m)
  124.     (setq ee e
  125.           ns (ssadd)
  126.     )
  127.     (while (setq ee (entnext ee))
  128.       (setq ns (ssadd ee ns))
  129.     )
  130.     (command "erase" ns "")
  131.     (command "copy" ss "" "m" "non" p1)
  132.     (setq m 0)
  133.     (repeat (atoi n)
  134.       (setq m (1+ m))
  135.       (cond
  136.         ((= "/" (substr n (strlen n)))
  137.          (command
  138.            "non"
  139.            (mapcar '(lambda (x y) (+ x (* m (/ (- y x) (atof n)))))
  140.                    p1
  141.                    p2
  142.            )
  143.          )
  144.         )
  145.         (t
  146.          (command "non"
  147.                   (mapcar '(lambda (x y) (+ x (* m (- y x)))) p1 p2)
  148.          )
  149.         )
  150.       )
  151.     )
  152.     (command)
  153.   )
  154. ;__________________
  155.   (princ "\n选择要复制的物体:")
  156.   (setq s (ssget))
  157.   (setq p1 (getpoint "\n复制的起点:"))
  158.   (setvar "lastpoint" p1)
  159.                                         ;(setq p2 (getpoint p1 "\n复制的终点:"))
  160.   (setq e (entlast))
  161.   (command "copy" s "" "non" p1 pause)
  162.   (if (not (equal p1 (setq p2 (getvar "lastpoint"))))
  163.     (while (/= 0
  164.                (atof (setq cn (getstring "\n份数(以 / 结束为等分):")))
  165.            )
  166.       (ttt s cn)
  167.     )
  168.   )
  169.   (princ)
  170. )


  171. ;;;|增强拷贝
  172. (defun c:c3 (/ getpt getpt1 ss ptx pty db n x y gtin)
  173.   (setq        getpt1 (acet-ss-drag-move
  174.                  (setq ss (ssget))
  175.                  (setq getpt (getpoint "\n&点取基点:"))
  176.                  1
  177.                )
  178.   )
  179.   (setq        ptx (- (car getpt1) (car getpt))
  180.         pty (- (cadr getpt1) (cadr getpt))
  181.         y   0
  182.   )
  183.   (vl-cmdf ".copy" ss "" getpt getpt1)
  184.   (while (setq gtin (- (getint "\n重复次数:") 1))
  185.     (vl-cmdf ".undo" "e")
  186.     (if        (/= y 0)
  187.       (vl-cmdf ".u")
  188.     )
  189.     (setq n  1
  190.           x  0
  191.           db nil
  192.     )
  193.     (if        (/= y 0)
  194.       (vl-cmdf ".u")
  195.     )
  196.     (vl-cmdf ".undo" "be")
  197.     (repeat gtin
  198.       (setq db (cons (list (+ (* n ptx) (car getpt1))
  199.                            (+ (* n pty) (cadr getpt1))
  200.                            0.0
  201.                      )
  202.                      db
  203.                )
  204.       )
  205.       (setq n (1+ n))
  206.     )
  207.     (repeat (length db)
  208.       (vl-cmdf ".copy" ss "" getpt (nth x (reverse db)))
  209.       (setq x (1+ x))
  210.     )
  211.     (vl-cmdf ".undo" "e")
  212.     (vl-cmdf ".undo" "be")
  213.     (setq y (1+ y))
  214.   )
  215.   (princ)
  216. )

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

已领礼包: 2个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 8976个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

发表于 2008-10-4 16:01:49 | 显示全部楼层
谢谢楼主,但C3复制有误,
“命令: c3
选择对象: 找到 1 个

选择对象:
&点取基点:; 错误: no function definition: ACET-SS-DRAG-MOVE

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

使用道具 举报

发表于 2008-10-5 15:09:09 | 显示全部楼层
我试用了一下,4个命令都可以完成。cc和c2复制方式好像差不多,定义了复制的起终点几等分复制;c1是需要根据你输入复制间距进行复制;c3根据你输入的复制次数进行一次性多次复制。妥否?还需要楼主订正下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 12:48 , Processed in 0.196824 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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