前言:本站为你精心整理了VB控制AutoCAD绘制三维分形图案范文,希望能为你的创作提供参考价值,我们的客服老师可以帮助你提供个性化的参考范文,欢迎咨询。
摘要:本文介绍autocad2000与vb以ActiveAutomation实现连接,实现可编程CAD设计在分形图案设计领域的应用。
关键词:AutoCAD2000;OLEAutomation;
1.引言
大量分形例子是由数学方法,特别是迭代和递归算法产生出来的图形或图象。不论是自然界中的个体分形形态,还是数学方法产生的分形图案,都有无穷嵌套、细分再细分的自相似的几何结构,并是个动态过程[1]。在AutoCAD里使用手工绘图无法实现这种复杂、动态、多向、结合数学运算的设计。
在VB中利用ActiveAutomation技术可实现可编程设计,符合分形图案的在三维空间的展现。AutoCAD有丰富的线,面,体的构筑功能,如B样条曲线(在CAD里定为Spline),布尔运算,实体挤压技术,在AutoCAD里可轻易实现,并突破传统的二维空间分形,使分形图案在三维世界里更加绚丽。
2.AutoCAD与VB的ActiveXAutomation连接技术
为使用AutoCAD的Auotomation对象,必须首先在VisualBasic6.0中引用该对象类型库acad.tlb,并连接如下[1]:
subMain()
PublicacadAppAsObject‘AutoCAD的application对象
PublicacadDocAsObject‘AutoCADdocument对象
PublicmoSpaceAsObject‘Modelspace模型空间对象集合
PublicpaSpaceAsObject‘PaperSace图纸空间对象集合
OnErrorResumeNext
SetacadApp=GetObject(,”AutoCAD.Application”)
IfErrThen
Err.Clear
SetacadApp=CreateObject(“AutoCAD.Application”)
IfErrThen
MsgboxErr.description
ExitSub
EndIf
Endif
Endsub
在存储及绘图模板使用如下[3]:
acadDoc.activedocument.SaveAs(′d:\capp\fractal.dwg′)
’执行ActiveDocument对象的SaveAs方法
exportFile:=′d:\capp\fractal′
将AutoCAD应用程序关闭使用Quit方法:acadApp.Quit.:SetacadApp=Nothing
3.AutoCAD中图形的创建
各类线创建:1)AddLine;2)AddLightweightPolyline;3)AddMLine;4)AddPolyline;
5)AddArc;6)AddCircle;7)AddEllipse;
8)AddSpline:二,三次NURBS(nonuniformrationalB-spline)曲线.
各类面创建:1)Add3Dface;2)AddPolyfaceMesh;3)AddPolygonMesh;4)AddSolid
各类体创建:1)AddBox;2)AddCone;3)AddCylinder;4)AddEllipticalCone;5)AddSphere;
6)AddTorus7)AddExtrudesolid;8)AddWedge;9)AddRevolveSolid;
10)AddElliptcalCylinder;11)AddextrudeSolidAlongPath
样条曲线实例:SubCreateSpline()
DimsplineObjAsAcadSpline
DimnoOfPointsAsInteger
DimstartTan(0To2)AsDouble
DimendTan(0To2)AsDouble
DimfitPoints(0To8)AsDouble
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
SetsplineObj=moSpace.AddSpline(fitPoints,startTan,endTan)
ZoomAll
EndSub
4.三维谢氏塔的自相似结构:
三棱锥型的创建法:1)生成三维线(Add3Dpolyline);
2)产生区域(AddRegion)后通过挤压(AddExtrudedSolid)
subCreatePyramid()
DimpolyObjAsAcad3Dpolyline
Dimpoints(0To11)AsDouble
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
SetpolyObj=moSpace.Add3Dpolyline(poits)
DimregionObjAsVariant
SetRegionObj=moSpace.AddRegion(polyObj)
DimheightAsDouble
DimtaperAngleAsDouble
height=255:taperAngle=
DimsolidObjAsAcad3Dsoild
SetsolidObj=moSpace.AddExtrudeSolid(regionObj,height,taperAngle)
Endsub
布尔运算法语法为:solidObj1.BooleanacUnion,solidObj2(并运算)
solidObj1.BooleanacIntersection,solidObj2(交运算)
参考文献
[1]刘华杰.分形艺术,湖南电子音像出版社1997年
[2]王珏.用VBA开发AutoCAD2000应用程序人民邮电出版社,1999
[3]刘艳斌等.OLEAutomation技术在CAD/CAPP基成中的应用.计算机应用2000.Vol.4