




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 創(chuàng)建基本圖形對(duì)象,主講人:李恒凱 聯(lián)系電話電子郵件: QQ:20297327,本次課內(nèi)容,1 直線 2 圓、圓弧、橢圓和樣條曲線 3 多段線、文字、填充和表格 4 面域和三維實(shí)體 5 尺寸標(biāo)注,1 直線,說(shuō)明 思路 步驟 效果 小結(jié),說(shuō)明,創(chuàng)建基本圖形對(duì)象,從創(chuàng)建直線開(kāi)始。 本節(jié)程序運(yùn)行的結(jié)果是在AutoCAD 2008中創(chuàng)建兩條直線。 通過(guò)這個(gè)程序,我們將要開(kāi)始了解AutoCAD數(shù)據(jù)庫(kù)的基本結(jié)構(gòu),掌握各種圖形對(duì)象的創(chuàng)建方法。,思路,NET的操作機(jī)理是完全不同于VBA的,但和傳統(tǒng)的ObjectARX卻很相似。 表。表是數(shù)據(jù)庫(kù)的組成單位,一個(gè)數(shù)據(jù)庫(kù)至少包含一個(gè)表
2、。 記錄。記錄是表的組成單位,一個(gè)表可能包含多條記錄,也可能不包含任何記錄。,具體思路,步驟,CommandMethod(FirstLine) public void TestLine() Database db = HostApplicationServices.WorkingDatabase; Point3d pt1 = new Point3d(300, 100, 0); Point3d pt2 = new Point3d(900, 500, 0); Line lineEnt = new Line(pt1, pt2); using (Transaction trans = db.Trans
3、actionManager.StartTransaction() BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEntity(lineEnt); trans.AddNewlyCreatedDBObject(lineEnt, true); trans.
4、Commit(); ,步驟,在.NET中,有關(guān)數(shù)據(jù)庫(kù)的操作都是通過(guò)事務(wù)處理進(jìn)行的。 在內(nèi)存中創(chuàng)建直線后,在圖形窗口并不能顯示出來(lái),只有把直線加到圖形數(shù)據(jù)庫(kù)中,才能看到。 事務(wù)處理Transaction類的GetObject函數(shù)的作用是獲取駐留在AutoCAD數(shù)據(jù)庫(kù)中的對(duì)象,因?yàn)檫@些對(duì)象是不能直接訪問(wèn)的。,步驟,啟動(dòng)AutoCAD后,其塊表中會(huì)自動(dòng)生成三條記錄,分別表示模型空間和兩個(gè)布局。 為提高代碼的重用性,可以把代碼重新組織,封裝成函數(shù)。,改進(jìn)后代碼,public static ObjectId AddLine(Point3d pt1, Point3d pt2) Line et = new
5、Line(pt1, pt2); ObjectId etID = AppendEntity(et); return etID; public static ObjectId AppendEntity(Entity et) Database db = HostApplicationServices.WorkingDatabase; ObjectId etID; using (Transaction trans = db.TransactionManager.StartTransaction() BlockTable bt = (BlockTable)trans.GetObject(db.Block
6、TableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); etID = btr.AppendEntity(et); trans.AddNewlyCreatedDBObject(et, true) trans.Commit(); return etID; ,改進(jìn)后代碼,CommandMethod(netLine) public void CreateLine() ObjectId et
7、ID = ModelSpace.AddLine(new Point3d(20, 10, 0), new Point3d(90, 50, 0); ,具體代碼見(jiàn)VS.NET,效果,小結(jié),理解NET中創(chuàng)建圖形對(duì)象的基本機(jī)理。 掌握直線對(duì)象的構(gòu)造函數(shù)。 獲取塊表、塊表記錄的方法。,2 圓、圓弧、橢圓和樣條曲線,思路 步驟 效果 小結(jié),思路,在NET中,Circle類用來(lái)表示圓。創(chuàng)建圓的構(gòu)造函數(shù)有兩種重載形式。 public Circle() public Circle(Autodesk.AutoCAD.Geometry.Point3d center, Autodesk.AutoCAD.Geometry
8、.Vector3d normal, double radius) 第一種重載形式不接受任何參數(shù), 創(chuàng)建一個(gè)圓心為(0,0,0)、半徑為0的圓, 其所在平面法向矢量為(0,0,i); 第二種重載形式則接受了圓心、圓所在平面法向矢量和半徑三個(gè)參數(shù)。,思路,通過(guò)圓周上任意三點(diǎn)創(chuàng)建圓, 如果用數(shù)學(xué)計(jì)算的方法求出圓心和半徑, 則過(guò)于麻煩,方便快捷的方法是用Geometry命名空間中的CircularArc2d類來(lái)處理。 public CircularArc2d(Autodesk.AutoCAD.Geometry.Point2d startPoint, Autodesk.AutoCAD.Geometry.
9、Point2d point, Autodesk.AutoCAD.Geometry.Point2d endPoint),思路,對(duì)于圓弧,有三種構(gòu)造形式。,public Arc(Autodesk.AutoCAD.Geometry.Point3d center, double radius, double startAngle, double endAngle) public Arc() public Arc(Autodesk.AutoCAD.Geometry.Point3d center, Autodesk.AutoCAD.Geometry.Vector3d normal, double radi
10、us, double startAngle, double endAngle),思路,對(duì)于橢圓對(duì)象,有兩種構(gòu)造函數(shù)。 public Ellipse() public Ellipse(Autodesk.AutoCAD.Geometry.Point3d center, Autodesk.AutoCAD.Geometry.Vector3d unitNormal, Autodesk.AutoCAD.Geometry.Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle) 函數(shù)接收的6個(gè)參數(shù)分別是橢圓的中心點(diǎn)
11、、所在平面的法向矢量、中心點(diǎn)到長(zhǎng)軸的方向矢量、半徑比例、起始角度和終止角度。,思路,樣條曲線在.net中用Spline類表示。 public Spline() public Spline(Autodesk.AutoCAD.Geometry.Point3dCollection point, int order, double fitTolerance) public Spline(Autodesk.AutoCAD.Geometry.Point3dCollection point, Autodesk.AutoCAD.Geometry.Vector3d startTangent, Autodesk.
12、AutoCAD.Geometry.Vector3d endTangent, int order, double fitTolerance) public Spline(int degree, bool rational, bool closed, bool periodic, Autodesk.AutoCAD.Geometry.Point3dCollection controlPoints, Autodesk.AutoCAD.Geometry.DoubleCollection knots, Autodesk.AutoCAD.Geometry.DoubleCollection weights,
13、double controlPointTolerance, double knotTolerance) public Spline(Autodesk.AutoCAD.Geometry.Point3d center, Autodesk.AutoCAD.Geometry.Vector3d unitNormal, Autodesk.AutoCAD.Geometry.Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle),步驟,創(chuàng)建項(xiàng)目文件 重載AddCircle函數(shù),用于通過(guò)三點(diǎn)畫(huà)圓 添加函數(shù)AddArc
14、,用于創(chuàng)建圓弧 添加函數(shù)AddEllipse,用于創(chuàng)建橢圓 添加函數(shù)AddSpline,用于創(chuàng)建樣條曲線 添加一個(gè)角度值轉(zhuǎn)換為弧度值的函數(shù),具體代碼 見(jiàn)VS.NET,效果,注冊(cè)命令netCircle 注冊(cè)命令netCircle3p 注冊(cè)命令netArc 注冊(cè)命令netEllipse 注冊(cè)命令netSpline,小結(jié),在封裝代碼時(shí),注意函數(shù)重載的使用。 使用幾何類,實(shí)現(xiàn)三點(diǎn)法創(chuàng)建圓。 圓、圓弧和樣條曲線的構(gòu)造函數(shù)。,3 多段線、文字、填充的表格,思路 步驟 效果 小結(jié),思路,.NET中提供了三種多段線的相關(guān)類Polyline、Polyline2d和Polyline3d。,public Polyl
15、ine() public Polyline(int vertices) public Polyline2d() public Polyline2d(Autodesk.AutoCAD.DatabaseServices.Poly2dType type, Autodesk.AutoCAD.Geometry.Point3dCollection vertices, double elevation, bool closed, double startWidth, double endWidth, Autodesk.AutoCAD.Geometry.DoubleCollection bulges) pub
16、lic Polyline3d() Public Polyline3d(Autodesk.AutoCAD.DatabaseServices.Poly3dType type, Autodesk.AutoCAD.Geometry.Point3dCollection vertices, bool closed),思路,.NET中提供了兩種文字的相關(guān)類,分別是DBText(單行文字)和MText(多行文字)。,public DBText() public MText(),用構(gòu)造函數(shù)創(chuàng)建單行文字后,需對(duì)其插入點(diǎn)、文字內(nèi)容、文字樣式、文字高度、傾斜角度和旋轉(zhuǎn)角度進(jìn)行設(shè)置。,思路,圖案填充和漸變色填充都是Ha
17、tch類,該類的構(gòu)造函數(shù)僅創(chuàng)建一個(gè)空的填充對(duì)象,所以還需要對(duì)填充類型、樣式、圖案名稱、填充角度、邊界等屬性加以填充。 表格類是Table,用構(gòu)造函數(shù)創(chuàng)建表格后,還需要添加行、列和所要填寫(xiě)的文字。,步驟,添加AddPline函數(shù) 添加Add3dPoly函數(shù) 添加AddText函數(shù) 添加AddMtext函數(shù) 添加AddHatch函數(shù) 重載AddHatch函數(shù),具體代碼 見(jiàn)VS.NET,效果,小結(jié),多段線、單行文字、多行文字、表格和圖案填充的實(shí)現(xiàn)方法。 使用TryCatchFinally語(yǔ)句進(jìn)行錯(cuò)誤處理。 多行文字特殊形式的實(shí)現(xiàn)方法。,4 面域和三維實(shí)體,思路 步驟 效果 小結(jié),思路,Region類
18、代表AutoCAD中的面域。在NET中創(chuàng)建面域?qū)ο蟊容^特別, 它不是利用構(gòu)造函數(shù)來(lái)完成對(duì)象的創(chuàng)建,而是使用Region類中的一個(gè)函數(shù)CreateFromCurves來(lái)完成。,public static Autodesk.AutoCAD.DatabaseServices.DBObjectCollection CreateFromCurves(Autodesk.AutoCAD.DatabaseServices.DBObjectCollection curveSegments),curveSegments是一個(gè)曲線實(shí)體的集合對(duì)象,用來(lái)定義面域的邊界,作為面域邊界的曲線必須首尾相連;函數(shù)返回指向新創(chuàng)建
19、的面域的對(duì)象集合。,思路,Solid3d類僅提供了一個(gè)不包含任何參數(shù)的構(gòu)造函數(shù),用于創(chuàng)建一個(gè)“空”實(shí)體,在構(gòu)造Solid3d對(duì)象之后,必須使用其成員函數(shù)來(lái)完成實(shí)體的創(chuàng)建。 CreateBox過(guò)程用于創(chuàng)建長(zhǎng)方體。,public virtual void CreateBox(double lengthAlongX, double lengthAlongY, double lengthAlongZ),思路,NET中并未直接提供創(chuàng)建圓錐體的方法, 而是將其包含在創(chuàng)建平截頭體(圓柱體和圓錐體都是其中的一種)的CreateFrustum函數(shù)中。,public virtual void CreateFrus
20、tum(double height, double radiusAlongX, double radiusAlongY, double topRadius),思路,Solid3d類中的ExtrudeAlongPath過(guò)程用于拉伸面域創(chuàng)建一個(gè)實(shí)體。 public virtual void ExtrudeAlongPath(Autodesk.AutoCAD.DatabaseServices.Region region, Autodesk.AutoCAD.DatabaseServices.Curve path, double taperAngle),思路,Solid3d類中的Revolve過(guò)程用于繞
21、給定的軸線旋轉(zhuǎn)面域而生成實(shí)體。 public virtual void Revolve (Autodesk.AutoCAD.DatabaseServices.Region region, Autodesk.AutoCAD.Geometry.Point3d axisPoint, Autodesk.AutoCAD.Geometry.Vector3d axisDir, double angleOfRevolution),思路,Solid3d類中的Boo1eanOperation過(guò)程用于在兩個(gè)實(shí)體(或面域)之間布爾運(yùn)算。 public virtual void BooleanOperation (Au
22、todesk.AutoCAD.DatabaseServices.BooleanOperationType operation, Autodesk.AutoCAD.DatabaseServices.Solid3d solid),步驟,添加AddRegion函數(shù) 添加AddBox函數(shù) 添加AddCone函數(shù) 添加AddExtrudedSolid函數(shù) 添加AddRevolveSolid函數(shù),具體代碼 見(jiàn)VS.NET,效果,小結(jié),熟練掌握面域和各種三維實(shí)體對(duì)象的創(chuàng)建方法。,5 尺寸標(biāo)注,說(shuō)明 思路 步驟 效果 小結(jié),說(shuō)明,介紹了20個(gè)用于尺寸標(biāo)注的函數(shù),包括轉(zhuǎn)角標(biāo)注、對(duì)齊標(biāo)注、角度標(biāo)注、半徑標(biāo)注、直徑
23、標(biāo)注、坐標(biāo)標(biāo)注、弧長(zhǎng)標(biāo)注、引線標(biāo)注和形位公差標(biāo)注的函數(shù)。這些函數(shù)分別封裝了系統(tǒng)提供的一些基本方法,并在實(shí)用性上進(jìn)行了一些擴(kuò)充。,思路,轉(zhuǎn)角標(biāo)注(RotatedDimension) RotatedDimension類對(duì)應(yīng)轉(zhuǎn)角標(biāo)注,該類的構(gòu)造函數(shù)接受6個(gè)參數(shù):尺寸線旋轉(zhuǎn)角度、第一條尺寸界線原點(diǎn)、第二條尺寸界線原點(diǎn)、尺寸文本位置、尺寸文本和標(biāo)注樣式。,對(duì)齊標(biāo)注(AlignedDimension),AlignedDimension類對(duì)應(yīng)的是對(duì)齊標(biāo)注,該類的構(gòu)造函數(shù)接受5個(gè)參數(shù):第一條尺寸界線原點(diǎn)、第二條尺寸界線原點(diǎn)、尺寸文本位置、尺寸文本和標(biāo)注樣式。,半徑標(biāo)注(RadialDimension,RadialDimension類對(duì)應(yīng)半徑標(biāo)注,該類的構(gòu)造函數(shù)需要輸入圓心、引線附著點(diǎn)、引線長(zhǎng)度、尺寸文本和標(biāo)注樣式5個(gè)參數(shù)。,直徑標(biāo)注(DiametricDimension),DiametricDimension類對(duì)應(yīng)直徑
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 股權(quán)置換與業(yè)務(wù)合作框架協(xié)議
- 互聯(lián)網(wǎng)教育股權(quán)收購(gòu)與平臺(tái)合作合同范本
- 內(nèi)審機(jī)構(gòu)實(shí)施方案
- 設(shè)備品牌論證方案
- 物業(yè)制服招標(biāo)方案
- 造紙環(huán)保設(shè)備安裝方案
- 紙質(zhì)文件管理方案
- 幼兒托育運(yùn)營(yíng)方案
- 餐廳酒水提成方案
- 云南省玉溪市2024-2025學(xué)年高一下學(xué)期期末語(yǔ)文試題【含答案解析】
- 防溺水救助培訓(xùn)內(nèi)容
- 衛(wèi)生監(jiān)督協(xié)管員培訓(xùn)課件
- 國(guó)開(kāi)(北京)2024年秋《財(cái)務(wù)案例分析》形考作業(yè)答案
- 廠區(qū)食堂二次供水水箱清洗協(xié)議
- DB52T 1512-2020 水利水電工程隧洞施工超前地質(zhì)預(yù)報(bào)技術(shù)規(guī)程
- 單位綜合評(píng)價(jià)評(píng)語(yǔ)
- 牲畜用飲水槽相關(guān)項(xiàng)目實(shí)施方案
- 《數(shù)學(xué)課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版(原版)
- 民政統(tǒng)計(jì)信息管理系統(tǒng)培訓(xùn)手冊(cè)街鄉(xiāng)鎮(zhèn)
- 超聲科晉升主任(副主任)醫(yī)師超聲診斷子宮癌肉瘤病例報(bào)告專題分析
- 教學(xué)樓加固工程施工組織
評(píng)論
0/150
提交評(píng)論