热卖商品
新闻详情
晓东CAD家园-论坛-ObjectARX-AcDbTable学习笔记-在这个例子中,ARX...
来自 : bbs.xdcad.net/thread-705524-1.
发布时间:2021-03-25
在这个例子中,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();
AcDbTable 功能很强大的。从最基本的,能设置表格的行、列数目,行、列高度(废话,这是最基本的),还能设置文字样式,每个单元格的前、背景颜色,文字的线宽,文字的可见性,文字的旋转。
表格线的样式,颜色,线宽,可见性。
还可以设置自动缩放。
合并与拆分单元格。
选定子区域(就是选择一部分);
还有自定义实体的夹点等等一系列操作,真强大。
以下是生成一个表格的最简单的例子。

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();
本文链接: http://acdb.immuno-online.com/view-762053.html
发布于 : 2021-03-25
阅读(0)
最新动态
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25