乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 19

[编程交流] 三维管道末端/管道断裂

[复制链接]

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:52:58 | 显示全部楼层 |阅读模式
你好,来自德国,
我在acad2008上使用3d管道应用程序。直到今天,还没有办法在管道上绘制3d管端或部分隔热层。
它必须看起来像阴阳符号——但在3d中:
示例1:管径114.3 mm+保温层80mm
示例2:管道外径为168.3 mm,壁厚为8mm
我使用固体的方式总是一样的。
但是,在点击管道实体的末端并输入数据后,有一个自动绘制该图的程序可能会非常有用。
我的英语不是最好的,很抱歉。希望这些图片对你有帮助。
-大蒜-
125303eztql0ym8774vl1s.jpg
Iso。图纸
125304sgisntrvd9dei1ks.jpg
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 11:58:17 | 显示全部楼层
您需要什么数据作为输出?
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:00:11 | 显示全部楼层
...如图/dwg所示。对于“数据”,我指的是直径和厚度=+绝缘或-壁厚。结果应该像一个有这些“特殊端”的管道
acad2008和acad2010
...你是这个意思吗?
-大蒜-
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:03:07 | 显示全部楼层
 
这会让你开始
我对你的直径有误解
更改所有尺寸以适合
 
  1. (defun C:SS (/ cpt dia1 dia2 dist dpt ept hgt1 thk2
  2.        sol1 sol2 sol3 sol4 spt subsol1 subsol2 thk1)
  3. (setvar "cmdecho" 0)
  4. (command "._-view" "_swiso")
  5. (command "._vscurrent" "_2")  
  6. (setq dia1 (getdist "\nEnter big pipe diameter <168.3> : "))
  7. (if (not dia1)(setq dia1 168.3))
  8. (setq hgt1 (getdist "\nEnter pipe height <1000> : "))
  9. (if (not hgt1)(setq hgt1 150.))
  10. (setq thk1 (getdist "\nEnter pipe thickness <8> : "))
  11. (if (not thk1)(setq thk1 8.))
  12. (setq dia2 (getdist "\nEnter the conjunction pipe diameter <114.3> : "))
  13. (if (not dia2)(setq dia2 114.3))
  14. (setq thk2 (getdist "\nEnter thickness of insulation <40.0> : "))
  15. (if (not thk2)(setq thk2 40.))
  16. (setq dist (getdist "\nEnter distance between pipe axises <1000>: "))
  17. (if (not dist)(setq dist 1000.))
  18. (setq cpt (getpoint "\nPick center point of the big pipe: ")
  19.      spt (list (car cpt)(+ (cadr cpt) hgt1)(caddr cpt))
  20.      ept (list (car cpt)(- (cadr cpt) hgt1)(caddr cpt))
  21.      )
  22. (command "._cylinder" "_non" spt dia1 "_A"  ept)
  23. (setq sol1 (entlast))
  24. (command "._cylinder" "_non" spt (- dia1 (* 2 thk1)) "_A"  ept)
  25. (setq subsol1 (entlast))
  26. (command "._rotate3d" sol1 "" "_X" "_non" cpt -45.)
  27. (setq sol1 (entlast))
  28. (command "._rotate3d" subsol1 "" "_X" "_non" cpt -45.)  
  29. (setq subsol1 (entlast))
  30. (setq dpt (list (+ (car cpt) dist) (cadr cpt)(caddr cpt)))
  31. (command "._copy" sol1 "" "_non" cpt "_non" dpt)
  32. (setq sol2 (entlast))
  33. (command "._rotate3d" sol2 "" "_X" "_non" cpt 90.)
  34. (setq sol2 (entlast))  
  35. (command "._copy" subsol1 "" "_non" cpt "_non" dpt)
  36. (setq subsol2 (entlast))
  37. (command "._rotate3d" subsol2 "" "_X" "_non" cpt 90.)
  38. (setq subsol2 (entlast))  
  39. (command "._cylinder" "_non" cpt dia2 "_A"  dpt)
  40. (setq sol3 (entlast))
  41. (command "._cylinder" "_non" cpt (+ dia2 (/ thk2 2.)) "_A"  dpt)
  42. (setq sol4 (entlast))
  43. (command "._subtract" sol4 "" sol3 "")
  44. (setq sol4 (entlast))  
  45. (command "._subtract" sol4 "" subsol1 "")
  46. (setq sol4 (entlast))  
  47. (command "._subtract" sol4 "" subsol2 "")
  48. (setq sol4 (entlast))
  49. (command "._subtract" sol4 "" sol1 "")
  50. (setq sol4 (entlast))  
  51. (command "._subtract" sol4 "" sol2 "")
  52. (command "._vscurrent" "_C")
  53. (setvar "cmdecho" 1)
  54. (princ)
  55. )

 
