zoukankan      html  css  js  c++  java
  • 在当前图纸中创建一个表格, AcDbTable 类

    Table 例子学习笔记
    在这个例子中,ARX向我们展示了ACDBTABLE类的一些基本操作方法,ACDBTABLE类是ACAD2005及其以后的产品,应该是说ACDBDATATABLE的升级产品,AcDbDataCell,AcDbDataTable,AcDbDataColumn在ACAD2004中就已经出现。

    AcDbTable 功能很强大的。从最基本的,能设置表格的行、列数目,行、列高度(废话,这是最基本的),还能设置文字样式,每个单元格的前、背景颜色,文字的线宽,文字的可见性,文字的旋转。
    表格线的样式,颜色,线宽,可见性。
    还可以设置自动缩放。
    合并与拆分单元格。
    选定子区域(就是选择一部分);
    还有自定义实体的夹点等等一系列操作,真强大。

    以下是生成一个表格的最简单的例子。
       AcDbBlockTable *pBlkTbl;
       acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForWrite);
       // 获得模型空间的块表记录
       AcDbBlockTableRecord *pBlkTblRcd;
       pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForWrite);

       AcDbTable* pTable = new AcDbTable;

       AcDbDictionary *pDict = NULL;
       AcDbObjectId idTblStyle;
       acdbHostApplicationServices()->workingDatabase()->getTableStyleDictionary(pDict,AcDb::kForRead);
       pDict->getAt(_T("Standard"),idTblStyle);
       pDict->close();

       pTable->setTableStyle( idTblStyle );


       AcDbTextStyleTable* pTextStyle = NULL;
       acdbHostApplicationServices()->workingDatabase()->getTextStyleTable(pTextStyle,AcDb::kForRead);
       AcDbObjectId textID;
       pTextStyle->getAt(_T("Standard"),textID);
       pTextStyle->close();

       if( !textID.isNull() )
       {
        pTable->setTextStyle(textID);
       }

       pTable->setNumColumns(2);
       pTable->setNumRows(4);
      
       pTable->generateLayout(); 
       pTable->suppressHeaderRow(false);//禁用标题


       //定义插入点
       pTable->setPosition(AcGePoint3d(100,100, 0));

       //定义行高
       pTable->setRowHeight(0,30);
       pTable->setRowHeight(1,5);
       pTable->setRowHeight(2,5);
       pTable->setRowHeight(3,5);

       //定义列宽
       pTable->setColumnWidth(0,45);
       pTable->setColumnWidth(1,40);

       pTable->setTextString(1,1,_T("sfsfsdfsd"));
       pTable->setAutoScale(1,1,true);

       pBlkTblRcd->appendAcDbEntity(pTable);

       pTable->setRegen();

       pTable->close();
       pBlkTblRcd->close();
       pBlkTbl->close();

       //刷新屏幕
       actrTransactionManager->flushGraphics(); /*refresh screen*/
       acedUpdateDisplay(); 

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4788171.html
Copyright © 2011-2022 走看看