357785513 发表于 2012-4-27 17:48:59

弯头程序

感觉这个程序对我们绘图有很大的帮助,可没有程序只有图片是在以前的小东网看到的,那位有这样的程序不,

Flamingo 发表于 2021-12-6 17:29:50

smartstar 发表于 2012-5-6 20:32
下面附件是我先前改过的,可以手动输入倒角半径(内侧角的倒角半径,默认半径为管道的半径。),并且修改使 ...

看我写的,不需要指定内侧角,直接框选

qinhengda 发表于 2024-9-10 11:37:53

大佬们,当线是多段线时,用不了哇,希望优化一下

Flamingo 发表于 2021-12-4 20:43:36

我也写了一个类似的,看我的帖子

357785513 发表于 2012-4-28 09:20:31

昨天 通过网络看到他的QQ了,他又发过来一张图片,不愿发程序只发来了个LSP,但与他那个图片上的程序好像不对他的那个图片上的程序弯头内圆是两线之间的三分之一,
可它发的LSP不管两线距离眵大,它只圆弧都是一样的,所以感觉他这个LSP不对现附上他发的LSP如下

(defun sort(i / ai e de)
(setq e (ssname a i))
(setq ai (ang e))
(setq de (dis e))
(if (or (equal ai a1 0.1) (equal ai (- pi a1) 0.1))
      (if (< d1 de)
          (if (< m2 100)
            (if (< (dis (ssname a m2)) de)
                  (setq m3 i)
                  (progn (setq m3 m2)
                         (setq m2 i)
                  )
            )
            (setq m2 i)
          )
          (progn (setq d1 de)
               (setq m3 m2)
               (setq m2 m1)
               (setq m1 i)
          )
      )
      (if (< n1 100)
          (if (< dn de)
            (if (< n2 100)
                  (if (< (dis (ssname a n2)) de)
                      (setq n3 i)
                      (progn (setq n3 n2)
                           (setq n2 i)
                      )
                  )
                  (setq n2 i)
            )
            (progn (setq dn de)
                     (setq n3 n2)
                     (setq n2 n1)
                     (setq n1 i)
            )
          )
          (progn (setq n1 i)
               (setq dn de)
          )
      )
)
)



(defun dis(a / pa pb)
(setq pa (cdr (assoc 10 (entget a))))
(setq pb (cdr (assoc 11 (entget a))))
(abs (* (sin (- (angle pa pb) (angle pa p))) (distance pa p)))
)

(defun pinter(l1 l2 / ip)
(setq ip (inters (cdr (assoc 10 (entget l1))) (cdr (assoc 11 (entget l1))) (cdr (assoc 10 (entget l2))) (cdr (assoc 11 (entget l2))) nil))
)

(defun lu(l ip / j k pa pb ang ang1 ang2)
(setq j (entget l))
(setq pa (cdr (assoc 10 j)))
(setq pb (cdr (assoc 11 j)))
(setq ang1 (angle pa pb))
(setq ang2 (angle p ip))
(setq ang (abs (- ang1 ang2)))
(if (or (< ang (/ pi 2)) (> ang (* pi 1.5)))
      (setq k (subst (cons 11 ip) (assoc 11 j) j))
      (setq k (subst (cons 10 ip) (assoc 10 j) j))
)
(entmod k)
)


(defun ang (a / pa pb)
(setq pa (cdr (assoc 10 (entget a))))
(setq pb (cdr (assoc 11 (entget a))))
(rem (angle pa pb) pi)
)