~'J'~
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:08:12 | 显示全部楼层
..我想,我试着解释错了。。。仅从以下内容开始:
 
(setq dia1(getdist“\n输入管径:”)。。。是外径
 
(setq hgt1(getdist“\n输入管道高度:”)。。。是管子的长度
 
(setq thk2(getdist“\n输入绝缘厚度:”)。。。好啊
 
整个管道的外径将为168,3+40+40 mm。
 
要减去的圆柱体直径始终为2.5 x管道外径,即168.3 x 2.5=420.75mm
圆柱体的高度可以始终是管道外径的1.1倍,这没关系。
 
这应该足够画出像图片上那样的部分了——我认为:不确定:。
 
-大蒜-
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:11:42 | 显示全部楼层
 
对不起,我不明白
 
~'J'~
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:12:27 | 显示全部楼层
嗯,我自己也很困惑:我觉得太复杂了:?
 
我测试了你的代码并做了一些肮脏的更改。它现在工作正常,但“输入管道半径”必须是“输入管道直径”,如果在acad中测试,您将看到。。。
你的代码很好:D,所以我可以用它。
*******
(定义C:SS(/cpt dia1 dia2 dist dpt ept hgt1 thk2
sol1 sol2 sol3 sol4 spt subsol1 subsol2 thk1)
;   (setvar“cmdecho”0)
;   (命令“.-view”“\u swiso”)
;   (命令“.u vscurrent”“\u 2”)
(setq dia1(getdist“\n输入减去管道半径:”)
(if(非dia1)(setq dia1 300.0))
(setq hgt1(getdist“\n输入减去管道半长:”)
(if(非hgt1)(setq hgt1 300)
(setq dia2(getdist“\n输入管道半径:”)
(if(非dia2)(setq dia2 175.0))
(setq thk2(getdist“\n输入绝缘厚度:”)
(if(非thk2)(setq thk2 50)
(setq dist(getdist“\n输入管道最大长度:”)
(if(非dist)(setq dist 1000)
(setq cpt(getpoint“\n点击减法管道的中心点:”)
spt(列表(car cpt)(+(cadr cpt)hgt1)(caddr cpt))
ept(列表(car cpt)((cadr cpt)hgt1)(caddr cpt))
)
(命令“_cylinder”“\u non”spt dia1“\u A”ept)
(setq sol1(entlast))
(命令“.u rotate3d”sol1“\u X”\u non”cpt-45。)
(setq sol1(entlast))
(setq dpt(list(+(car cpt)dist)(cadr cpt)(caddr cpt)))
(命令“..u copy“sol1”“”\u non“cpt”\u non“dpt”)
(setq sol2(entlast))
(命令“.u rotate3d”sol2“\u X”\u non”cpt 90。)
(setq sol2(entlast))
(命令“..u cylinder”“\u non”cpt dia2“\u A”dpt)
(setq sol3(entlast))
(命令“_cylinder”“\u non”cpt(+dia2(/thk2 1))“A”dpt)
(setq sol4(entlast))
(命令“.u减去”sol4“sol3”)
(setq sol4(entlast))
(命令“.u减去”sol4“sol1”)
(setq sol4(entlast))
(命令“.u减去”sol4“sol2”)
(命令“.u vscurrent”“\u 2”)
;   (setvar“cmdecho”1)
(普林斯)
)
*********
我希望,现在更容易了。
-大蒜-
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:17:05 | 显示全部楼层
 
好啊
我需要什么
再次绘制样本图,精确尺寸为
然后上传到这里
对我来说会容易得多
 
~'J'~
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:18:42 | 显示全部楼层
你好,
我刚刚画了一张附有代码的图。
希望这有帮助。
-大蒜-
非常感谢:D
SS4.dwg
SS4.lsp
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:24:41 | 显示全部楼层
是否可以为dia1“减去管道半径”和hgt1“减去管道半长”提供相同的公式:
(管径+保温层)x 2.5?
这会让管道上的破裂看起来很漂亮。
是否可能给dist“管道最大长度”始终相同的公式:dia1 x 5?
 
之后只剩下“管径”和“保温厚度”的问题。
那真的太完美了!(…而且很复杂?)
-大蒜-
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 10:31 , Processed in 0.633848 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表