.NET AutoCAD二次開發之路(三、圓弧篇)


我發現自學一個東西往往都會遇到一個瓶頸,我現在就是,舉步維艱,回過頭來總結下學過的知識,也發現不少被遺漏的問題,才發現原來還是啥也不會,哎慢慢來吧。

今天來總結下圓和圓弧的創建,圓弧和直線是AutoCAD中經常用到的圖形,那么,全地球人都知道,一個圓有兩個參數:原點和半徑;圓弧有四個參數:原點、半徑、起始角度和終止角度。

在.NET中用Circle類來表示圓,用Arc類來表示圓弧,這個比較好理解。創建圓的方法歸根結底也就一種(我覺得),.NET中已經定義了圓和圓弧的構造函數,只不過是默認構造函數,沒有參數,需要自己給他參數,在這之前必須先實例化一個圓或圓弧對象。

創建圓的代碼如下:

Circle circle=new Circle();// 實例化一個圓對象

circle.Center=new point3d();//圓的圓心是原點,當然也可以不讓是原點括號里面添加參數(x,y,z)即可

circle.Radius=100;//設置圓的半徑

圓弧的創建采用構造函數的重載形式(.NET已經封裝了這些類),代碼可以這樣:

Arc arc=new Arc(point3d center,double radius,double startAngle,double endAngle);

完整的代碼:

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
 
[CommandMethod("AddCircle")]
public static void AddCircle()
{
  // 獲得當前文檔和數據庫   
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  Database acCurDb = acDoc.Database;
 
  // 啟動一個事務  
  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  {
      // 以只讀方式打開塊表  
      BlockTable acBlkTbl;//定義一個塊表
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,OpenMode.ForRead) as BlockTable;
 
      // 以寫方式打開模型空間塊表記錄  
      BlockTableRecord acBlkTblReccircle;//定義一個存放圓的塊表記錄
      BlockTableRecord acBlkTblRecarc;//定義一個存放圓弧的塊表記錄
      acBlkTblReccircle = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],OpenMode.ForWrite) as BlockTableRecord;
      acBlkTblRecarc = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],OpenMode.ForWrite) as BlockTableRecord;
      // 創建一個中心點在 (2,3,0) ,半徑為4.25 的圓  
      Circle acCirc = new Circle();//實例化一個圓
      acCirc.SetDatabaseDefaults();//我沒用着段代碼,也可以運行,不知道他是干嘛的,望大家多多指教
      acCirc.Center = new Point3d(2, 3, 0);//指定圓心位置
      acCirc.Radius = 4.25;//指定半徑       // 創建一個中心點在 (6.25,9.125,0),半徑為6,起始角度為1.117(64度),終點角度為3.5605(204度)的圓弧。  
      Arc acArc = new Arc(new Point3d(6.25, 9.125, 0),6, 1.117, 3.5605);
      // 添加新對象到塊表記錄和事務中  
      acBlkTblReccircle.AppendEntity(acCirc);//將圓添加到塊表記錄中
      acBlkTblRecarc.AppendEntity(acArc);//將圓弧添加到塊表記錄中
      acTrans.AddNewlyCreatedDBObject(acCirc, true);//添加到事物處理管理器中
      acTrans.AddNewlyCreatedDBObject(acArc, true);//添加到事物處理管理器中

acTrans.Commit(); // 保存新對象到數據庫中 } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM