编程绘制点差式矩形 #include <aced.h> #include <rxregsvc.h> ObjectARX 头文件 #include "dbents.h" #include"math,h” //#include "geassign.h" #include "dbapserv.h" #include"adslib.:h“ void initApp(); void unloadApp(); 声明两个 应用函数 void firstARX(); void drawRect();
#include <aced.h> #include <rxregsvc.h> #include "dbents.h" #include "math.h" //#include "geassign.h" #include "dbapserv.h" #include "adslib.h“ void initApp(); void unloadApp(); void firstARX(); void drawRect(); 编程绘制点差式矩形 ObjectARX 头文件 声明两个 应用函数
void initApp() acedRegCmds->addCommand("firstARX Commands",/命令组名 "firstARX", /全球命令名 “第一次”, /本地/翻译命令名 ACRX_CMD_TRANSPARENT,/命令模式 firstARX); /被调用的函数 acedRegCmds->addCommand("firstARX_Commands”,/命令组名 "DRAWRECT", /全球命令名 添加了两 “绘制矩形”, /本地/翻译命令名 条命令。 ACRX_CMD_TRANSPARENT,/命令模式 drawRect); /被调用的函数 void unloadApp() acedRegCmds->removeGroup ("firstARX_Commands");
void initApp() { acedRegCmds->addCommand("firstARX_Commands",//命令组名 "firstARX", //全球命令名 "第一次", //本地/翻译命令名 ACRX_CMD_TRANSPARENT, //命令模式 firstARX); //被调用的函数 acedRegCmds->addCommand("firstARX_Commands",//命令组名 "DRAWRECT", //全球命令名 “绘制矩形”, //本地/翻译命令名 ACRX_CMD_TRANSPARENT, //命令模式 drawRect); //被调用的函数 } void unloadApp() { acedRegCmds->removeGroup("firstARX_Commands"); } 添加了两 条命令
void firstARX() { ads alert(这是我的第一个ARX应用程序!"): 定义应用函 数,显示一个 提示对话框 extern "C"AcRx:AppRetCode acrxEntryPoint (AcRx:AppMsgCode msg,void*pkt) switch (msg) //msg参数是AutoCAD传递给应用程序的消息 { case AcRx:kInitAppMsg:/解锁应用程序,这样它才能被卸载 acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); initApp(); break; case AcRx:kUnloadAppMsg: unloadApp(); 用于消息处理的 break; 主入口点,传递 default: 消息到应用程序 break; return AcRx:kRetOK;
void firstARX() { ads_alert("这是我的第一个ARX应用程序!"); } extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) //msg参数是AutoCAD传递给应用程序的消息 { case AcRx::kInitAppMsg: //解锁应用程序,这样它才能被卸载 acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); initApp(); break; case AcRx::kUnloadAppMsg: unloadApp(); break; default: break; } return AcRx::kRetOK; } 定义应用函 数,显示一个 提示对话框 用于消息处理的 主入口点,传递 消息到应用程序
AcDbObjectId createLine(AcGePoint3d startPoint,AcGePoint3d endPoint) 该函数创建 AcDbObjectId objld; 条直线。 AcDbLine *pLine; /初始化一个AcDbLine类的指针 AutoCAD AcDbBlockTable *pBlockTable; 图形数据库 AcDbBlockTableRecord *pBlock; /打开块表 acdbHostApplicationServices()->workingDatabase()-> getBlockTable(pBlockTable,AcDb:kForRead); /打开模型空间块表段,获得当前块表记录,并关闭块表 pBlockTable->getAt (ACDB_MODEL SPACE,pBlock,AcDb:kForWrite); pBlockTable->close(; /向当前块表记录中添加直线对象 pLine new AcDbLine(startPoint,endPoint); pBlock->appendAcDbEntity(objId,pLine); pBlock->close(; pLine->close(); 返回直线对象D return objId;
AcDbObjectId createLine(AcGePoint3d startPoint, AcGePoint3d endPoint) { AcDbObjectId objId; AcDbLine *pLine; //初始化一个AcDbLine类的指针 AcDbBlockTable *pBlockTable; AcDbBlockTableRecord *pBlock; //打开块表 acdbHostApplicationServices()->workingDatabase()-> getBlockTable(pBlockTable,AcDb::kForRead); //打开模型空间块表段,获得当前块表记录,并关闭块表 pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock, AcDb::kForWrite); pBlockTable->close(); //向当前块表记录中添加直线对象 pLine = new AcDbLine(startPoint, endPoint); pBlock->appendAcDbEntity(objId, pLine); pBlock->close(); pLine->close(); //返回直线对象ID return objId; } 该函数创建 一条直线。 AutoCAD 图形数据库
/This is command DRAWRECT' void drawRect() 该函数绘制 { //TOD0:Implement the command 矩形。 double sideA,sideB,angle; ads point pt; AcGePoint3d point[4]; AcGeVector:3 d vectorl,vector2;/偏移向量 /获取基点坐标 if(acedGetPoint(NULL, "\nBase point:"pt)!=RTNORM) return; /输入矩形一边边长 if(acedGetDist(pt,"\nLength of one side:"&sideA)!= RTNORM) return; /输入矩形另一边边长 if(acedGetDist(pt,\nLength of another side:"&sideB)!= RTNORM) return; /输入矩形转角 if(acedGetAngle(pt,"\nAngle of rotation:"&angle)!= RTNORM) return;
// This is command 'DRAWRECT' void drawRect() { // TODO: Implement the command double sideA, sideB, angle; ads_point pt; AcGePoint3d point[4]; AcGeVector3d vector1, vector2; //偏移向量 //获取基点坐标 if(acedGetPoint(NULL, "\nBase point: ", pt) != RTNORM) return; //输入矩形一边边长 if(acedGetDist(pt, "\nLength of one side: ", &sideA) != RTNORM) return; //输入矩形另一边边长 if(acedGetDist(pt, "\nLength of another side: ", &sideB) != RTNORM) return; //输入矩形转角 if(acedGetAngle(pt, "\nAngle of rotation: ", &angle) != RTNORM) return; 该函数绘制 矩形