- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅论换热器管板管孔布算法
浅论换热器圆形管板布管算法
基于AutoCAD的VBA的算法例程
内容摘要:本文介绍了AutoCAD的VBA的一个算法例程。 关键词:AutoCADAutoCAD的VBA。这样,布管的成果可以直接应用到图纸中去。
现今的计算机工业设计软件已经有了许多用于布管的程序,并且大型的设计系统也包括有布管的部分。但对于只需要布管运算的低端应用,在AutoCAD上的扩展程序并不多见。现有的扩展程序在绘制图形时都会自动生成相应的线形图层。这不仅使得图层繁复,打印容易出错,而且每个人都有自己的图层使用习惯,程序生成的图形可能会与使用者的原图纸图样显得格格不入。基于这样现状,我决定按照自己的算法写一个例程。这个例程不创建新的图层,而是由使用者来选择已有的图层进行图样的绘制。
程序所使用的术语
中心孔位置:最接近布管圆圆心的管孔的横向位置,分为跨中和居中两种。
中心管纵向间距:由垂直直径分开的管孔间距,如果为0,则表示垂直直径上可以布管。
中心管横向间距:由水平直径分开的管孔间距,如果为0,则表示水平直径上可以布管。
目标平台的选择
对于直接在AutoCAD上进行的二次开发,其所使用的语言有AutoLisp和VBA之分。AutoLisp是AutoDesk公司自家开发的语言,比VBA更接近AutoCAD系统AutoCAD的功能。但VBA也有自己的优势,它的数据种类多于VBA语言对对话框设计能力Private Sub UserForm_Initialize()
相应的初始化
排布方式.Clear
排布方式.AddItem 三角排列, 0
排布方式.AddItem 正方排列, 1
排布方式.ListIndex = 0
中心孔位置.Clear
中心孔位置.AddItem 跨中, 0
中心孔位置.AddItem 居中, 1
中心孔位置.ListIndex = 0
Dim i As Integer
中心线图层.Clear
轮廓线图层.Clear
For i = 0 To ThisDrawing.Layers.Count - 1
中心线图层.AddItem ThisDrawing.Layers.Item(i).Name, i
轮廓线图层.AddItem ThisDrawing.Layers.Item(i).Name, i
Next
End Sub
通过对ThisDrawing.Layers属性的操作,可以得到当前AutoCAD图形的图层设置信息,并将此信息(图层的名字)添加到下拉列表框中。当改变下拉列表框的选择后,就可以使用如下代码对图层进行选择:
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item(中心线图层.ListIndex)
当使用者填入所有信息后,就可以单击“开始绘图”按钮进行图样的绘制,当绘制完成后,布管的数量将会在窗口界面左下的信息框里显示出来(未布管前显示:待排管)。
在整个布管及绘制图样的流程中,主要有这四个主要步骤:
1.)进行数据检查
对用户输入的数据进行合法性和合理性的检查,比如输入的数据均需为正,且管间距需大于管孔直径、布管圆直径需大于管孔直径等等。如果数据不正确或不合理将提醒用户进行改进。
此处也可以根据相关标准对数据进行检查,比如根据GB151,管间距推荐为管孔直径的1.25倍等。
2.)定义相应数据结构
Type FPoint
X as double
Y as double
End type
Dim number As Integer ’记录管孔数量的变量
Dim 纵向最大管数 As Integer
Dim 横向最大管数 As Integer
If 排布方式.ListIndex = 0 Then
三角排布
纵向最大管数 = CInt((CDbl(布管圆直径.Text) / 2 – CDbl(_
中心管纵向间距.Text) / 2) / ((CDbl(管间距.Text)) / 2_
)* Tan(Pi / 3))
Else
正方排布
纵向最大管数 = CInt((CDbl(布管圆直径.Text) / 2 - CDbl(_
中心管纵向间距.Text) / 2) / CDbl(管间距.Text))
End If
横向最大管数 = CInt((CDbl(布管圆直径.Text) / 2 - CDbl(中心管横向间距.Text) / 2) / CDbl(管间距.Text))
ReDim 管孔位置(0 To 纵向最大管数 - 1, 0 To 横向最大管数 - 1) As FPoint
ReDim 管孔存在(0 To 纵向最大管数 - 1, 0 To 横向最大管数 - 1) As Boolean
首先定义的是点的数据类型(FPoint),然后根据排管方式确定最
您可能关注的文档
最近下载
- 猎豹-CS10-产品使用说明书-2.0T 6MT至尊版 -CFA6460AQ-CS10用户手册1.pdf VIP
- 2024年湖北省生态环境监测专业技术人员大比武竞赛考试题库(含答案).docx VIP
- 加油站安全生产考试题及答案.docx VIP
- 迅达9300扶梯安装说明.pdf VIP
- 医院信息化管理资金申请报告.docx
- 台达变频器cp2000使用说明书新.pdf
- 第三届全国沼气生产职业技能竞赛广西夺冠-农业部.PDF VIP
- GB15558.3__燃气用埋地聚乙烯(PE)管道系统 第3部分:阀门.pdf VIP
- 高速公路项目危险源及重大危险源清单.docx VIP
- 2025年交管12123驾驶证学法减分题库含答案大全.pdf
文档评论(0)