完整word版ObjectARX学习笔记Word格式文档下载.docx
- 文档编号:18767304
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:33
- 大小:368.11KB
完整word版ObjectARX学习笔记Word格式文档下载.docx
《完整word版ObjectARX学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整word版ObjectARX学习笔记Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
kForRead);
4、在命令函数中添加获得指向特定块表记录的指针的相关代码
AcDbBlockTableRecord*pBlockTableRecord;
pBlockTable->
getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb:
kForWrite);
5、在命令函数中添加向块表记录中附加实体代码
AcDbObjectIdlineId;
pBlockTabelRecord->
appendAcDbEntity(lineId,pLine);
6、在命令函数中添加关闭图形数据库各种对象的代码
close();
pBlockTableRecord->
pLine->
三、创建直线实例
四、
五、修改图形对象的属性
1、打开图形数据库的对象
Acad:
ErrorStatusacdbOpenAcDbEntity(AcDbEntity*&
pEnt,AcDbObjectIdid,AcDb:
Openmodemode,boolopenErasedEntity=false);
第一个参数返回值指向图形数据库实体的指针;
第二个参数输入了要获得的实体的ID号,第三个参数指定了打开该实体的方式(读或写);
第四个参数指定是否允许访问一个已经被删除的实体。
2、修改直线颜色实例
staticAcDbObjectIdCreatLine()
{
//在内存上创建一个新的AcDbLine对象
AcGePoint3dptStart(0,0,0);
AcGePoint3dptEnd(100,100,0);
//获得指向块表的指针
AcDbBlockTable*pBlockTable;
workingDatabase()->
//获得指向特定块表记录的指针
//将对象添加到块表记录中
pBlockTableRecord->
//关闭图形数据库的各种对象
pLine->
//为在命令函数中引用该函数,需要返回lineId
returnlineId;
}
staticAcad:
ErrorStatusChangeColor(AcDbObjectIdentId,Adesk:
UInt16colorIndex)
AcDbEntity*pEntity;
//打开图形数据库中的对象
acdbOpenObject(pEntity,entId,AcDb:
//修改实体颜色
pEntity->
setColorIndex(colorIndex);
//关闭实体对象
//被命令函数引用时需返回值
returnAcad:
eOk;
//-mshlModifyEnt.ChangeColorcommand(donotrename)
staticvoidmshlModifyEntChangeColor(void)
//AddyourcodeforcommandmshlModifyEnt.ChangeColorhere
//创建直线
AcDbObjectIdlineId;
lineId=CreatLine();
//修改直线颜色
ChangeColor(lineId,1);
六、用类组织函数
1、新建ObjectARX项目CreatEnt
2、新建两个C++类CreatEnt和ModifyEnt
用这个类保存创建实体的函数
头文件
#pragmaonce
#include"
StdAfx.h"
classCCreatEnt
{
public:
CCreatEnt(void);
~CCreatEnt(void);
staticAcDbObjectIdCreatLine();
};
源文件
CreatEnt.h"
CCreatEnt:
CCreatEnt(void)
}
~CCreatEnt(void)
AcDbObjectIdCCreatEnt:
CreatLine()
classCModifyEnt
CModifyEnt(void);
~CModifyEnt(void);
staticAcad:
UInt16colorIndex);
ModifyEnt.h"
CModifyEnt:
CModifyEnt(void)
~CModifyEnt(void)
Acad:
ErrorStatusCModifyEnt:
ChangeColor(AcDbObjectIdentId,Adesk:
AcrxEntryPoint.cpp
//(C)Copyright2002-2007byAutodesk,Inc.
//
//Permissiontouse,copy,modify,anddistributethissoftwarein
//objectcodeformforanypurposeandwithoutfeeisherebygranted,
//providedthattheabovecopyrightnoticeappearsinallcopiesand
//thatboththatcopyrightnoticeandthelimitedwarrantyand
//restrictedrightsnoticebelowappearinallsupporting
//documentation.
//AUTODESKPROVIDESTHISPROGRAM"
ASIS"
ANDWITHALLFAULTS.
//AUTODESKSPECIFICALLYDISCLAIMSANYIMPLIEDWARRANTYOF
//MERCHANTABILITYORFITNESSFORAPARTICULARUSE.AUTODESK,INC.
//DOESNOTWARRANTTHATTHEOPERATIONOFTHEPROGRAMWILLBE
//UNINTERRUPTEDORERRORFREE.
//Use,duplication,ordisclosurebytheU.S.Governmentissubjectto
//restrictionssetforthinFAR52.227-19(CommercialComputer
//Software-RestrictedRights)andDFAR252.227-7013(c)
(1)(ii)
//(RightsinTechnicalDataandComputerSoftware),asapplicable.
//-----------------------------------------------------------------------------
//-----acrxEntryPoint.cpp
resource.h"
#defineszRDS_RXST("
mshl"
)
//-----ObjectARXEntryPoint
classCCreatEntsApp:
publicAcRxArxApp{
CCreatEntsApp():
AcRxArxApp(){}
virtualAcRx:
AppRetCodeOn_kInitAppMsg(void*pkt){
//TODO:
Loaddependencieshere
//You*must*callOn_kInitAppMsghere
AcRx:
AppRetCoderetCode=AcRxArxApp:
On_kInitAppMsg(pkt);
Addyourinitializationcodehere
return(retCode);
AppRetCodeOn_kUnloadAppMsg(void*pkt){
Addyourcodehere
//You*must*callOn_kUnloadAppMsghere
On_kUnloadAppMsg(pkt);
Unloaddependencieshere
virtualvoidRegisterServerComponents(){
//-mshlCreatEnts.ChangeColorcommand(donotrename)
staticvoidmshlCreatEntsChangeColor(void)
//AddyourcodeforcommandmshlCreatEnts.ChangeColorhere
lineId=CCreatEnt:
CreatLine();
CModifyEnt:
ChangeColor(lineId,1);
};
IMPLEMENT_ARX_ENTRYPOINT(CCreatEntsApp)
ACED_ARXCOMMAND_ENTRY_AUTO(CCreatEntsApp,mshlCreatEnts,ChangeColor,ChangeColor,ACRX_CMD_TRANSPARENT,NULL)
七、提高CreateLine函数的可重用性
添加类CCreateEnt
于是,CCreateEnt类现在包含了两个静态成员函数:
//要包含StdAfx
classCCreateLine
CCreateLine(void);
~CCreateLine(void);
staticAcDbObjectIdCreateL(AcGePoint3dptStart,AcGePoint3dptEnd);
staticAcDbObjectIdPostToModelSpace(AcDbEntity*pEnt);
CreateLine.h"
CCreateLine:
CCreateLine(void)
~CCreateLine(void)
AcDbObjectIdCCreateLine:
CreateL(AcGePoint3dptStart,AcGePoint3dptEnd)
//
lineId=CCreateLine:
PostToModelSpace(pLine);
PostToModelSpace(AcDbEntity*pEnt)
AcDbObjectIdentId;
appendAcDbEntity(entId,pEnt);
pEnt->
returnentId;
acrxEntryPoint.cpp
//一定要在EntryPoint中有包含自定义类的头文件
classCArxProject1App:
CArxProject1App():
virtualvoidRegisterServerComp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word ObjectARX 学习 笔记