明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6161|回复: 13

[LISP程序]能一次选取COPY出来的对象[原创]

  [复制链接]
发表于 2002-2-27 12:36:00 | 显示全部楼层 |阅读模式
;;; FOR AutoCAD 2000 以上
;;; 因AUTOCAD只有"L" & ""可供选取使用
;;; 'K   (通透指令)能一次选取 COPY  出来的对象
;;; 'KK  (通透指令)能一次选取 MIRROR 出来的对象
;;; 'KKK (通透指令)能一次选取 ARRAY 出来的件
;;; 程序设计:赖云龙
;;;----------------------------------------------------------------------;;;

(defun MARK_COMMANDWILLSTART (CALLING-REACTOR COMMANDINFO / INFO)
  (setq INFO (car COMMANDINFO))
  (if (or (= "COPY" INFO)
          (= "MIRROR" INFO)
          (= "ARRAY" INFO)
          (= "-ARRAY" INFO)
      )
    (setq *MARK_SS* (entlast))
  )
)

(defun DO_IT (/ LLL SS)
  (setq SS (ssadd))
  (ssadd (entlast) SS)
  (setq LLL (entnext *MARK_SS*))
  (while (not (eq LLL (entlast)))
    (ssadd LLL SS)
    (setq LLL (entnext LLL))
  )
  SS
)

(defun MARK_COMMANDENDED (CALLING-REACTOR COMMANDINFO / INFO)
  (setq INFO (car COMMANDINFO))
  (cond
    ((= "COPY" INFO)
     (setq *COPY_SS* (DO_IT))
    )
    ((= "MIRROR" INFO)
     (setq *MIRROR_SS* (DO_IT))
    )
    ((or (= "ARRAY" INFO) (= "-ARRAY" INFO))
     (setq *ARRAY_SS* (DO_IT))
    )
  )
)

(defun C:K ()
  (setq *COPY_SS* *COPY_SS*)
)

(defun C:KK ()
  (setq *MIRROR_SS* *MIRROR_SS*)
)

(defun C:KKK ()
  (setq *ARRAY_SS* *ARRAY_SS*)
)

(defun C:COMMANDREACTOR        ()
  (vl-load-com)
  (if (not *COMMANDENDED_REACTOR*)
    (setq *COMMANDENDED_REACTOR*
           (vlr-editor-reactor
             NIL
             '((:vlr-commandended . MARK_COMMANDENDED))
           )
    )
  )
  (if (not *COMMANDWILLSTART_REACTOR*)
    (setq *COMMANDWILLSTART_REACTOR*
           (vlr-editor-reactor
             NIL
             '((:vlr-commandwillstart . MARK_COMMANDWILLSTART))
           )
    )
  )
  (if (not *DRAWINGREACTOR*)
    (setq *DRAWINGREACTOR*
           (vlr-dwg-reactor
             NIL
             '((:vlr-beginclose . CLEANREACTORS)
              )
           )
    )
  )
)

(defun CLEANREACTORS ()  ;;取消反应器
  (mapcar 'vlr-remove-all
          '(:vlr-dwg-reactor
            :vlr-editor-reactor
           )
  )
)

(C:COMMANDREACTOR)
(princ)

;|(defun C:REMOVEREACTOR ()  ;;取消反应器
  (mapcar 'vlr-remove
          '(*COMMANDENDED_REACTOR*
            *COMMANDWILLSTART_REACTOR*
            *DRAWINGTREACTOR*
           )
  )
)|;
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-8-8 20:37:00 | 显示全部楼层

这个贴不错

把他挖出来给大家看看

就是只有几个AutoCAD命令才可以使用 自己写的LSP不能用他来选物.

龙大哥 来完善下

发表于 2008-8-9 09:16:00 | 显示全部楼层
好贴,支持!!
 楼主| 发表于 2008-8-11 07:57:00 | 显示全部楼层

那是多年前j程序的原始構想程序(很多缺點)

发表于 2008-8-11 08:34:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-8-11 23:44:00 | 显示全部楼层

那就把你现在用的没什么缺点的那来大家共享一下啊.

发表于 2008-8-12 13:05:00 | 显示全部楼层
看不懂.
发表于 2008-8-13 09:35:00 | 显示全部楼层
不用反应器也可以做到
  1. ;返回copy mirror后的实体
  2. ;Desgined by byghbcx 2008.08.13
  3. (defun C:k( / ss0 len e ss e sn ss1 n k)
  4.   (setq ss0 (ssget "p"))
  5.   (if ss0
  6.   (progn
  7.     (setq len (sslength ss0))
  8.     (setq e (ssname ss0 (1- len)))
  9.     (SETQ SS (SSADD))
  10.     (WHILE E
  11.       (SETQ E (ENTNEXT E))
  12.       (IF E
  13. (PROGN
  14.    (SETQ SN (CDR (ASSOC 0 (ENTGET E))))
  15.    (IF (NOT (MEMBER SN (quote ("ATTRIB" "VERTEX" "SEQEND"))))
  16.      (SETQ SS (SSADD E SS))
  17.      )
  18.    )
  19. )
  20.     )
  21.   )
  22.   )
  23.   (if ss
  24.     (progn
  25.       (setq ss1 (ssadd) n (sslength ss) k 1)
  26.       (repeat len
  27. (setq ss1 (ssadd (ssname ss (- n k)) ss1) k (1+ k))
  28. )
  29.       )
  30.     )
  31.   ss1
  32.   )
发表于 2008-8-13 13:32:00 | 显示全部楼层
byghbcx发表于2008-8-13 9:35:00不用反应器也可以做到;返回copy mirror后的实体;Desgined by byghbcx 2008.08.13(defun C:k( / ss0 len e ss e sn ss1 n k)  (setq ss0 (ssget \"p\"))  (if ss0  (progn 

请问下,哪一句是判断对象是复制的? (setq ss0 (ssget "p"))吗?
发表于 2008-8-13 16:50:00 | 显示全部楼层

请问下,哪一句是判断对象是复制的? (setq ss0 (ssget "p"))吗?

此程序没有判断对象是否被复制,要加判断也可以

可以在复制过以后,运行K命令,也可以透明使用.

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

本版积分规则

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

GMT+8, 2025-7-22 03:49 , Processed in 0.180197 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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