[求助]清角的LISP程序?
<p>大家好,我这边模板腔体,尖角的话都要清角,转角要画清角圆孔,一个个画有点麻烦,各位谁有这样功能的LISP程序,选一下腔体就可以自动画出清角圆孔,谢谢!</p><p> </p><p> </p> 哪位能帮把Z版,改成支持多段线的和能连续选择空格退出的,谢谢code="lisp] ;选择直线圆弧清角 明经 ZZXXQQ 2009.7.16 (defun c:tt () (setvar "CMDECHO" 0) (setq oldos (getvar "OSMODE")) (if (and (setq r (getdist "\n圆弧半径 :")) (setq s1 (entsel "\n选择第一条直线 :")) (setq ent (entget(car s1))) (= (cdr(assoc 0 ent)) "LINE")) (if (and (setq s2 (entsel "\n选择第二条直线 :")) (setq ent1 (entget(car s2))) (= (cdr(assoc 0 ent1)) "LINE")) (progn (setq p1 (cdr(assoc 10 ent)) p2 (cdr(assoc 11 ent)) p3 (cdr(assoc 10 ent1)) p4 (cdr(assoc 11 ent1))) (if (setq p5 (inters p1 p2 p3 p4 nil)) (progn (if (< (distance p1 p5) (distance p2 p5)) (setq p1 (polar p5 (angle p1 p2) r) p12 p2 ent (subst (cons 10 p1) (assoc 10 ent) ent)) (setq p2 (polar p5 (angle p2 p1) r) p12 p1 ent (subst (cons 11 p2) (assoc 11 ent) ent)) ) (entmod ent) (if (< (distance p3 p5) (distance p4 p5)) (setq p3 (polar p5 (angle p3 p4) r) p34 p4 ent1 (subst (cons 10 p3) (assoc 10 ent1) ent1)) (setq p4 (polar p5 (angle p4 p3) r) p34 p3 ent1 (subst (cons 11 p4) (assoc 11 ent1) ent1)) ) (entmod ent1) (setq p6 (polar p12 (angle p12 p34) (/ (distance p12 p34) 2))) (command "circle" p5 r "trim" s1 s2 "" "F" p5 p6 "" "") )) )) ) (setvar "OSMODE" oldos) (setvar "CMDECHO" 1) (princ) )
感謝分享 sdwy196912,你的东东有时间限制,已过期!!!! 不知道腔体是什么样的实体?发个选直线画清角圆弧的程序。
;选择直线圆弧清角 明经 ZZXXQQ 2009.7.16
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(if (and (setq r (getdist "\n圆弧半径 :"))
(setq s1 (entsel "\n选择第一条直线 :"))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "LINE"))
(if (and (setq s2 (entsel "\n选择第二条直线 :"))
(setq ent1 (entget(car s2)))
(= (cdr(assoc 0 ent1)) "LINE")) (progn
(setq p1 (cdr(assoc 10 ent)) p2 (cdr(assoc 11 ent))
p3 (cdr(assoc 10 ent1)) p4 (cdr(assoc 11 ent1)))
(if (setq p5 (inters p1 p2 p3 p4 nil)) (progn
(if (< (distance p1 p5) (distance p2 p5))
(setq p1 (polar p5 (angle p1 p2) r) p12 p2
ent (subst (cons 10 p1) (assoc 10 ent) ent))
(setq p2 (polar p5 (angle p2 p1) r) p12 p1
ent (subst (cons 11 p2) (assoc 11 ent) ent))
)
(entmod ent)
(if (< (distance p3 p5) (distance p4 p5))
(setq p3 (polar p5 (angle p3 p4) r) p34 p4
ent1 (subst (cons 10 p3) (assoc 10 ent1) ent1))
(setq p4 (polar p5 (angle p4 p3) r) p34 p3
ent1 (subst (cons 11 p4) (assoc 11 ent1) ent1))
)
(entmod ent1)
(setq p6 (polar p12 (angle p12 p34) (/ (distance p12 p34) 2)))
(command "circle" p5 r "trim" s1 s2 "" "F" p5 p6 "" "")
))
))
)
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
谢谢版主的热心!!!太感动了,呵呵!腔体的话是串起来的多段线,选一下,四个角都出来了,要是多段线能使用就更完美了,再次感谢! 版主能不能再改一下,能使多段线使用的,谢谢!
;方框圆弧清角 明经 ZZXXQQ 2009.7.19
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(if (and (setq r (getdist "\n圆弧半径 :"))
(princ "\n选择方框 :")
(setq ss (ssget ":S" '((0 . "LWPOLYLINE") (70 . 1))))) (progn
(setq en (ssname ss 0) ent (entget en))
(if (= (cdr(assoc 90 ent)) 4) (progn
(setq ptl (list))
(foreach n ent (if (= (car N) 10) (setq ptl (cons (cdr n) ptl))))
(setq ptl (reverse ptl))
(setq p1 (car ptl) p2 (cadr ptl) p3 (caddr ptl) p4 (last ptl))
(command "circle" p1 r) (setq e1 (entlast))
(command "circle" p2 r) (setq e2 (entlast))
(command "circle" p3 r) (setq e3 (entlast))
(command "circle" p4 r) (setq e4 (entlast))
(command "trim" e1 e2 e3 e4 "" "f" p1 p3 "" "f" p1 p3 "" "f" p2 p4 "" "f" p2 p4 "" "")
(setq ss (ssget "W" p1 p3))
(command "trim" ss "" "f" p1 p3 "" "f" p2 p4 "" "")
))
))
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
再次谢谢版主的支持!程序做得很好了,就是能不能再改善一下,之前是我没有说清楚,就是该程序只能针对矩形使用,但是不能对其它的形状的封闭多段线使用,比如说"凸"字形腔体,还有一个就是当命令使用完之后,线段全都打散了,不是之前的多段线了,能不能把这两处改善一下,不好意思啊,再次感谢!顺祝周末愉快! <p>UploadFile/2009-7/20097191115069126.jpg,viewFile.asp?ID=48532[/upload</p><p>版主,我上传一个凸形腔体,你看看!</p> <p>工字形腔体</p><p> </p> 内角和外角程序不好判断。建议用炸开后用2楼程序画清角,然后再用PEDIT命令合并成多段线。