将HVAC半径弯头转换为s
大家好!我需要将半径弯头转换为分段,如图所示。。
(见附件)
我找到了将弧转换为具有用户定义的段数的分段pline的专用例程
(见附件)现在,我需要对这个程序进行一些改进,从线段顶点到选定弧中心绘制直线或样条线
有人能帮我做吗?
任何帮助都将不胜感激
弧到编号段-ASX。lsp
哇!我已经很久没有开发出戈尔肘部的图案了!
第一件事:第一个和最后一个戈尔是中间完全戈尔的1\2
在美国,我们使用SMACNA作为HVAC标准,以确定弯曲半径与圆形风管尺寸的关系。
GORE的数量取决于系统的应用。除尘器需要比标准通风多得多的血污。
你有需要满足的规格吗?
-大卫
我理解你的意思,但我没有任何规格,在第一个“脏”阶段,我只需要弧中心方向的戈尔之间的线连接 为什么桡肘首先被画出来? 在帖子#204中下载此LISP:
http://www.cadtutor.net/forum/showthread.php?10882-需要更好的多行&p=670389&viewfull=1#post670389
这是本论坛的老成员ASMI最初创建的风管/管道布线程序的更新版本:
http://www.cadtutor.net/forum/showthread.php?30545-*免费*-用于AutoCAD的HVAC或管道程序
该程序首先基于几个输入值动态创建斜接、半径或gored管件。使用工具选项板上的宏,可以具有“预设”值。例如,只需点击一个按钮,您就可以拥有4“斜接喉,或1.5W半径的肘部。
这并不会“转换”你的肘部,但这可能是一个整体上的替代解决方案。希望这有帮助。
-TZ公司
**编辑**
刚才看到Ronso,我链接的程序的作者之一,已经发布了。非常感谢他不断更新此程序。 我已经在一组图纸中绘制了一组半径弯头,我需要“转换”它,而不需要重新绘制 那么我所提供的不会有多大帮助。未来的项目,是的。
关于半径弯头,它们由哪些autocad对象组成?两条独立的多段线弧、两条独立的圆弧或一条连续的闭合多段线。当您提供的例程可以选择多种对象类型时,这不仅仅是一个小小的改进。 今天我有一些时间,这确实让我想起了很多晶圆厂的回忆:
;|
2D GORE ELBOWS - MESH Entity
d = Duct Diameter
r = Throat Radius
q = Qty Of Gores
c = Center Point
s = Start Angle
b = Elbow Bend Angle
|;
;++++++++++++ Get Elbow Data +++++++++++++++++++++++++++++++++++++
(defun ge_get ()
(initget 7)
(setq d (getdist "\nDuct Diameter: "))
(setq rd (* d 1.5))
(initget 6)
(setq r (getdist (strcat "\nThroat Radius <" (rtos rd 2 2) ">: ")))
(or r (setq r rd))
(while (or (not q)
(< q 3))
(initget 7)
(setq q (getint "\nGore Qty - Min 3: ")))
(initget 1)
(setq c (getpoint "\nRadius Center Point: "))
(initget 1)
(setq s (getangle c "\nStart Angle: "))
(initget 6)
(setq b (getangle "\nElbow Included Bend Angle <90>: "))
(or b (setq b (* pi 0.5)))
(prin1))
;++++++++++++ Entity Construction ++++++++++++++++++++++++++++++++
(defun ge_con (d r q c s b / ga ha i ca c1 c2 p1 p2 pl1 pl2)
(setq ga (/ b (1- q))
ha (* ga 0.5)
i 0)
(repeat q
(setq ca (+ s (* ga i)))
(setq c1 (polar c ca r))
(setq c2 (polar c ca (+ r d)))
(setq p1 (polar c1 (- ca (* pi 0.5)) (if (= i 0) 0 (* (sin ha) r))))
(setq p2 (polar c2 (- ca (* pi 0.5)) (if (= i 0) 0 (* (sin ha) (+ r d)))))
(setq pl1 (cons p1 pl1)
pl2 (cons p2 pl2))
(setq i (1+ i)))
(setq pl1 (cons (polar c (+ s b) r) pl1)
pl2 (cons (polar c (+ s b) (+ r d)) pl2))
(entmake (list (cons 0 "POLYLINE")(cons 66 1)(cons 70 16)(list 10 0 0 0)
(cons 71 2)
(cons 72 (1+ q))))
(foreach v pl1
(entmake (list (cons 0 "VERTEX")(cons 70 64)(cons 10 v))))
(foreach v pl2
(entmake (list (cons 0 "VERTEX")(cons 70 64)(cons 10 v))))
(entmake (list (cons 0 "SEQEND"))))
;************ Main Program ***************************************
(defun c:gore (/ d rd r q c s b)
(ge_get)
(ge_con d r q c s b)
(prin1))
运行c:gore或向ge_con输入数据。
HTH公司
-大卫
很好的方法,大卫!
谢谢,但我已经有了这个问题的“最终”解决方案。你可以在这里看到:
https://lispbox.wordpress.com/2016/10/18/convert-radius-elbow-to-segmented-with-user-defined-number-of-segments/
页:
[1]
2