CAD二次开发学习笔记一(画一条直接)
ARX内部是不需要调用cad命令的。调用 ARX 函数或对象就可以象CAD一样绘制、编辑实体。
在AutoCAD中画直接的命令是
line
0,0
1000,100
通过ObjectARX画,新建一个命令cmd1代码如下:
代码
// ----- ArxProject2.cmd1 command
static void ArxProject2cmd1(void)
{
// Add your code for command ArxProject2._MyCommand1 here
acutPrintf(_T("Hello World"));
//在内存上创建一个新的AcDbLine对象
AcGePoint3d ptStart(0,0,0);
AcGePoint3d ptEnd(10000,10000,0);
AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);
/*基于AutoCAD内部的实现机制,必须在堆上创建对象。
acdbHostApplicationServices()->workingDatabase()
获得指向当前活动的图形数据库的指针。
*/
//获得指向块表的指针
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);
//获得指向特定的块表记录(模型空间)的指针
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
//将AcDbLine类的对象添加到块表记录中
AcDbObjectId lineId;
pBlockTableRecord->appendAcDbEntity(lineId,pLine);
//关闭图形数据库的各种对象
pBlockTable->close();
pBlockTableRecord->close();
pLine->close();
}
static void ArxProject2cmd1(void)
{
// Add your code for command ArxProject2._MyCommand1 here
acutPrintf(_T("Hello World"));
//在内存上创建一个新的AcDbLine对象
AcGePoint3d ptStart(0,0,0);
AcGePoint3d ptEnd(10000,10000,0);
AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);
/*基于AutoCAD内部的实现机制,必须在堆上创建对象。
acdbHostApplicationServices()->workingDatabase()
获得指向当前活动的图形数据库的指针。
*/
//获得指向块表的指针
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);
//获得指向特定的块表记录(模型空间)的指针
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
//将AcDbLine类的对象添加到块表记录中
AcDbObjectId lineId;
pBlockTableRecord->appendAcDbEntity(lineId,pLine);
//关闭图形数据库的各种对象
pBlockTable->close();
pBlockTableRecord->close();
pLine->close();
}
ap加载然后cmd1运行。
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。