Joe,
That is really great! I like the fact that it doesn't even use running osnaps... Very cool!
Thanks!
Graham
Joe Becker said:
The attached function uses ssget as Ken has suggested. By using ssget before actually doing the copy you can select with window, crossing or individually at any point in time. The attached command does not turn on running osnaps, instead it enters "endpoint" at the command prompt for you.
Give it a try.
----
;------------------------------------------------------------------------ ; These functions allow the user to use the three letter copy shortcuts ; with the capability of making multiple copies. ;------------------------------------------------------------------------
(defun C:ce (setq COPYSNAP1 "endpoint" COPYSNAP2 "")
(copysub))
(defun C:cee (setq COPYSNAP1 "endpoint" COPYSNAP2 "endpoint") (copysub)) (defun C:cep (setq COPYSNAP1 "endpoint" COPYSNAP2 "perpendicular") (copysub)) (defun C:cex (setq COPYSNAP1 "endpoint" COPYSNAP2 "intersection") (copysub)) (defun C:cen (setq COPYSNAP1 "endpoint" COPYSNAP2 "nearest") (copysub)) (defun C:cec (setq COPYSNAP1 "endpoint" COPYSNAP2 "center") (copysub)) (defun C:ceq (setq COPYSNAP1 "endpoint" COPYSNAP2 "quadrant") (copysub)) (defun C:cem (setq COPYSNAP1 "endpoint" COPYSNAP2 "midpoint") (copysub)) (defun C:cei (setq COPYSNAP1 "endpoint" COPYSNAP2 "inser") (copysub)) (defun C:cea (setq COPYSNAP1 "endpoint" COPYSNAP2 "_appint")
(copysub))
(defun C:cx (setq COPYSNAP1 "intersection" COPYSNAP2 "") (copysub)) (defun C:cxe (setq COPYSNAP1 "intersection" COPYSNAP2 "endpoint") (copysub)) (defun C:cxp (setq COPYSNAP1 "intersection" COPYSNAP2 "perpendicular") (copysub)) (defun C:cxx (setq COPYSNAP1 "intersection" COPYSNAP2 "intersection") (copysub)) (defun C:cxn (setq COPYSNAP1 "intersection" COPYSNAP2 "nearest") (copysub)) (defun C:cxc (setq COPYSNAP1 "intersection" COPYSNAP2 "center") (copysub)) (defun C:cxq (setq COPYSNAP1 "intersection" COPYSNAP2 "quadrant") (copysub)) (defun C:cxm (setq COPYSNAP1 "intersection" COPYSNAP2 "midpoint") (copysub)) (defun C:cxi (setq COPYSNAP1 "intersection" COPYSNAP2 "inser") (copysub)) (defun C:cxa (setq COPYSNAP1 "intersection" COPYSNAP2 "_appint")
(copysub))
(defun C:cn (setq COPYSNAP1 "nearest" COPYSNAP2 "") (copysub)) (defun C:cne (setq COPYSNAP1 "nearest" COPYSNAP2 "endpoint") (copysub)) (defun C:cnp (setq COPYSNAP1 "nearest" COPYSNAP2 "perpendicular") (copysub)) (defun C:cnx (setq COPYSNAP1 "nearest" COPYSNAP2 "intersection") (copysub)) (defun C:cnn (setq COPYSNAP1 "nearest" COPYSNAP2 "nearest") (copysub)) (defun C:cnc (setq COPYSNAP1 "nearest" COPYSNAP2 "center") (copysub)) (defun C:cnq (setq COPYSNAP1 "nearest" COPYSNAP2 "quadrant") (copysub)) (defun C:cnm (setq COPYSNAP1 "nearest" COPYSNAP2 "midpoint") (copysub)) (defun C:cni (setq COPYSNAP1 "nearest" COPYSNAP2 "inser") (copysub)) (defun C:cna (setq COPYSNAP1 "nearest" COPYSNAP2 "_appint")
(copysub))
(defun C:cc (setq COPYSNAP1 "center" COPYSNAP2 "") (copysub)) (defun C:cce (setq COPYSNAP1 "center" COPYSNAP2 "endpoint") (copysub)) (defun C:ccp (setq COPYSNAP1 "center" COPYSNAP2 "perpendicular") (copysub)) (defun C:ccx (setq COPYSNAP1 "center" COPYSNAP2 "intersection") (copysub)) (defun C:ccn (setq COPYSNAP1 "center" COPYSNAP2 "nearest") (copysub)) (defun C:ccc (setq COPYSNAP1 "center" COPYSNAP2 "center") (copysub)) (defun C:ccq (setq COPYSNAP1 "center" COPYSNAP2 "quadrant") (copysub)) (defun C:ccm (setq COPYSNAP1 "center" COPYSNAP2 "midpoint") (copysub)) (defun C:cci (setq COPYSNAP1 "center" COPYSNAP2 "inser") (copysub)) (defun C:cca (setq COPYSNAP1 "center" COPYSNAP2 "_appint")
(copysub))
(defun C:cq (setq COPYSNAP1 "quadrant" COPYSNAP2 "")
(copysub))
(defun C:cqe (setq COPYSNAP1 "quadrant" COPYSNAP2 "endpoint") (copysub)) (defun C:cqp (setq COPYSNAP1 "quadrant" COPYSNAP2 "perpendicular") (copysub)) (defun C:cqx (setq COPYSNAP1 "quadrant" COPYSNAP2 "intersection") (copysub)) (defun C:cqn (setq COPYSNAP1 "quadrant" COPYSNAP2 "nearest") (copysub)) (defun C:cqc (setq COPYSNAP1 "quadrant" COPYSNAP2 "center") (copysub)) (defun C:cqq (setq COPYSNAP1 "quadrant" COPYSNAP2 "quadrant") (copysub)) (defun C:cqm (setq COPYSNAP1 "quadrant" COPYSNAP2 "midpoint") (copysub)) (defun C:cqi (setq COPYSNAP1 "quadrant" COPYSNAP2 "inser") (copysub)) (defun C:cqa (setq COPYSNAP1 "quadrant" COPYSNAP2 "_appint")
(copysub))
(defun C:cm (setq COPYSNAP1 "midpoint" COPYSNAP2 "")
(copysub))
(defun C:cme (setq COPYSNAP1 "midpoint" COPYSNAP2 "endpoint") (copysub)) (defun C:cmp (setq COPYSNAP1 "midpoint" COPYSNAP2 "perpendicular") (copysub)) (defun C:cmx (setq COPYSNAP1 "midpoint" COPYSNAP2 "intersection") (copysub)) (defun C:cmn (setq COPYSNAP1 "midpoint" COPYSNAP2 "nearest") (copysub)) (defun C:cmc (setq COPYSNAP1 "midpoint" COPYSNAP2 "center") (copysub)) (defun C:cmq (setq COPYSNAP1 "midpoint" COPYSNAP2 "quadrant") (copysub)) (defun C:cmm (setq COPYSNAP1 "midpoint" COPYSNAP2 "midpoint") (copysub)) (defun C:cmi (setq COPYSNAP1 "midpoint" COPYSNAP2 "inser") (copysub)) (defun C:cma (setq COPYSNAP1 "midpoint" COPYSNAP2 "_appint")
(copysub))
(defun C:ci (setq COPYSNAP1 "inser" COPYSNAP2 "") (copysub)) (defun C:cie (setq COPYSNAP1 "inser" COPYSNAP2 "endpoint") (copysub)) (defun C:cip (setq COPYSNAP1 "inser" COPYSNAP2 "perpendicular") (copysub)) (defun C:cix (setq COPYSNAP1 "inser" COPYSNAP2 "intersection") (copysub)) (defun C:cin (setq COPYSNAP1 "inser" COPYSNAP2 "nearest") (copysub)) (defun C:cic (setq COPYSNAP1 "inser" COPYSNAP2 "center") (copysub)) (defun C:ciq (setq COPYSNAP1 "inser" COPYSNAP2 "quadrant") (copysub)) (defun C:cim (setq COPYSNAP1 "inser" COPYSNAP2 "midpoint") (copysub)) (defun C:cii (setq COPYSNAP1 "inser" COPYSNAP2 "inser") (copysub)) (defun C:cia (setq COPYSNAP1 "inser" COPYSNAP2 "_appint")
(copysub))
(defun copysub
;informing what type of copy is being performed
(if (/= COPYSNAP1 "inser")(setq from_point (strcase COPYSNAP1)) (setq from_point "INSERTION")) (if (= COPYSNAP2 "") (setq to_point "")) (if (= COPYSNAP2 "inser") (setq to_point "INSERTION") (setq to_point (strcase COPYSNAP2))) (princ (strcat "COPY: From " from_point " to " to_point ))
;getting objects and number of copies
(ssget)
;performing the copy
(command "copy" "p" "" "m" COPYSNAP1 pause)
(while (= (logand (getvar "cmdactive") 1) 1)
(if (/= COPYSNAP2 "")
(command COPYSNAP2 pause)
(command pause)
)
)
) ;end of defun
; Written by Joe Becker August 1997
; Modified by Joe Becker May 2002