本帖最后由 zwf100 于 2015-12-3 22:56 编辑
zwf100 发表于 2015-10-28 00:46 
根据高手的程序改了下,还有不足之处,望高手简化,比如要先点两个点的功能不知如何去掉  - <p>(defun c:ltr (/ CMDECHO F3 OS F8 OTH P1 LOOP GR P2 DP SE2 SE1 N K EN ENL)
- (defun *error* (s)
- (princ s)
- (setvar 'cmdecho cmdecho)
- (setvar 'osmode os)
- (setvar 'ORTHOMODE oth)
- )
- (setq cmdecho (getvar 'cmdecho))
- (setq f3 (getvar 'osmode) os f3)
- (setq f8 (getvar 'ORTHOMODE) oth f8)
- (setvar 'cmdecho 0)
-
- ;;;;;;++++++++++++++++++++++++++++++++++
- (princ "\n请选择剪切线的颜色(不能随层):")
- (setq ss (nth 0 (entsel)))
- (command "undo" "be")
- (setvar "cmdecho" 0)
- (setq cor (assoc 62 (entget ss))) ;颜色如果随层,按图层颜色
- (if (= cor nil)
- (progn (setq tc (cdr (assoc 8 (entget ss))))
- (setq tc (tblsearch "layer" tc))
- (setq cor (assoc 62 tc))
- )
- )
- (princ "\n请框选含有以上颜色的剪切线:")
- (setq ss1 (ssget))
-
- ;;;;;;;;;;;;;;;;+++++++++++
- (setq se1 (ssget "P" (list cor)))
- </p><p> (princ "\n请选择剪切线的颜色(不能随层):")
- (setq ss (nth 0 (entsel)))
- (command "undo" "be")
- (setvar "cmdecho" 0)
- (setq cor (assoc 62 (entget ss))) ;颜色如果随层,按图层颜色
- (if (= cor nil)
- (progn (setq tc (cdr (assoc 8 (entget ss))))
- (setq tc (tblsearch "layer" tc))
- (setq cor (assoc 62 tc))
- )
- )
- (princ "\n请框选含有以上颜色的被剪切线:")
- (setq ss2 (ssget))
-
- (setq se2 (ssget "P" (list cor)))
- </p><p>;;; (grdraw p1 p2 1 -1)
- ;(initget 7 " ")
- (setq p1 (getpoint "\n剪切哪一边?:"))
- ;(if (= "" p1) (abcdefg))
- (setq n (sslength se2) k 0)
- (repeat n
- (progn
- (setq en (ssname se2 k)
- enl (list en p1)
- )
- (command "trim" se1 "" enl "")
- (setq k (1+ k))
- )
- )
- (entdel se1)
- (redraw)
- (setvar 'cmdecho cmdecho)
- (setvar 'osmode os)
- (setvar 'ORTHOMODE oth)
- (princ)
- )
-
- </p>
|