2014-10-14 4 views
5

में ड्रॉइंग टेबल्स मैं अपने सी # .NET प्लगइन को ऑटोकैड में एक टेबल खींचने की कोशिश कर रहा हूं, जो उपयोगकर्ता द्वारा भरने वाले .NET फॉर्म के आधार पर जानकारी के साथ है। इस कोड का उपयोग करने के लिए मैं जिस कोड का उपयोग कर रहा हूं वह this page पर आधारित है। मेरी योजना के लिए इसे संशोधित करने, कोड इस तरह दिखता है:ऑटोकैड

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Autodesk.AutoCAD.ApplicationServices; 
using Autodesk.AutoCAD.DatabaseServices; 
using Autodesk.AutoCAD.EditorInput; 
using Autodesk.AutoCAD.Geometry; 
using Autodesk.AutoCAD.Runtime; 

namespace WindowsDoors.NET 
{ 
    class OpeningDataTable : Table 
    { 
     private int rowCount = 0; 
     private static Document doc = Application.DocumentManager.MdiActiveDocument; //Current drawing 
     private static Database db = doc.Database; //subclass of Document, 
     private static Editor ed = doc.Editor; //Editor object to ask user where table goes, subclass of Document 

     public OpeningDataTable(bool isWindow) 
     { 
      PromptPointResult pr = ed.GetPoint("\nEnter table insertion point: "); 
      if (pr.Status == PromptStatus.OK) 
      { 
       //Setting information about the table 
       TableStyle = db.Tablestyle; 
       SetSize(2, 5); 
       SetRowHeight(3); 
       SetColumnWidth(15); 
       Position = pr.Value; 

       //Creating titles to add 
       String[] columnTitles = new String[5]; 
       columnTitles[0] = "Mark"; 
       columnTitles[1] = "Width"; 
       columnTitles[2] = "Height"; 
       columnTitles[3] = "Header\nMaterial"; 
       columnTitles[4] = "Packers\n(Each Side)"; 

       //Adding titles to table 
       addRow(columnTitles); 
      } 
     } 

     public void addRow(String[] data) 
     { 
      // Use a nested loop to format each cell 
      for (int i = 0; i < data.Length; i++) 
      { 
       ParseOption s = new ParseOption(); 
       Cells[rowCount, i].TextHeight = 1; 
       Cells[rowCount, i].SetValue(data[i], s); 
      } 
      GenerateLayout(); 


      Transaction tr = doc.TransactionManager.StartTransaction(); 
      using (tr) 
      { 
       BlockTable bt = (BlockTable)tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead); 
       BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); 

       btr.AppendEntity(this); 
       tr.AddNewlyCreatedDBObject(this, true); 
       tr.Commit(); 
      } 
     } 
    } 
} 

यह समस्या इस लाइन पर तल के पास में आता है

(BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); 

इसे कहते हैं BlockTableRecord कोई विस्तार ModelSpace भले ही मुझे लगता है कि सही ले लिया है उदाहरण मैंने सूचीबद्ध किया। मुझे यह जानने की ज़रूरत है कि क्या इसे ठीक करने का कोई तरीका है या अगर इसे किसी और चीज़ से बदला गया है।

उत्तर

1

मैंने इसे समझ लिया। क्योंकि मैं टेबल क्लास का विस्तार कर रहा हूं जिसमें फ़ील्ड ब्लॉकटेबल रिकार्ड है, मुझे अधिक विशिष्ट

BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[Autodesk.AutoCAD.DatabaseServices.BlockTableRecord.ModelSpace], OpenMode.ForWrite); 
संबंधित मुद्दे