地板辐射供暖加热管的VBA辅助设计
Sample Text介绍了一个用VBA编制的程序,用于AutoCAD绘制低温热水地板辐射供暖加热管的布置图时辅助计算加热管的长度。
由于低温热水地板辐射供暖具有卫生、舒适、节省空间、便于分户计量等特点,该供暖方式已在北方逐渐普及起来。暖通设计者在绘制工程图时,也需要绘制加热管的布置图。[低温热水地板辐射供暖应用技术规程]第4.3.3条规定:同一热媒集配装置系统各分支路的加热管长度宜尽量接近,并不宜超过120m。而为了保证加热管的寿命,每一个环路中,不应有接头。这就要求设计者在绘制管道布置图时控制加热管的长度。如供货的盘管为100m/盘,则要求设计者在设计环路将每个环路使用的加热管长度都控制在100m以内。既要避免因加热管太短而造成浪费,有要避免加热管超过100m使环路中有接头,以及由于各分支的加热管长度不同而造成的阻力不平衡。
一般利用AutoCAD绘图时,先绘制管道环路图再测量管道长度,这就要求设计者要一边绘图一边估计已采用加热管的总长,一旦估计错误则要重新绘图。利用VBA编程技术可以达到控制管道长度的目的。绘图时,先输入管道长度,每画完一条直管道,在AutoCAD的命令行会自动显示剩余长度,避免了绘图的盲目性。下面介绍该程序的编制和应用。
、编制程序
1)首先在AutoCAD窗口的“工具”选单中打开“宏/VisualBasic编辑器”进入VBA开发环境。
2)在VBA窗口的“视图”选单中选择“代码窗口”项,打开程序代码窗口。再在VBA窗口的“插入”选单中选择“过程”项,在工程中建立新的过程。在“添加过程”对话框设置新过程的名称、类型和范围,此设置名称为jrg,过程类型选择“子程序”,过程范围选择“公共的”。单击“确定”按钮,在代码窗口创建新 过程jrg如下图所示。过程的第一行和结束行自动产生。
http://images.blogcn.com/2006/4/19/12/cocofee,20060419223628.jpg
3)在程序代码窗口中,Pubilc Sub jrg()和End Sub之间输入程序代码并将其保存到指定位置。控制加热管长度的程序如下:
Public Sub jrg()
Dim startPnt As Variant
Dim endPnt As Variant
Dim aa(0 To 5) As Double
Dim prompt1 As String
Dim prompt2 As String
Dim line1 As AcadPolyline
Dim distance As Double
Dim a As String
Dim b As String
Dim keyWord As String
Dim pd As Boolean
prompt1 = vbCrLf & "Enter the start point of the line:"
prompt2 = vbCrLf & "Enter the end point of the line:"
distance = ThisDrawing.Utility.GetReal(vbCrLf & "Enter an length/mm")
scale1 = ThisDrawing.Utility.GetReal(vbCrLf & "Enter an scale:")
startPnt = ThisDrawing.Utility.GetPoint(, prompt1)
endPnt = ThisDrawing.Utility.GetPoint(startPnt, prompt2)
For i = 1 To 100000
aa(0) = startPnt(0)
aa(1) = startPnt(1)
aa(2) = startPnt(2)
aa(3) = endPnt(0)
aa(4) = endPnt(1)
aa(5) = endPnt(2)
Set line1 = ThisDrawing.ModelSpace.AddPolyline(aa)
Length = Sqr((aa(0) - aa(3)) * (aa(0) - aa(3)) + (aa(1) - aa(4)) * (aa(1) - aa(4)) + (aa(2) - aa(5)) * (aa(2) - aa(5)))
distance = distance - Length * scale1
If distance < 0 And (Not pd) Then
h = MsgBox("剩余长度小于0,是否退出?", vbYesNo, "警告")
If h = vbYes Then
GoTo 100
Else
pd = True
End If
End If
startPnt = endPnt
a = distance / 1000
On Error GoTo 100
endPnt = ThisDrawing.Utility.GetPoint(endPnt, "剩余长度" + a + "输入如下一点")
On Error GoTo 100
Next i
100
End Sub
2 使用程序
在AutoCAD窗口的“工具”选单中打开“宏/宏”对话框,单击“运行”按钮。则在AutoCAD的命令行出现命令”Enter an Length/mm:“这是程序设计中要求每个环路使用的命令(要求以mm为单位)。如果要求每个环路使用的加热管长度都在100m以下,则输入100000,回车后出现”Enter an scale:“
即输入100,回车后出现”Enter the start point of the line:“便可以绘制加热管线。
[ 本帖最后由 summerfly2008 于 2006-4-21 19:30 编辑 ] 继续坚持下去 楼主怎么没下文了啊我需要编个统计图中所有线段长度的程序 学习 学习 谢谢!只可惜!我不会呀! 不要说会了,我看都看不懂 这东西对我很有用,尽管已经很古老了,但还谢了! 楼主此程序里面好像缺点什么东西,
达不到我们设计地暖管时能够知道剩余管的长度,
可不可以帮忙再找些这方面的东西。
谢谢!
页:
[1]