批量剪切问题
有n组线条,每组有2条线相交线组成,该两条线不同颜色,能否实现批量将一种颜色线以下(或者以上)的另外一种线剪切掉,求高手支招? 好像论坛关于剪切的帖子较少 zwf100 发表于 2015-10-16 00:34 static/image/common/back.gif好像论坛关于剪切的帖子较少
根据高手的程序改了下,还有不足之处,望高手简化,比如要先点两个点的功能不知如何去掉 本帖最后由 zwf100 于 2015-12-3 22:56 编辑
zwf100 发表于 2015-10-28 00:46 static/image/common/back.gif
根据高手的程序改了下,还有不足之处,望高手简化,比如要先点两个点的功能不知如何去掉<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> 根据论坛里高手的程序修改了下,基本能达到要求,就是不支持颜色随层对象和最后会提示错误
页:
[1]