修剪
文件是trim&extend.lsp,这是一个修剪用的lsp文件,我想这个程序能改一下就好了。在启动命令后不需要选择1个或多个修剪边,默认就是选择全部,这样命令用起来更快,哪个高手能不能改1下,改完后可以发到我qq邮箱里,qq:1024161729 在这里先多谢了 没见程序有过人之处,现在的版本都有这个功能,只是要一个回车,如果想要,就这样:(defun c:ki()(command ".trim" "")
(defun c:ku()(command ".extend" "")
我试一下,多谢你的关注,
我用的是2005版,所以修剪命令没那么强大,所以你给的程序在2005版本中功能不是很大
我现在要的是在我的那个程序里修改1下实现自动选择全部的功能
我的意思是这样的 期待解决,求助高手 试下我在用的吧
(defun c:TYY (/ PT0 pt PTLIST PTLIST0 ss out CMDECHO OSMODE)
(setq cmdecho (getvar "cmdecho")
osmode (getvar "osmode")
)
(princ "\n 提示:超强修剪启动中....")
(while (and (setq ptlist0 (getpoint_list))
(> (length ptlist0) 1)
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq pt0(car ptlist0)
ptlist (cdr ptlist0)
)
(command "trim" "")
(foreach pt ptlist
(command "f" pt0 pt "")
(setq pt0 pt)
)
(command "")
(if (setq ss (ssget "f" ptlist0))
(command "erase" ss "")
)
(setvar "osmode" osmode)
(setvar "cmdecho" cmdecho)
)
(princ)
)
(defun getpoint_list ( / DIS OUT PT)
(setq pt (getpoint "\n --->>>请指定画线开始点或 <退出>:"))
(princ "\n按任意键结束:")
(if (= (type pt) 'LIST)
(progn
(setq out (list pt)
dis (* 0.01 (getvar "viewsize")))
(while (= 5 (car (setq pt (grread t 4 0))))
(setq pt (cadr pt))
(if (> (distance pt (car out)) dis)
(progn
(grdraw pt (car out) 1)
(setq out (cons pt out))
)
)
)
)
)
(redraw)
(reverse out))
;;;(princ "\n 结束超级修剪......欢迎使用")
;;可框的修剪
(defun c:TY ()
(setq osvalue (getvar "osmode"))
(SETVAR "CMDECHO" 0)
(setvar "osmode" 0)
(princ "\n 提示:超强框剪启动中....")
(setq plist nil ssnil pt0 nil len nil)
(setq pt311 (getpoint "\n请框选被修剪对象:")
pt331 (getcorner pt311)
ss (ssget "c" pt311 pt331)
)
;;;;;;;;;;;;
;(setq s1 (ssget "C" pt311 pt331))
;;;;;;;;;;;;
(setq len (sslength ss))
;(setq len (sslength s1))
(SETq LEN2 (SSLENGTH SS))
(setq pt321 (list (car pt311) (cadr pt331))
pt341 (list (car pt331) (cadr pt311))
)
(command "trim" ss "")
;(command "trim" s1 "")
(REPEAT LEN2
(COMMAND "NON" "f" pt311 pt321 pt331 pt341 pt311 "")
)
(COMMAND "")
(command "undo" "e")
(setvar 'cmdecho 1)
(setvar "osmode" osvalue )
(setvar "ORTHOMODE" 1)
(PRINC)
)
;;可框的修剪
(defun c:TTY ()
(setq osvalue (getvar "osmode"))
(SETVAR "CMDECHO" 0)
(setvar "osmode" 0)
(princ "\n 提示:超强框剪启动中....")
(setq plist nil ssnil pt0 nil len nil)
(setq pt311 (getpoint "\n请框选被修剪对象:")
pt331 (getcorner pt311)
ss (ssget "c" pt311 pt331)
)
;;;;;;;;;;;;
;(setq s1 (ssget "C" pt311 pt331))
;;;;;;;;;;;;
(setq len (sslength ss))
;(setq len (sslength s1))
(SETq LEN2 (SSLENGTH SS))
(setq pt321 (list (car pt311) (cadr pt331))
pt341 (list (car pt331) (cadr pt311))
)
(command "trim" ss "")
;(command "trim" s1 "")
(REPEAT LEN2
(COMMAND "NON" "f" pt331 pt321 "");;;上下边
(COMMAND "NON" "f" pt331 pt341 "");;;左右边
;(COMMAND "NON" "f" pt331 pt321 "")底边
;;(COMMAND "NON" "f" pt311 pt321 "")右边
)
(COMMAND "")
(command "undo" "e")
(setvar 'cmdecho 1)
(setvar "osmode" osvalue )
(setvar "ORTHOMODE" 1)
(PRINC)
)
;;可框的修剪
(defun c:trr ()
(setq osvalue (getvar "osmode"))
(SETVAR "CMDECHO" 0)
(setvar "osmode" 0)
(princ "\n 提示:超强框剪启动中....")
(setq pt311 (getpoint "\n请框选被修剪对象:")
pt331 (getcorner pt311)
)
(command "trim" """f" pt331 pt311 "" "");;;上下边
(setvar 'cmdecho 1)
(setvar "osmode" osvalue )
(setvar "ORTHOMODE" 1)
(PRINC)
)
我试一下,谢谢你的热心,多谢,多谢
我试了,那些命令是分开来的,若能像2010版中的修剪那样,能点能框,能默认选择全部,就更好了。问题仍然未得到解决 为啥不换2010
页:
[1]