在VBA程序中,调用Documents集合的Add(Entity)方法,根据给定参数生成相应实体,然后将实体写入AtuoCAD系统的图形数据库。用户可以使用参数方法创建三维实体,若给定长度(Length)、宽度(Width)、高度(Height)或者中心(Center)、半径(Radius)等参数,即可创建长方体(Box)、圆柱体(Cylinder)、圆锥体(Cone)、圆环(Torus)、球体(Sphere)等基本实体,分别调用Acad3DSolid类的方法AddBox、AddCone、AddCylinder、AddTorus和AddSphere来生成。也可以在二维面域(Region)的基础上用拉伸(Extrude)或旋转(Revolved)的方法生成三维实体,分别调用AddExtrudeSolid,AddRevolved -Solid方法生成三维实体。还可以在已有的实体基础上通过布尔运算生成新的三维实体。
42 圆柱与圆柱相贯实体的生成
打开AtuoCAD的VBA程序“宏”或者按“Alt+F8”创建个新的“宏”程序,在用户窗体中绘出相应的控点,再在各个控点下设定相应的程序,用Add- Cylinder的方法生成两个圆柱实体,再用Rotate3D的方法旋转其中一个圆柱实体,最后用布尔运算让两个实体相贯。流程图如41所示。
图41 圆柱与圆柱相贯实体造型流程图
部分程序如下:
Private Sub CommandButton1_Click()
ThisDrawingApplicationDocumentsAdd
Dim pi As Double
Dim cylin1_r, cylin1_h As Double
Dim cylin2_r, cylin2_h As Double
Dim cylin1_obj As Acad3DSolid
Dim cylin2_obj As Acad3DSolid
Dim cylin1_cen(0 To 2) As Double
Dim cylin2_cen(0 To 2) As Double
Dim dist, cen_hi, theta As Double
pi = 4 Atn(1)
cylin1_r = Val(TextBox1Text)
cylin1_h = Val(TextBox2Text)
cylin2_r = Val(TextBox3Text)
cylin2_h = Val(TextBox4Text)
dist = Val(TextBox5Text)
cen_hi = Val(TextBox6Text)
theta = Val(TextBox7Text) pi / 180
'绘圆柱1
cylin1_cen(0) = 0
cylin1_cen(1) = 0
cylin1_cen(2) = cylin1_h / 2
Set cylin1_obj = ThisDrawingModelSpaceAddCylinder(cylin1_cen, cylin1_r, cylin1_h)
'绘圆柱2
cylin2_cen(0) = dist
cylin2_cen(1) = 0
cylin2_cen(2) = cen_hi
Set cylin2_obj = ThisDrawingModelSpaceAddCylinder(cylin2_cen, cylin2_r, cylin2_h)
Dim ax_p1(0 To 2) As Double
Dim ax_p2(0 To 2) As Double
ax_p1(0) = 1: ax_p1(1) = 0: ax_p1(2) = cen_hi
ax_p2(0) = 0: ax_p2(1) = 0: ax_p2(2) = cen_hi
'旋转圆柱2
cylin2_objRotate3D ax_p1, ax_p2, pi / 2 - theta
'圆柱1与圆柱2的布尔运算
cylin1_objBoolean acUnion, cylin2_obj
End Sub
用户界面如图41所示,生成的相贯实体如图42所示。
图42 绘制相贯实体及其展开图的用户界面
(a) 垂直交错 (b) 一般交错
图43 在AutoCAD环境下生成的相贯实体
5 圆柱与圆柱相贯线展开图的生成
在实际生产中,圆柱体与圆柱体相贯展开图可运用在管道间的连接焊点的确定,从而大量节约了时间与材料,实际运用非常广泛。在展开图中绘出众多相贯点从而确定展开图相贯线的轮廓。在图51中的P点是相贯线上的某一点,P的三维坐标是(x、y、z),通过已知条件求出P点坐标,过程如下:
图51 两圆柱相贯实体三视图
竖直圆柱 ①
水平圆柱 ②
改为参数方程形式 ③
将③中的 代入①中
如果
则
如果
则无解,表示此时不存在相贯线,两柱面不相交
图52 展开圆柱相贯线的计算模型
已知
如图52,相贯线展开图上某点P的坐标:
程序如下:
Private Sub CommandButton2_Click()
Dim pi As Double
Dim cylin1_r, cylin1_h As Double
Dim cylin2_r, cylin2_h As Double
Dim line_obj As AcadLine
Dim point_obj As AcadPoint
Dim dist, cen_hi, theta As Double
Dim pnt1(0 To 2) As Double
Dim pnt2(0 To 2) As Double
Dim pnt(0 To 2) As Double
pi = 4 Atn(1)
cylin1_r = Val(TextBox1Text)
cylin1_h = Val(TextBox2Text)
cylin2_r = Val(TextBox3Text)
cylin2_h = Val(TextBox4Text)
dist = Val(TextBox5Text)
cen_hi = Val(TextBox6Text)
theta = Val(TextBox7Text) pi / 180
pnt1(2) = 0: pnt2(2) = 0: pnt(2) = 0
'圆柱2展开图
ThisDrawingApplicationDocumentsAdd
pnt1(0) = -cylin2_h / 2: pnt1(1) = 0
pnt2(0) = cylin2_h / 2: pnt2(1) = 0
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt1(0) = cylin2_h / 2: pnt1(1) = 2 pi cylin2_r
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt2(0) = -cylin2_h / 2: pnt2(1) = 2 pi cylin2_r
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt1(0) = -cylin2_h / 2: pnt1(1) = 0
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
For beta = 0 To 2 pi Step 001
x = dist + cylin2_r Cos(beta)
z = cen_hi + cylin2_r Sin(beta)
delta2 = cylin1_r ^ 2 - x ^ 2
If delta2 >= 0 Then
y = Sqr(delta2)
pnt(0) = y: pnt(1) = cylin2_r beta
Set point_obj = ThisDrawingModelSpaceAddPoint(pnt)
pnt(0) = -y
Set point_obj = ThisDrawingModelSpaceAddPoint(pnt)
End If
Next beta
'圆柱1展开图
pnt1(0) = 400: pnt1(1) = 0
pnt2(0) = 400 + 2 pi cylin1_r: pnt2(1) = 0
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt1(0) = 400 + 2 pi cylin1_r: pnt1(1) = cylin1_h
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt2(0) = 400: pnt2(1) = cylin1_h
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
pnt1(0) = 400: pnt1(1) = 0
Set line_obj = ThisDrawingModelSpaceAddLine(pnt1, pnt2)
For phi = 0 To 2 pi Step 001
x = cylin1_r Cos(phi)
y = cylin1_r Sin(phi)
delta1 = cylin2_r ^ 2 - (x - dist) ^ 2
If delta1 >= 0 Then
z = cen_hi + Sqr(delta1)
pnt(0) = 400 + cylin1_r phi: pnt(1) = z
Set point_obj = ThisDrawingModelSpaceAddPoint(pnt)
z = cen_hi - Sqr(delta1)
pnt(1) = z
Set point_obj = ThisDrawingModelSpaceAddPoint(pnt)
End If
Next phi
End Sub
利用以上程序,在AutoCAD平台中生成的两垂直交错圆柱相贯线的展开图如图53所示。
(a) 水平圆柱展开图 (b) 竖直圆柱展开图
图53 在AutoCAD环境下生成的相贯线展开图
用并集命令可以将两个立体图形变成一个整体。快捷键为uni。变成一个整体后无法还原到两个实体的。就算炸开的话都不是原来的两个实体了。所以在要对两个立体图形进行布尔运算的时候要考虑清楚。不可逆的。
最简单、快速的CAD软件是“AutoPOL for Windows”,用它展开天圆地方的方法只要在“管件”中输入圆的直径、方的长度与宽度、天圆地方的高度、圆与方各向的偏移量、及材料厚度后立即出现其立体图,再按“展开”钮,立即得到展开图,该软件可免费下载,并有使用教材,重要的一点,该软件可以展开工程上常用的钣金件,并使你成为钣金专家。
你这如在CAD中纯用手工画展开放样图
那是很麻太困难了
但你这个大圆变两个小圆的构件
可用软件
钢构CAD
则只要输入参数就能自动出整体展开图了
还能同步自动给出下料图面积的
以上就是关于怎样在cad中画出xx实体的外轮廓展开图全部的内容,包括:怎样在cad中画出xx实体的外轮廓展开图、如何将一个CAD立体图形展开、天圆地方怎么用CAD画出展开图来 或者推荐一个软件也行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)