VB 控制AutoCAD绘制三维分形图案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关键词: AutoCAD2000;OLE Automation;

1. 引言

大量分形例子是由数学方法,特别是迭代和递归算法产生出来的图形或图象。不论是自然界中的个体分形形态,还是数学方法产生的分形图案,都有无穷嵌套、细分再细分的自相似的几何结构,并是个动态过程。在AutoCAD里使用手工绘图无法实现这种复杂、动态、多向、结合数学运算的设计。

在VB中利用Active Automation技术可实现可编程设计,符合分形图案的在三维空间的展现。AutoCAD有丰富的线,面,体的构筑功能,如B样条曲线(在CAD里定为Spline),布尔运算,实体挤压技术,在AutoCAD里可轻易实现,并突破传统的二维空间分形,使分形图案在三维世界里更加绚丽。



2. AutoCAD与VB的ActiveX Automation 连接技术

为使用AutoCAD的Auotomation对象,必须首先在Visual Basic 6.0中引用该对象类型库acad.tlb ,并连接如下:


sub Main()
 Public acadApp As Object 'AutoCAD 的application对象
 Public acadDoc As Object 'AutoCAD document对象
 Public moSpace As Object 'Modelspace 模型空间对象集合
 Public paSpace As Object 'PaperSace 图纸空间对象集合
 On Error Resume Next
 Set acadApp = GetObject(," AutoCAD.Application")
 If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
Msgbox Err.description
Exit Sub
End If
 End if
End sub

在存储及绘图模板使用如下:


acadDoc.activedocument.SaveAs(′d:\capp\fractal.dwg′)
'执行ActiveDocument对象的SaveAs方法
exportFile := ′d:\capp\fractal′

将AutoCAD应用程序关闭使用Quit方法:acadApp.Quit. :Set acadApp =Nothing

VB 控制AutoCAD绘制三维分形图案
2004-02-10 11:22作者:ZHANGJ出处:论坛责任编辑:方舟 3. AutoCAD中图形的创建

各类线创建:

1)AddLine;

2)AddLightweightPolyline;

3)AddMLine;

4)AddPolyline;

5) AddArc;

6) AddCircle;

7) AddEllipse;

8)AddSpline:二,三次 NURBS (nonuniform rational B-spline) 曲线。

各类面创建:

1)Add3Dface;

2)AddPolyfaceMesh;

3)AddPolygonMesh;

4)AddSolid

各类体创建:

1)AddBox;

2) AddCone;

3)AddCylinder;

4)AddEllipticalCone;

5)AddSphere;

6)AddTorus;

7) AddExtrudesolid;

8)AddWedge;

9)AddRevolveSolid;

10)AddElliptcalCylinder;

11)AddextrudeSolidAlongPath

样条曲线实例:


Sub CreateSpline()
 Dim splineObj As AcadSpline
 Dim noOfPoints As Integer
 Dim startTan(0 To 2) As Double
 Dim endTan(0 To 2) As Double
 Dim fitPoints(0 To 8) As Double
 noOfPoints = 3
 startTan(0) =

0.5: startTan(1) = 0.5: startTan(2) = 0
 endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0
 fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0
 fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0
 fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0
 Set splineObj =moSpace.AddSpline (fitPoints, startTan, endTan)
 ZoomAll
End Sub

4.三维谢氏塔的自相似结构:

三棱锥型的创建法:

1)生成三维线(Add3Dpolyline);

2)产生区域(AddRegion)后通过挤压(AddExtrudedSolid)


sub CreatePyramid()
 Dim polyObj As Acad3Dpolyline
 Dim points(0 To 11) As Double
 Point(0)=0: Point(1)=0: Point(2)=0
 Point(3)=255: Point(4)=0: Point(5)=0
 Point(6)=128: Point(7)=221.7025: Point(8)=0
 Point(9)=0: Point(10)=0: Point(11)=0
 Set polyObj=moSpace.Add3Dpolyline(poits)
 Dim regionObj As Variant
 Set RegionObj=moSpace.AddRegion(polyObj)
 Dim height As Double
 Dim taperAngle As Double
 height=255:taperAngle=
 Dim solidObj As Acad3Dsoild
 Set solidObj=moSpace.AddExtrudeSolid(regionObj,height,taperAngle)
End sub

布尔运算法语法为:solidObj1.Boolean acUnion,solidObj2(并运算)
solidObj1.Boolean acIntersection,solidObj2(交运算)

图例如下:





相关文档
最新文档