明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4524|回复: 30

弯头程序

  [复制链接]
发表于 2012-4-27 17:48:59 | 显示全部楼层 |阅读模式
感觉这个程序对我们绘图有很大的帮助,可没有程序只有图片是在以前的小东网看到的,那位有这样的程序不,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

动画整的太烂!!!  发表于 2012-4-27 18:15
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-6 17:29:50 | 显示全部楼层
smartstar 发表于 2012-5-6 20:32
下面附件是我先前改过的,可以手动输入倒角半径(内侧角的倒角半径,默认半径为管道的半径。),并且修改使 ...

看我写的,不需要指定内侧角,直接框选
发表于 2024-9-10 11:37:53 | 显示全部楼层
大佬们,当线是多段线时,用不了哇,希望优化一下
发表于 2021-12-4 20:43:36 | 显示全部楼层
我也写了一个类似的,看我的帖子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 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)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-4-28 09:22:07 | 显示全部楼层
话说回来,还是要感谢他,
 楼主| 发表于 2012-4-28 09:25:20 | 显示全部楼层
而且他的还要点内角才能做出这样的弯头,我看他图片上的好像是选择这一对管线,再选择别的一对管线,一回车就自动弯头了,而且弯的内弧刚刚好是两管之间的三分之一的距离,
发表于 2012-4-28 12:38:46 | 显示全部楼层
要是把设备专业能用上的都收集一起就好了。
发表于 2012-4-28 14:41:44 | 显示全部楼层
这个弯头那才叫好看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-4-28 17:48:24 | 显示全部楼层
扯淡了,那里会有这么复杂呀
 楼主| 发表于 2012-4-28 20:29:32 | 显示全部楼层
磊家都来顶一顶呀,可别程了,这个个功能对咱设备专业非常有用
 楼主| 发表于 2012-5-2 12:43:34 | 显示全部楼层
没有人顶呀看来做管道设备的人真的不多呀奇怪呢那你们空调的弯头都不做

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-5-3 20:24:11 | 显示全部楼层
不是吧,这么长时间竟没有人顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-19 18:37 , Processed in 0.221175 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表