网站大量收购闲置独家精品文档,联系QQ:2885784924

【必威体育精装版精选】浅论换热器管板管孔布算法.doc

【必威体育精装版精选】浅论换热器管板管孔布算法.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【必威体育精装版精选】浅论换热器管板管孔布算法

浅论换热器圆形管板布管算法 基于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),然后根据排管方式确定最

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档