找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 616|回复: 4

[求助]:如何实现三线弯头的自动绘制?

[复制链接]
发表于 2003-5-31 10:21:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我经常画空调风管的图纸,图中的风管用三线绘制,画弯头时须一根线一根线地选择进行fillet操作,怎样才能自动进行?
实现过程为:先选择一边三线风管,得至三根线,再选择另一三线风管,得到三根线,进行FILLET,画出2根法兰线,最外圈圆弧半径为三线风管宽度,最内圈圆弧半径为三线风管宽度的一半,中间为内圈与外圈之和的一半。
如图所示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-31 13:00:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
要想自动绘制, 只有编程了(lisp/VBA).我编过机械零件中的三通接头(TEE)可能和你的风管类似。它需要初始参数:管的直径(外径),壁厚, 长度,弯曲半径(中心线)
如你感兴趣,我给你发过去。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-31 13:04:33 | 显示全部楼层
最初由 lsjjm 发布
[B]要想自动绘制, 只有编程了(lisp/VBA).我编过机械零件中的三通接头(TEE)可能和你的风管类似。它需要初始参数:管的直径(外径),壁厚, 长度,弯曲半径(中心线)
如你感兴趣,我给你发过去。 [/B]


还是贴论坛来吧,这样能让更多的朋友获得帮助,谢谢!

