top
Loading...
VB控制AutoCAD繪制三維分形圖案
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。

摘要: 本文介紹AutoCAD2000與VB以Active Automation實現連接,實現可編程CAD設計在分形圖案設計領域的應用。

關鍵詞: 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:cappfractal.dwg′)
'執行ActiveDocument對象的SaveAs方法
exportFile := ′d:cappfractal′

將AutoCAD應用程序關閉使用Quit方法:acadApp.Quit. :Set acadApp =Nothing

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(交運算)

圖例如下:

  



 

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