zoukankan      html  css  js  c++  java
  • AcDbTable表格实体的简单例子

    例子是创建一个含有表格实体的块定义

    效果如下(手动插入的块)

    源代码如下,简单示意,采用了我不是很熟悉的智能指针创建实体对象,代码仅供参考

    AcDbObjectPointer<AcDbTable> pTable;
            Acad::ErrorStatus es= pTable.create();
            if (Acad::eOk != es)
                return;
    
            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(3);
            pTable->setNumRows(8);
            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->setRowHeight(4,5);
    //         pTable->setRowHeight(5,5);
    //         pTable->setRowHeight(6,5);
    //         pTable->setRowHeight(7,5);
            //定义列宽
            pTable->setColumnWidth(0,45);
            pTable->setColumnWidth(1,40);
            pTable->setTextString(1,1,_T("sfsfsdfsd"));
            pTable->setAutoScale(1,1,true);
            //重新计算表格块,在添加到块定义的时候(也许后台数据库也需要),需要重新计算
            //表格样式id一定要给
            pTable->recomputeTableBlock();
            pTable->setRegen();
    
            AcDbDatabase *pDb=acdbHostApplicationServices()->workingDatabase();
            if (NULL == pDb) 
                return;
            AcDbBlockTablePointer pTbl(pDb,AcDb::kForWrite);
            if (Acad::eOk != pTbl.openStatus())
                return;
    //         AcDbBlockTableRecordPointer pModelSpace(ACDB_MODEL_SPACE,pDb,AcDb::kForWrite);
    //         if (Acad::eOk != pModelSpace.openStatus())
    //             return;        
            AcDbBlockTableRecordPointer pBlkRcd;
            if (Acad::eOk != pBlkRcd.create())
                return;
            pBlkRcd->setName(_T("智能指针创建的块"));
            AcDbObjectId objId=AcDbObjectId::kNull;
            pBlkRcd->appendAcDbEntity(objId,pTable);        
            pTbl->add(pBlkRcd);
  • 相关阅读:
    eclipse中设置自动生成的author,date等注释
    JSP基本指令
    java代码注释规范
    java中的 FileWriter类 和 FileReader类的一些基本用法
    关于java中BufferedReader的read()及readLine()方法的使用心得
    java开发中经典的三大框架SSH
    Java访问修饰符(访问控制符)
    Linux环境变量具体内容介绍
    MSG结构体和WndProc窗口过程详解
    Java当出现未被捕获的异常应该如何处理
  • 原文地址:https://www.cnblogs.com/edata/p/10718731.html
Copyright © 2011-2022 走看看