(defun c:df(/ ip1 ip2 ip3 la a co e a1 d1 d2 d3 dn p li l1 l2 l3 l4 l5 l6 lt i m1 n1 m2 n2 m3 n3 r f a b c x y z)
(setq a (ssget))
(setq n (sslength a))
(cond ((= n 6)(setq i 1)
(setq p (getpoint "请选择倒角方向点:"))
(setq d1 (dis (ssname a 0)))
(setq a1 (ang (ssname a 0)))
(setq m1 0 n1 100 m2 100 n2 100 m3 100 n3 100)
(repeat 5
    (sort i)
    (setq i (1+ i))
)
(setq l1 (ssname a m1))
(setq l2 (ssname a n1))
(setq l3 (ssname a m2))
(setq l4 (ssname a n2))
(setq l5 (ssname a m3))
(setq l6 (ssname a n3))
(setq la (cdr (assoc 8 (entget l1))))
(setq co (cdr (assoc 62 (entget l1))))
(setq lt (cdr (assoc 6 (entget l1))))
(setq a (cdr (assoc 10 (entget l1))))
(setq b (cdr (assoc 11 (entget l1))))
(setq c (cdr (assoc 10 (entget l5))))
(setq x (cdr (assoc 10 (entget l2))))
(setq y (cdr (assoc 11 (entget l2))))
(setq z (cdr (assoc 10 (entget l6))))
(setq ip1 (pinter l1 l2))
(setq ip2 (pinter l3 l4))
(setq ip3 (pinter l5 l6))
(lu l1 ip1)
(lu l2 ip1)
(lu l3 ip2)
(lu l4 ip2)
(lu l5 ip3)
(lu l6 ip3)
(setq d1 (abs (* (sin (- (angle a b) (angle a c))) (distance a c))))
(setq d2 (abs (* (sin (- (angle x y) (angle x z))) (distance x z))))
(if (<= d1 d2)
      (progn (if (<= d1 400)
               (setq r (/ d1 2))
               (setq r 200)
            )
         (setq d3 (+ (/ d1 2) r))
         (setq f (+ d1 r))
      )
      (progn (if (< d2 400)
               (setq r (/ d2 2))
               (setq r 200)
            )
            (setq d3 (+ (/ d2 2) r))
            (setq f (+ r d2))
      )
   )
(setvar "filletrad" r)
(command "fillet" l1 l2 "")
(setq j (entget (entlast)))
(setvar "filletrad" d3)
(command "fillet" l3 l4 "")
(setvar "filletrad" f)
(command "fillet" l5 l6 "")
(setq k (entget (entlast)))
(command "line" (polar (cdr (assoc 10 j)) (cdr (assoc 50 j)) (cdr (assoc 40 j))) (polar (cdr (assoc 10 k)) (cdr (assoc 50 k)) (cdr (assoc 40 k))) "")
(setq li (ssadd))
(setq li (ssadd (entlast) li))
(command "line" (polar (cdr (assoc 10 j)) (cdr (assoc 51 j)) (cdr (assoc 40 j))) (polar (cdr (assoc 10 k)) (cdr (assoc 51 k)) (cdr (assoc 40 k))) "")
(setq li (ssadd (entlast) li))
(COMMAND "chprop" li "" "la" la "")
(if (= co nil)
      (command "chprop" li "" "c" "bylayer" "")
      (command "chprop" li "" "c" co "")
)
(if (= lt nil)
      (command "chprop" li "" "lt" "bylayer" "")
      (command "chprop" li "" "lt" lt "")
))
((= n 4)(setq i 1)
(setq p (getpoint "请选择倒角方向点:"))
(setq d1 (dis (ssname a 0)))
(setq a1 (ang (ssname a 0)))
(setq m1 0 n1 100 m2 100 n2 100)
(repeat 3
    (sort i)
    (setq i (1+ i))
)
(setq l1 (ssname a m1))
(setq l2 (ssname a n1))
(setq l3 (ssname a m2))
(setq l4 (ssname a n2))
(setq la (cdr (assoc 8 (entget l1))))
(setq co (cdr (assoc 62 (entget l1))))
(setq lt (cdr (assoc 6 (entget l1))))
(setq a (cdr (assoc 10 (entget l1))))
(setq b (cdr (assoc 11 (entget l1))))
(setq c (cdr (assoc 10 (entget l3))))
(setq x (cdr (assoc 10 (entget l2))))
(setq y (cdr (assoc 11 (entget l2))))
(setq z (cdr (assoc 10 (entget l4))))
(setq ip1 (pinter l1 l2))
(setq ip2 (pinter l3 l4))
(lu l1 ip1)
(lu l2 ip1)
(lu l3 ip2)
(lu l4 ip2)
(setq d1 (abs (* (sin (- (angle a b) (angle a c))) (distance a c))))
(setq d2 (abs (* (sin (- (angle x y) (angle x z))) (distance x z))))
(if (<= d1 d2)
      (progn (if (<= d1 400)
               (setq r (/ d1 2))
               (setq r 200)
             )
             (setq f (+ d1 r))
      )
      (progn (if (< d2 400)
               (setq r (/ d2 2))
               (setq r 200)
            )
            (setq f (+ r d2))
      )
   )
(setvar "filletrad" r)
(command "fillet" l1 l2 "")
(setq j (entget (entlast)))
(setvar "filletrad" f)
(command "fillet" l3 l4 "")
(setq k (entget (entlast)))
(command "line" (polar (cdr (assoc 10 j)) (cdr (assoc 50 j)) (cdr (assoc 40 j))) (polar (cdr (assoc 10 k)) (cdr (assoc 50 k)) (cdr (assoc 40 k))) "")
(setq li (ssadd))
(setq li (ssadd (entlast) li))
(command "line" (polar (cdr (assoc 10 j)) (cdr (assoc 51 j)) (cdr (assoc 40 j))) (polar (cdr (assoc 10 k)) (cdr (assoc 51 k)) (cdr (assoc 40 k))) "")
(setq li (ssadd (entlast) li))
(COMMAND "chprop" li "" "la" la "")
(if (= co nil)
      (command "chprop" li "" "c" "bylayer" "")
      (command "chprop" li "" "c" co "")
)
(if (= lt nil)
      (command "chprop" li "" "lt" "bylayer" "")
      (command "chprop" li "" "lt" lt "")
))
(t (princ "选择的线数目不对"))
)
(princ)
)

357785513 发表于 2012-4-28 09:22:07

话说回来,还是要感谢他,

357785513 发表于 2012-4-28 09:25:20

而且他的还要点内角才能做出这样的弯头,我看他图片上的好像是选择这一对管线,再选择别的一对管线,一回车就自动弯头了,而且弯的内弧刚刚好是两管之间的三分之一的距离,

lz689706 发表于 2012-4-28 12:38:46

要是把设备专业能用上的都收集一起就好了。

ynhh 发表于 2012-4-28 14:41:44

这个弯头那才叫好看

357785513 发表于 2012-4-28 17:48:24

扯淡了,那里会有这么复杂呀

357785513 发表于 2012-4-28 20:29:32

磊家都来顶一顶呀,可别程了,这个个功能对咱设备专业非常有用

357785513 发表于 2012-5-2 12:43:34

没有人顶呀看来做管道设备的人真的不多呀奇怪呢那你们空调的弯头都不做

357785513 发表于 2012-5-3 20:24:11

不是吧,这么长时间竟没有人顶
页: [1] 2 3 4
查看完整版本: 弯头程序