2012년 3월 7일 수요일

Reference Objects in the Object Hierarchy 객체 계층 구조의 참조 객체



string strFName, strBlkName;
Autodesk.AutoCAD.DatabaseServices.ObjectId objId;

strFName = "c:/clients/Proj 123/grid.dwg";
strBlkName = System.IO.Path.GetFileNameWithoutExtension(strFName);

objId = Application.DocumentManager.MdiActiveDocument.Database.AttachXref(strFName, strBlkName);


//현제도면의 데이터베이스에 그림파일을 첨부
//데이터베이스 객체에서 AttachXref()메소드가 호출됀다.


Autodesk.AutoCAD.DatabaseServices.Database acCurDb;
acCurDb = Application.DocumentManager.MdiActiveDocument.Database;

//Autodesk.AutoCAD.DatabaseServices.Database의 변수 (acCurDb)를 정의하고
//현재 문서의 데이터베이스를 넘겨줌.


string strFName, strBlkName;
Autodesk.AutoCAD.DatabaseServices.ObjectId objId;

strFName = "c:/clients/Proj 123/grid.dwg";
strBlkName = System.IO.Path.GetFileNameWithoutExtension(strFName);

objId = acCurDb.AttachXref(strFName, strBlkName);

//acCurDb를 이용해서 그림첨부

//현제활성됀 문서(도면)에 참조문서(도면)을 첨부한다.





using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;

[CommandMethod("ListEntities")]
public static void ListEntities()
{
  // Get the current document and database, and start a transaction
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  //문서객체타입의 변수를 만들고 현제활성 문서를 저장.
  Database acCurDb = acDoc.Database;
  //데이터베이스객체타입의 변수에 현제문서의 데이터베이스를 저장.

  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  {  
      //트렌잭션 시작 데이터베이스에 접근해서 변경이나 값을 읽어 올수있다.
      // Open the Block table record for read
      BlockTable acBlkTbl;
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                   OpenMode.ForRead) as BlockTable;

      // Open the Block table record Model space for read
      BlockTableRecord acBlkTblRec;
      acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
                                      OpenMode.ForRead) as BlockTableRecord;

      int nCnt = 0;
      acDoc.Editor.WriteMessage("\nModel space objects: ");

      // Step through each object in Model space and
      // display the type of object found
      foreach (ObjectId acObjId in acBlkTblRec)
      {
          acDoc.Editor.WriteMessage("\n" + acObjId.ObjectClass.DxfName);

          nCnt = nCnt + 1;
      }

      // If no objects are found then display a message
      if (nCnt == 0)
      {
          acDoc.Editor.WriteMessage("\n No objects found");
      }

      // Dispose of the transaction
  }
}


출처
http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/index.html

댓글 없음 :

댓글 쓰기