linheyuanpcb 发表于 2011-4-1 16:23:07

可以框选倒[V字形]的直角吗?/如题 附上图纸

本帖最后由 linheyuanpcb 于 2011-4-6 10:43 编辑


(DEFUN C:Cah ()
(setvar "cmdecho" 0)
(COMMAND "CHAMFER" "D" "0.8" "")(COMMAND "CHAMFER" "u" ))
(PRINC)
----------------------------------------------------------------------------------
多个/ 倒角,只能一个一个的来倒角,

能不能框选它们,符合的就自动倒角?这样速度快很多,请各位帮忙
[符合条件;3条线并有相交点 ]

Andyhon 发表于 2011-4-1 16:23:08

(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)
)

;;; 只调试通过您所附图纸
;;; 可扩展为全选中心线

Andyhon 发表于 2011-4-1 17:22:56

得有 原图样与完成图样 (*.dwg)作为调试的依据
能加上程序启动后需由User回应提供的资料更好使力

xyp1964 发表于 2011-4-2 21:25:09


CUT!

linheyuanpcb 发表于 2011-4-3 09:24:15

有图没真相,xyp1964 请提供程序或者源.谢谢

linheyuanpcb 发表于 2011-4-4 08:53:56

好多天了,没人帮忙,xyp1964老大就给了张图,闪了

linheyuanpcb 发表于 2011-4-6 10:50:30

linheyuanpcb 发表于 2011-4-6 16:27:41

(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)
)
框选,但不能双边都倒角/
帮忙修正下,谢谢

linheyuanpcb 发表于 2011-4-7 09:13:17

感谢,Andyhon 虽然不能一次性将所选的全部倒角,但也比以前一个个选快了很多。

Andyhon 发表于 2011-4-7 09:42:27

....一次性将所选的全部倒角....

也只是依次处理耳!
过些时候相信您也能运用自如
;;; 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]
查看完整版本: 可以框选倒[V字形]的直角吗?/如题 附上图纸