兰州人 发表于 2007-11-5 09:43:00

Auto CAD+Excel使用技巧与压力容器设计

通过本人对压力容器三维模型程序的研究,得出的结论是:+Excel技术是机械类设计工作者的必须掌握的基本,也是必须掌握生存手段之一。下图是本人采用Auto CAD+ Excel作为绘图手段的作品之一。

兰州人 发表于 2007-11-5 11:01:00

压力容器设计关键就是数据准备,采用交互式方法直接画图是目前通用的作法。几何形状相同尺寸有变化的压力容器零部件设计时,采用AutoCAD+Excel的手段参数化设计压力容器设计要比交互式AutoCAD设计,工作效率高,出图质量高是无庸质疑的结论。
1、AutoCAD
1.1 学习成本:AutoCad比其它制图软件应用要广泛的多,有广泛的群众基础,学习这个软件要比其它软件要方便的多,有老师教,同事之间可以相互交流,结论学习成本要比学其它软件低的多。
1.2 通用性:AutoCAD图形文件到全国各地任意工程单位都能打开,不需要转换,所谓比AutoCAD先进的软件(也不过是在某些特定行业,特定功能应用上),都必须要向AutoCAD靠拢,必须要有dwg输出格式。结论,dwg文件格式是当今通用的工程制图标准模式。
2、Excel
2.1 学习成本:在当今社会,不会Excel简直就不可能在这个行道有生存空间,设计就是天天和数据表格打交道。结论:数据表格处理,Excel是当今无论比学习成本最低的应用软件。
2.2 通用性,是台电脑就可以运行Excel,现在就连手机都可以用Excel.
结论:采用AutoCAD+Excel手段进行参数化设计,无论从学习成本和通用性角度出发,都是最优的选择。

兰州人 发表于 2007-11-7 08:30:00






计算如图所示的换热器管板交点(换热管开孔),可用以下程序解决。程序自动读出线段,并计算出交点的坐标。


Sub Example_IntersectWith()
    Dim xlApp As Object    ' This Line ,Not set Excel , run Excel
    'Dim xlsheet As Object
   
    ' 发生错误时跳到下一个语句继续执行
    On Error Resume Next
    ' 连接Excel应用程序
    Set xlApp = GetObject(, "Excel.Application")
   
    If Err.Number0 Then
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      xlApp.Workbooks.Add
    End If
    ' 返回当前活动的工作表
    'Set xlsheet = xlApp.ActiveSheet
    Set xlSheet = xlApp.sheets(1)
    ' This example creates a line and circle and finds the points at
    ' which they intersect.
    Dim oBject As AcadEntity, oBject1 As AcadEntity
    Dim ii As Integer, jj As Integer
    Dim Ppt As Variant
    nn = 1
    For ii = 0 To ThisDrawing.ModelSpace.Count - 1
      
      Set oBject = ThisDrawing.ModelSpace.Item(ii)
      
      For jj = 0 To ThisDrawing.ModelSpace.Count - 1
      Set oBject1 = ThisDrawing.ModelSpace.Item(jj)
      
      Ppt = oBject1.IntersectWith(oBject, acExtendOtherEntity)
      xlSheet.Cells(nn, 1).Value = Format(Ppt(0), "0.0")
      xlSheet.Cells(nn, 2).Value = Format(Ppt(1), "0.0")
      xlSheet.Cells(nn, 3).Value = Ppt(2)
      Debug.Print Ppt(0), Ppt(1), Ppt(2)
      Debug.Print nn, oBject.Handle, oBject1.Handle
      xlSheet.Cells(nn, 4).Value = nn
      nn = nn + 1
      Next jj
    Next ii
   
End Sub
在Excel中计算的结果。
交点坐标顺序X点Y点Z点第1点-743-37.60第2点-739-86.10第3点-738.6-300第4点-732.5-130.20第5点-724.1-1710第6点-721.300第7点-714-209.10第8点-706.6-300第9点-704300

兰州人 发表于 2007-11-7 21:24:00

上面程序运行在Excel结果如下。
   928.1201.20      666.4472.80819.6313.70928.1201.20   1239.25930      1051.1356.10   1239.25930   1002.6765.50
采用SQL - Select进行不重复数据处理。
Sub ls()
Dim Sql$   ', Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Set Cnn = CreateObject("ADODB.Connection")
Cnn.Open "Provider = MicroSoft.Jet.OLEDB.4.0; Extended Properties = Excel 8.0; Data Source = " & "k:\ls.xls"

Sql = "Select distinct * from "
Set Rst = Cnn.Execute(Sql)
Sheets(2).Range("A1").CopyFromRecordset Rst

End Sub
646.8282.10666.4472.80693.6737.80819.6313.70928.1201.201002.6765.501051.1356.101239.259301239.25930

兰州人 发表于 2007-11-17 11:03:00

ADO+EXCEL通用程序样版。
Sub ADORecordset()
    Dim Sql$
    Dim RST As New ADODB.Recordset '若要使用 RST.RecordCount 计算记录个数,此项必须,故一定要设置引用:
                                 'VBE 中菜单“工具-引用-Microsoft ActiveX Data Objects 2.0 Library”
                                                   '(1)定义对象
    Set Conn = CreateObject("adodb.connection")      '(2)设置 connection 对象
    Set RST = CreateObject("Adodb.Recordset")      '(3)设置 Recordset 对象
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
                                                   '(4)打开连接
    Sql = "Select * from where 字段='020009' or 字段='050023' or 字段='010024'"
                                                   '(5)设置 Sql 语句
    RST.Open Sql, Conn, adOpenStatic                  'adOpenStatic静态指针,以便计算记录个数
                                                   '(6)执行 Sql 语句
    MsgBox "找到" & RST.RecordCount & "个记录"      '(7)可使用 RST.RecordCount 得到记录个数
    Sheets(2).Range("a2").CopyFromRecordset RST      '(8)结果放置
    Sheets(2).Activate
   
    RST.Close: Conn.Close                            '(9)关闭连接
    Set RST = Nothing: Set Conn = Nothing            '(10)对象置空
End Sub
'使用 ADO-SQL 处理 EXCEL 文件的程序架构一
Sub ADOConn()
    Dim Sql$
    Set Conn = CreateObject("adodb.connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
    'Sql = "select * from where Part NO#='020009' or Part NO#='050023' or Part NO#='010024'"
    'Sql = "select PartNO from where PartNO='020009'"
    Sql = "Select * from where 字段='020009' or 字段='050023' or 字段='010024'"
    Sheets(2).Range("a2").CopyFromRecordset Conn.Execute(Sql)
    Sheets(2).Activate
    Conn.Close
    Set Conn = Nothing
End Sub

qxfeng 发表于 2007-11-25 20:02:00

赞兰州人,压力容器的设计确需要动脑筋。不知三维软件INVENTOR有没有研究过?也许能帮得上忙。

liushuaijie 发表于 2009-12-29 19:41:00

有图纸说明的吗?

kent1968 发表于 2010-10-15 14:41:00

学习了

254619324 发表于 2013-6-19 10:31:00

兰州人,对压力容器以及相关软件的开发,确实厉害,有你的好几个软件,在学习呢
页: [1]
查看完整版本: Auto CAD+Excel使用技巧与压力容器设计