|
摘要: 本文介紹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(交運算)
圖例如下:
| |