明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6585|回复: 8

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

[复制链接]
发表于 2007-11-5 09:43 | 显示全部楼层 |阅读模式

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

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-11-5 11:01 | 显示全部楼层

压力容器设计关键就是数据准备,采用交互式方法直接画图是目前通用的作法。几何形状相同尺寸有变化的压力容器零部件设计时,采用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 | 显示全部楼层
本帖最后由 作者 于 2007-11-7 8:48:20 编辑

  
计算如图所示的换热器管板交点(换热管开孔),可用以下程序解决。程序自动读出线段,并计算出交点的坐标。
  1. Sub Example_IntersectWith()
  2.     Dim xlApp As Object    ' This Line ,Not set Excel , run Excel
  3.     'Dim xlsheet As Object
  4.    
  5.     ' 发生错误时跳到下一个语句继续执行
  6.     On Error Resume Next
  7.     ' 连接Excel应用程序
  8.     Set xlApp = GetObject(, "Excel.Application")
  9.    
  10.     If Err.Number <> 0 Then
  11.         Set xlApp = CreateObject("Excel.Application")
  12.         xlApp.Visible = True
  13.         xlApp.Workbooks.Add
  14.     End If
  15.     ' 返回当前活动的工作表
  16.     'Set xlsheet = xlApp.ActiveSheet
  17.     Set xlSheet = xlApp.sheets(1)
  18.     ' This example creates a line and circle and finds the points at
  19.     ' which they intersect.
  20.     Dim oBject As AcadEntity, oBject1 As AcadEntity
  21.     Dim ii As Integer, jj As Integer
  22.     Dim Ppt As Variant
  23.     nn = 1
  24.     For ii = 0 To ThisDrawing.ModelSpace.Count - 1
  25.       
  26.       Set oBject = ThisDrawing.ModelSpace.Item(ii)
  27.       
  28.       For jj = 0 To ThisDrawing.ModelSpace.Count - 1
  29.         Set oBject1 = ThisDrawing.ModelSpace.Item(jj)
  30.       
  31.         Ppt = oBject1.IntersectWith(oBject, acExtendOtherEntity)
  32.         xlSheet.Cells(nn, 1).Value = Format(Ppt(0), "0.0")
  33.         xlSheet.Cells(nn, 2).Value = Format(Ppt(1), "0.0")
  34.         xlSheet.Cells(nn, 3).Value = Ppt(2)
  35.         Debug.Print Ppt(0), Ppt(1), Ppt(2)
  36.         Debug.Print nn, oBject.Handle, oBject1.Handle
  37.         xlSheet.Cells(nn, 4).Value = nn
  38.         nn = nn + 1
  39.       Next jj
  40.     Next ii
  41.    
  42. 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-11-7 21:24 | 显示全部楼层

上面程序运行在Excel结果如下。

   
928.1201.20
   
   
666.4472.80
819.6313.70
928.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 [Sheet1$]"
  Set Rst = Cnn.Execute(Sql)
  Sheets(2).Range("A1").CopyFromRecordset Rst
 
End Sub

646.8282.10
666.4472.80
693.6737.80
819.6313.70
928.1201.20
1002.6765.50
1051.1356.10
1239.25930
1239.25930


 楼主| 发表于 2007-11-17 11:03 | 显示全部楼层

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 [Sheet1$] 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 [Sheet1$] where Part NO#='020009' or Part NO#='050023' or Part NO#='010024'"
    'Sql = "select PartNO from [Sheet1$] where PartNO='020009'"
    Sql = "Select * from [Sheet1$] where 字段='020009' or 字段='050023' or 字段='010024'"
    Sheets(2).Range("a2").CopyFromRecordset Conn.Execute(Sql)
    Sheets(2).Activate
    Conn.Close
    Set Conn = Nothing
End Sub

发表于 2007-11-25 20:02 | 显示全部楼层
赞兰州人,压力容器的设计确需要动脑筋。不知三维软件INVENTOR有没有研究过?也许能帮得上忙。
发表于 2009-12-29 19:41 | 显示全部楼层

有图纸说明的吗?

发表于 2010-10-15 14:41 | 显示全部楼层
学习了
发表于 2013-6-19 10:31 | 显示全部楼层
兰州人,对压力容器以及相关软件的开发,确实厉害,有你的好几个软件,在学习呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 23:06 , Processed in 1.477306 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表