我想要加强修命令
bingyu0605
bingyu0605 Lv.12
2007年04月19日 09:53:30
只看楼主

我想要加强修剪命令我的是CAD2002,有没有加强修剪命令LISP使得修剪象CAD05那样好用?

我想要加强修剪命令
我的是CAD2002,有没有加强修剪命令LISP
使得修剪象CAD05那样好用?
免费打赏
水的畅想
2007年04月19日 09:57:23
2楼
没有用过2005的~~~
不过我这边有一个剪切的程序~
很好用
回复
bingyu0605
2007年04月19日 11:21:51
3楼

给我传到这里来
回复
水的畅想
2007年04月19日 15:33:36
4楼
;|
思路from lijiao http://www.xdcad.net/forum/showthread.php?postid=1686237#post1686237
可替代trim.
参数详解:
默认选择方式: 点中曲线,单点剪切;点于空位,启动自由画笔(sketch)方式.
U-undo: 取消上次剪切操作,一键执行无须回车!
R- redo: 恢复一次undo操作.
E-edgemode开关: 控制剪切边是否延伸,含义同trim参数. 为开关型,有状态提示!
P-投影模式 [0 无 / 1 UCS / 2 视图]
C-框选: 框选实体边方式.
(按住Shift键延伸):同时按shift为延伸命令,而非剪切.
|;
(defun c:t (/ cmd os roop dis un ss gr ga gb sel pt pt2 pts eg)
;; (getpts) = 取得grread跟踪点表,dis为控制精度的距离.
(defun getpts (dis / gr pt pt0 pts)
(while (= 5 (car (setq gr (grread t 4 0))))
(setq pt (cadr gr))
(if (not pt0)(setq pt0 pt pts (cons pt0 pts)))
(if (> (distance pt pt0) dis)
(progn
(grdraw pt pt0 1 1)
(setq pts (cons pt pts)
pt0 pt)
)
)
)
(redraw)
(reverse pts)
)
(defun *myerr* (msg) (setvar "cmdecho" cmd) (setvar "osmode" os) (setq *error* oe))
(setq cmd (getvar "cmdecho")
os (getvar "osmode")
oe *error*
*error* *myerr*
roop T
dis (* 0.01 (getvar "viewsize"))
un 0
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(princ "\n 选择剪切边< all >")
(setq ss (ssget ":L"))
(while roop
(princ"\n U-undo R-redo E-edgemode开关 P-投影模式 选择模式:C-框选 修剪对象(按Shift键延伸)<退出>: ")
(if (= 0 (getvar "edgemode"))
(princ "\n边界延伸状态:*边界不延伸*")
(princ "\n边界延伸状态:*边界延伸*")
)
(setq gr (grread nil 4 2) ga (car gr) gb (cadr gr))
(cond
((= ga 3)
(cond
((setq sel (nentselp gb))(command ".trim") (if ss (command ss))(command "")(command sel ""));;单选.
(T (setq pts (getpts dis))
(if (setq pts2(cdr pts))
(progn (command ".trim") (if ss (command ss))(command "")
(mapcar ’(lambda(x y)(command "f" x y "")) pts pts2)
(command "")
)
)
)
)(setq un (1+ un))
)
((member gr ’((2 117) (2 85)));; "U"
(if (> un 0)
(progn (command ".u") (setq un (1- un)))
(princ "\n!没有可undo的内容了!")
)
)
((member gr ’((2 114)(2 82)));; "R"
(setq un (1+ un))
(command ".redo")
)
((member gr ’((2 101)(2 69)));; "E"
(setvar "edgemode" (abs(- (getvar "edgemode") 1)))
)
((member gr ’((2 99)(2 67)));; "C"
(if (and(setq pt (getpoint "\n框选第一点<回车退出>:"))(setq pt2 (getcorner pt "\n框选第二点<回车退出>:")))
(progn
(setq pts (list pt (list (car pt)(cadr pt2)) pt2 (list (car pt2)(cadr pt))))
(command ".trim") (if ss (command ss))(command "")
(mapcar ’(lambda(x y)(command "f" x y "")) pts (cons (last pts) pts))
(command "")
(setq un (1+ un))
)
)
)
((member gr ’((2 112)(2 80)));; "P"
(initget "0 1 2")
(setvar "PROJMODE" (atoi (getkword "[0 无 / 1 UCS / 2 视图]:"))))
((member gr ’((11 0)(2 32)));; "" or enter
(setq roop nil))
)
)
(setvar "cmdecho" cmd)
(setvar "osmode" os)
(setq *error* oe)
(princ)
)
回复
水的畅想
2007年04月19日 15:34:27
5楼
给的分太少了一点~~~
别人的程序~
不知道能不能满足你的胃口~
回复

相关推荐

APP内打开