最好能做个截图或者动画,演示下你的工具.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-1 14:15:51 | 显示全部楼层
我自己编了一个程序,语句比较多,必须一根一根线地选择,从一边三线的内侧选择P1、P2,再选择另三线P3、P4,再选中线P5、P6,程序自动完成弯头
如图所示:
如各位用得着的话,试一下,如能更简单的话请贴上来,
源程序如下:
  1. <normalfont>[font=courier]
  2. ;;;*******************************************单弯头绘制程序***************************************************
  3. (defun C:fgwt (/ ang1 ang2 pd1 pd2 pd3 pd4 pd5 pd6 p1 p2 p3 p4 p5 p6
  4.                int1 int2)
  5.   (princ "\n")
  6.   (princ "************风管单弯头绘制程序************")  
  7.   (princ "\n")
  8.   (princ "*****E-mail:xyzjint_cn@sina.com*****")
  9.   (princ "\n")
  10.   (princ "选择风管管线请从内圆开始方向)")
  11.   (princ "选择主风管管线(从内圆开始方向)")
  12.   (setvar "osmode" 687)

  13.   (setq        pe1 (entsel)                        ;求得主风管管径
  14.         p1  (osnap (last pe1) "nea")
  15.         p2  (getpoint p1)
  16.         p2  (list (car p2) (cadr p2))
  17.         p3x (+ (nth 0 p1) (nth 0 p2))
  18.         p3y (+ (nth 1 p1) (nth 1 p2))
  19.         p3  (list p3x p3y)
  20.         kj  (distance p1 p2)
  21.   )
  22.   (princ "选择支管管线(从内圆开始方向):")
  23.   (setq        pe2 (entsel)
  24.         p4  (osnap (last pe2) "nea")
  25.         p5  (getpoint p4)
  26.         p5  (list (car p5) (cadr p5))
  27.         p6x (+ (nth 0 p4) (nth 0 p5))
  28.         p6y (+ (nth 1 p4) (nth 1 p5))
  29.         p6  (list p6x p6y)

  30.   )
  31.   (setq ln1 (ssget p1))
  32.   (setq ln2 (ssget p2))
  33.   (setq ln4 (ssget p4))
  34.   (setq ln5 (ssget p5))
  35.   (princ "\n选择主风管中心线")
  36.   (setq ln3 (ssget))
  37.   (princ "\n选择支风风管中心线")
  38.   (setq ln6 (ssget))

  39.   (if (= ln1 nil)
  40.     (setq ln1 (ssget))
  41.   )
  42.   (if (= ln2 nil)
  43.     (setq ln2 (ssget))
  44.   )
  45.   (if (= ln3 nil)
  46.     (setq ln3 (ssget))
  47.   )
  48.   (if (= ln4 nil)
  49.     (setq ln4 (ssget))
  50.   )
  51.   (if (= ln5 nil)
  52.     (setq ln5 (ssget))
  53.   )
  54.   (if (= ln6 nil)
  55.     (setq ln6 (ssget))
  56.   )

  57.   (setq kj1 (/ kj 2))
  58.   (setq kj2 (/ (+ kj kj1) 2))
  59.   (command "fillet" "r" kj1)
  60.   (command "fillet" ln1 ln4)
  61.   (setq yh (entlast))

  62.   (command "fillet" "r" kj)
  63.   (command "fillet" ln2 ln5)
  64.   (command "fillet" "r" kj2)
  65.   (command "fillet" ln3 ln6)
  66.   (setvar "osmode" 0)
  67.   (setq ent1 (entget (ssname ln1 0)))
  68.   (setq pc11 (assoc 10 ent1))
  69.   (setq pc11 (list (nth 1 pc11) (nth 2 pc11)))
  70.   (setq pc12 (assoc 11 ent1))
  71.   (setq pc12 (list (nth 1 pc12) (nth 2 pc12)))

  72.   (setq ent2 (entget (ssname ln2 0)))
  73.   (setq pc21 (assoc 10 ent2))
  74.   (setq pc21 (list (nth 1 pc21) (nth 2 pc21)))
  75.   (setq pc22 (assoc 11 ent2))
  76.   (setq pc22 (list (nth 1 pc22) (nth 2 pc22)))

  77.   (setq ent4 (entget (ssname ln4 0)))
  78.   (setq pc41 (assoc 10 ent4))
  79.   (setq pc41 (list (nth 1 pc41) (nth 2 pc41)))
  80.   (setq pc42 (assoc 11 ent4))
  81.   (setq pc42 (list (nth 1 pc42) (nth 2 pc42)))

  82.   (setq ent5 (entget (ssname ln5 0)))
  83.   (setq pc51 (assoc 10 ent5))
  84.   (setq pc51 (list (nth 1 pc51) (nth 2 pc51)))
  85.   (setq pc52 (assoc 11 ent5))
  86.   (setq pc52 (list (nth 1 pc52) (nth 2 pc52)))

  87.   (setq int1 (inters pc11 pc12 pc41 pc42 nil))
  88.   (setq ds1 (distance int1 pc11))
  89.   (setq ds2 (distance int1 pc12))
  90.   (if (< ds1 ds2)
  91.     (setq pd1 pc11)
  92.     (setq pd1 pc12)
  93.   )

  94.   (setq ds3 (distance int1 pc41))
  95.   (setq ds4 (distance int1 pc42))
  96.   (if (< ds3 ds4)
  97.     (setq pd2 pc41)
  98.     (setq pd2 pc42)
  99.   )

  100.   (setq e1 (entget yh))
  101.   (setq c0 (assoc 10 e1))
  102.   (setq c0 (list (nth 1 c0) (nth 2 c0)))
  103.   (setq pd3 (inters c0 pd1 pc21 pc22 nil))
  104.   (setq pd4 (inters c0 pd2 pc51 pc52 nil))
  105.   (command "color" "byblock" "")
  106.   (command "linetype" "s" "bylayer" "")
  107.   (command "line" pd1 pd3 "")
  108.   (command "line" pd2 pd4 "")
  109.   (command "color" "bylayer" "")
  110.   (setvar "osmode" 687)

  111.   (princ)
  112. )
  113. </font>
  114. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-1 14:38:36 | 显示全部楼层
谢谢版主加分!
能不能研究一下,在程序中只分2次选择2部分三线,由程序自动判断三线的每一根线,(现在的程序需选择6次)









在论坛的帮助下,我步入了LISP编程的大门,第一次登录以前,对LISP程序一窍不通!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-28 12:09 , Processed in 0.494370 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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