可以框选倒[V字形]的直角吗?/如题 附上图纸
本帖最后由 linheyuanpcb 于 2011-4-6 10:43 编辑(DEFUN C:Cah ()
(setvar "cmdecho" 0)
(COMMAND "CHAMFER" "D" "0.8" "")(COMMAND "CHAMFER" "u" ))
(PRINC)
----------------------------------------------------------------------------------
多个/ 倒角,只能一个一个的来倒角,
能不能框选它们,符合的就自动倒角?这样速度快很多,请各位帮忙
[符合条件;3条线并有相交点 ]
(defun mid_pt (a b)
(mapcar
(function (lambda (a b) (/ (+ a b) 2)))
a
b
)
)
;;; ==================
(defun cham08_A (ee pt)
(setq Dat (entget ee)
pa (cdr (assoc 10 Dat))
pb (cdr (assoc 11 Dat))
pt5 (mid_pt pa pb)
vv2 (angle pt pt5)
pt6 (polar pt vv2 0.8)
)
(command "Change" (list ee pt6) "" pt6)
(command "Line" Pt6 pt3 "")
)
(defun cham08 (sset pt)
(setq e1 (ssname sset 0)
e2 (ssname sset 1)
vv1 (angle pt p5)
pt3 (polar pt vv1 0.8)
)
(command "Change" (list en pt3) "" pt3)
(cham08_A e1 pt)
(cham08_A e2 pt)
)
;;; No error trap
;;; for test only
(defun c:08 ()
(setvar "cmdecho" 0)
(setvar "OsMode" 0)
;; (COMMAND "CHAMFER" "D" "0.8" "")
(princ "\n选取要倒角的中心线:")
(setq zz '((0 . "LINE") (8 . "CENTER"))
en (ssget ":S" zz)
en (ssname en 0)
Dat (entget en)
p1 (cdr (assoc 10 Dat))
p2 (cdr (assoc 11 Dat))
zz '((0 . "LINE") (8 . "~CENTER"))
ss1 (ssget "C" p1 p1 zz)
ss2 (ssget "C" p2 p2 zz)
p5 (mid_pt p1 p2)
)
(cham08 ss1 p1)
(cham08 ss2 p2)
(princ)
)
;;; 只调试通过您所附图纸
;;; 可扩展为全选中心线
得有 原图样与完成图样 (*.dwg)作为调试的依据
能加上程序启动后需由User回应提供的资料更好使力
CUT!
有图没真相,xyp1964 请提供程序或者源.谢谢 好多天了,没人帮忙,xyp1964老大就给了张图,闪了
(defun c:08 ()
(setvar "cmdecho" 0)
(COMMAND "CHAMFER" "D" "0.8" "" )
(princ "\n框取要倒角的两根线:")
(setq en (ssget ))
(setq een (entget (ssname en 0)) een1 (entget (ssname en 1)))
(setq p1 (cdr (assoc 10 een)) p2 (cdr (assoc 11 een)) d (distance p1 p2) pp1 (polar p1 (angle p1 p2) (/ d 2.0)))
(setq p3 (cdr (assoc 10 een1)) p4 (cdr (assoc 11 een1)) d1 (distance p3 p4) pp2 (polar p3 (angle p3 p4) (/ d1 2.0)))
(command "chamfer" "d" c1 c2 "chamfer" pp1 pp2 )
;(COMMAND "CHAMFER" "u" )
(princ)
)
框选,但不能双边都倒角/
帮忙修正下,谢谢 感谢,Andyhon 虽然不能一次性将所选的全部倒角,但也比以前一个个选快了很多。 ....一次性将所选的全部倒角....
也只是依次处理耳!
过些时候相信您也能运用自如
;;; No error trap
;;; for test only
(defun c:08 ()
(setvar "cmdecho" 0)
(setvar "OsMode" 0)
;; (COMMAND "CHAMFER" "D" "0.8" "")
(princ "\n选取要倒角的中心线集 : ")
(setq zz '((0 . "LINE") (8 . "CENTER"))
ss (ssget zz)
Idx0
)
(While (setq en (ssname ss Idx))
(setqDat (entget en)
p1 (cdr (assoc 10 Dat))
p2 (cdr (assoc 11 Dat))
zz '((0 . "LINE") (8 . "~CENTER"))
ss1 (ssget "C" p1 p1 zz)
ss2 (ssget "C" p2 p2 zz)
p5 (mid_pt p1 p2)
Idx (1+ Idx)
)
(cham08 ss1 p1)
(cham08 ss2 p2)
)
(princ)
)
页:
[1]