久久无码高潮喷水抽搐,极品馒头泬19p,久久人人爽精品玩人妻av,精品国产成人国产在线视,精品视频一区二区三区在线观看

最新更新最新專題

您的位置:首頁(yè) > ppt下載 > PPT課件 > 培訓(xùn)教程PPT > objectarx視頻教程培訓(xùn)PPT

objectarx視頻教程培訓(xùn)PPT下載

素材大。
229.5 KB
素材授權(quán):
免費(fèi)下載
素材格式:
.ppt
素材上傳:
ppt
上傳時(shí)間:
2016-04-02
素材編號(hào):
51858
素材類別:
培訓(xùn)教程PPT

素材預(yù)覽

objectarx視頻教程培訓(xùn)PPT objectarx視頻教程培訓(xùn)PPT

這是一個(gè)關(guān)于objectarx視頻教程培訓(xùn)PPT(部分ppt內(nèi)容已做更新升級(jí)),主要介紹了ObjectARX應(yīng)用、ObjectARX概述、ObjectARX開(kāi)發(fā)特點(diǎn)、ObjectARX類庫(kù)構(gòu)成等內(nèi)容。培訓(xùn)是給新員工或現(xiàn)有員工傳授其完成本職工作所必需的正確思維認(rèn)知、基本知識(shí)和技能的過(guò)程。是一種有組織的知識(shí)傳遞、技能傳遞、標(biāo)準(zhǔn)傳遞、信息傳遞、管理訓(xùn)誡行為。其中以技能傳遞為主,側(cè)重上崗前進(jìn)行。為了達(dá)到統(tǒng)一的科學(xué)技術(shù)規(guī)范、標(biāo)準(zhǔn)化作業(yè),通過(guò)目標(biāo)規(guī)劃設(shè)定知識(shí)和信息傳遞、技能熟練演練、作業(yè)達(dá)成評(píng)測(cè)、結(jié)果交流公告等現(xiàn)代信息化的流程,讓員工通過(guò)一定的教育訓(xùn)練技術(shù)手段,達(dá)到預(yù)期的水平,提高目標(biāo)。目前國(guó)內(nèi)培訓(xùn)以技能傳遞為主,時(shí)間在側(cè)重上崗前。

objectarx視頻教程培訓(xùn)PPT是由紅軟PPT免費(fèi)下載網(wǎng)推薦的一款培訓(xùn)教程PPT類型的PowerPoint.

ObjectARX TrainingqQn紅軟基地
華中科技大學(xué)CAD中心qQn紅軟基地
武漢天喻軟件有限責(zé)任公司qQn紅軟基地
2010年2月qQn紅軟基地
ObjectARX應(yīng)用的介紹qQn紅軟基地
ObjectARX是一個(gè)僅在AutoCAD上進(jìn)行二次開(kāi)發(fā)的一套開(kāi)發(fā)環(huán)境,通俗點(diǎn)講就是一系列的APIqQn紅軟基地
ObjectARX的應(yīng)用舉例:qQn紅軟基地
擴(kuò)展AutoCAD功能qQn紅軟基地
為各種工程設(shè)計(jì)開(kāi)發(fā)便利的工具qQn紅軟基地
ObjectARX概述qQn紅軟基地
ARX——AutoCAD Runtime eXtensionqQn紅軟基地
DBX ——DataBase eXtensionqQn紅軟基地
ARX = .DLL + 2 exported functionsqQn紅軟基地
{ acrxEntryPoint & acrxGetApiVersion }qQn紅軟基地
ObjectARX開(kāi)發(fā)特點(diǎn)qQn紅軟基地
不同的ACAD版本用不同的開(kāi)發(fā)包及開(kāi)發(fā)環(huán)境qQn紅軟基地
ACAD2000~ACAD2002 : VC++ 6.0qQn紅軟基地
ACAD2004~ACAD2006 : VS.NET 2002qQn紅軟基地
ACAD2007~ACAD2009 : VS.NET 2005qQn紅軟基地
ACAD2010~       :  VS.NET 2008qQn紅軟基地
ACAD2007開(kāi)始字符串采用UNICODE編碼qQn紅軟基地
ARX之間不能連續(xù)依賴qQn紅軟基地
A.arx依賴B.arx, B.arx依賴C.dbx,則A.arx不能加載qQn紅軟基地
與ACAD已有功能地位一致qQn紅軟基地
ObjectARX類庫(kù)構(gòu)成qQn紅軟基地
AcRx:用于幫定一個(gè)應(yīng)用程序以及運(yùn)行類的注冊(cè)和識(shí)別。qQn紅軟基地
AcEd:用于注冊(cè)自定義命令和AutoCAD事件通告。qQn紅軟基地
AcDb:AutoCAD圖形數(shù)據(jù)庫(kù)。qQn紅軟基地
AcGi: 用于AutoCAD 的圖形類。qQn紅軟基地
AcGe:用于AutoCAD 的線型和幾何對(duì)象通用類。qQn紅軟基地
ADS: AutoCAD 的早期版本C語(yǔ)言函數(shù)庫(kù)。qQn紅軟基地
ObjectARX類結(jié)構(gòu)qQn紅軟基地
類圖classmap.dwgqQn紅軟基地
位置:\ObjectARX 2006\classmapqQn紅軟基地
用ObjectARX能做些什么?qQn紅軟基地
訪問(wèn)、編輯和擴(kuò)展AutoCAD圖形數(shù)據(jù)庫(kù)qQn紅軟基地
和AutoCAD系統(tǒng)相互通信qQn紅軟基地
使用MFC創(chuàng)建用戶接口qQn紅軟基地
支持多文檔應(yīng)用qQn紅軟基地
創(chuàng)建自定義類和自定義實(shí)體qQn紅軟基地
可以開(kāi)發(fā)復(fù)雜的應(yīng)用qQn紅軟基地
和其他開(kāi)發(fā)環(huán)境進(jìn)行協(xié)作qQn紅軟基地
培訓(xùn)安排-1qQn紅軟基地
一、基礎(chǔ)qQn紅軟基地
AUTOCAD數(shù)據(jù)庫(kù)結(jié)構(gòu)及操作,ads_name-句柄-ID及轉(zhuǎn)換,aced常用函數(shù),WCS/UCS及轉(zhuǎn)換,菜單/工具條/對(duì)話框制作qQn紅軟基地
二、自定義對(duì)象qQn紅軟基地
顯示/存儲(chǔ)/夾點(diǎn)/移動(dòng)/拷貝/范圍/list/捕捉點(diǎn)/炸開(kāi)/相交點(diǎn)/sub事件qQn紅軟基地
三、自定義對(duì)象生成與編緝qQn紅軟基地
雙擊修改/Jig/屬性頁(yè)qQn紅軟基地
培訓(xùn)安排-2qQn紅軟基地
四、一些重要對(duì)象qQn紅軟基地
字典/層/線型/字體樣式qQn紅軟基地
五、擴(kuò)展數(shù)據(jù)qQn紅軟基地
六、反應(yīng)器qQn紅軟基地
八、總結(jié)qQn紅軟基地
所需基礎(chǔ)qQn紅軟基地
ACAD基本操作qQn紅軟基地
C++qQn紅軟基地
VCqQn紅軟基地
MFC(界面)qQn紅軟基地
COM(屬性頁(yè)等)qQn紅軟基地
STL(提高效率)qQn紅軟基地
AutoCAD圖形數(shù)據(jù)庫(kù)概述qQn紅軟基地
AutoCAD圖形實(shí)際上是一系列存放在一個(gè)AcDbDatabase類型的對(duì)象中的AcDb對(duì)象。qQn紅軟基地
一個(gè)dwg就是一個(gè)數(shù)據(jù)庫(kù)qQn紅軟基地
具備數(shù)據(jù)庫(kù)的基本組織結(jié)構(gòu)。qQn紅軟基地
包括九個(gè)符號(hào)表和一個(gè)命名對(duì)象詞典qQn紅軟基地
AutoCAD圖形數(shù)據(jù)庫(kù)結(jié)構(gòu)qQn紅軟基地
AcDbDatabase數(shù)據(jù)庫(kù)qQn紅軟基地
       |------AcDb符號(hào)表qQn紅軟基地
       |        |------塊表(AcDbBlockTable)qQn紅軟基地
       |        |------尺寸標(biāo)注樣式表(AcDbDimStyleTable)qQn紅軟基地
       |        |------層表(AcDbLayerTable)qQn紅軟基地
       |        |------線型表(AcDbLinetypeTable)qQn紅軟基地
       |        |------已注冊(cè)應(yīng)用程序表(AcDbRegAppTable)qQn紅軟基地
       |        |------字體樣式表(AcDbTextStyleTable)qQn紅軟基地
       |        |------用戶坐標(biāo)系表(AcDbUCSTable)qQn紅軟基地
       |        |------視口表(AcDbViewportTable)qQn紅軟基地
       |        |------視圖表(AcDbViewTable)qQn紅軟基地
       |-------命名對(duì)象詞典qQn紅軟基地
訪問(wèn):AcDbDatabase::getSymbolTableqQn紅軟基地
向數(shù)據(jù)庫(kù)中添加實(shí)體 qQn紅軟基地
Acad::ErrorStatus addEntityToModelSpace(AcDbEntity * pEnt, AcDbObjectId & EntId)qQn紅軟基地
{qQn紅軟基地
 Acad::ErrorStatus eRet;qQn紅軟基地
AcDbDatabase * pDb = acdbHostApplicationServices()->workingDatabase();qQn紅軟基地
 AcDbBlockTable *pBlockTable;qQn紅軟基地
 eRet = pDb->getBlockTable(pBlockTable, AcDb::kForRead);qQn紅軟基地
 if ( eRet != Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  return eRet;qQn紅軟基地
 }qQn紅軟基地
 AcDbBlockTableRecord *pBlockTableRecord;qQn紅軟基地
 eRet = pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);qQn紅軟基地
 if ( eRet != Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  pBlockTable->close();qQn紅軟基地
  return eRet;qQn紅軟基地
 }qQn紅軟基地
 pBlockTable->close();qQn紅軟基地
 eRet = pBlockTableRecord->appendAcDbEntity(EntId, pEnt);qQn紅軟基地
 if ( eRet != Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  pBlockTableRecord->close();qQn紅軟基地
  return eRet;qQn紅軟基地
 }qQn紅軟基地
 pBlockTableRecord->close();qQn紅軟基地
 return Acad::eOk;qQn紅軟基地
}qQn紅軟基地
怎樣遍歷AutoCAD圖形數(shù)據(jù)庫(kù)?qQn紅軟基地
void FindObjectId(AcDbObjectId & objId)qQn紅軟基地
{qQn紅軟基地
AcDbDatabase * pDb = acdbHostApplicationServices()->workingDatabase();qQn紅軟基地
 AcDbBlockTable *pBlockTable;qQn紅軟基地
 pDb->getBlockTable(pBlockTable, AcDb::kForRead);qQn紅軟基地
 AcDbBlockTableRecord *pBlockTableRecord;qQn紅軟基地
 pBlockTable->getAt(ACDB_MODEL_SPACE,  pBlockTableRecord, AcDb:: kForRead);qQn紅軟基地
 pBlockTable->close();qQn紅軟基地
 AcDbBlockTableRecordIterator *pIter;qQn紅軟基地
  pBlockTableRecord- >newIterator(pIter); // Create an iteratorqQn紅軟基地
 for (pIter->start(); !pIter->done(); pIter->step())qQn紅軟基地
            {qQn紅軟基地
               ….........qQn紅軟基地
               AcDbEntity *pEntity;qQn紅軟基地
     if (pIter->getEntity(pEntity, AcDb::kForRead) != Acad::eOk)   continue;qQn紅軟基地
               If(pEntity->isKindOf(AcDbCircle::desc())   objId = pEntity->ObjectId();qQn紅軟基地
           }qQn紅軟基地
 pBlockTableRecord- >close();qQn紅軟基地
}qQn紅軟基地
怎樣創(chuàng)建和使用已有的AutoCAD圖形數(shù)據(jù)庫(kù)?qQn紅軟基地
要使用AcDbDatabase數(shù)據(jù)庫(kù),與使用其它數(shù)據(jù)庫(kù)一樣,首先要聲明一個(gè)數(shù)據(jù)庫(kù)對(duì)象。AcDbDatabase類的聲明,調(diào)用類的構(gòu)造函數(shù):qQn紅軟基地
AcDbDatabase ::AcDbDatabase(bool buildDefaultDrawing = true, bool noDocument = false);qQn紅軟基地
其中,buildDefaultDrawing參數(shù)控制是否創(chuàng)建一個(gè)包括所有默認(rèn)數(shù)據(jù)記錄的數(shù)據(jù)庫(kù)。qQn紅軟基地
該參數(shù)的默認(rèn)值為true,這樣在AcDbDatabase數(shù)據(jù)庫(kù)創(chuàng)建時(shí),將在新建的數(shù)據(jù)庫(kù)中包含一個(gè)AutoCAD圖形數(shù)據(jù)庫(kù)必須包含的基本數(shù)據(jù)要素,這些要素包括九個(gè)符號(hào)表及其初始記錄(比如0層、STANDARD文字樣式等),命名對(duì)象詞典(組詞典和多線樣式詞典)以及必要的系統(tǒng)變量設(shè)置。這樣就可以向新建的數(shù)據(jù)庫(kù)中添加各種實(shí)體和對(duì)象。如:AcDbDatabase *pDb= new AcDbDatabase(true);qQn紅軟基地
若指定該參數(shù)為false,AutoCAD將創(chuàng)建一個(gè)完全空的AcDbDatabase數(shù)據(jù)庫(kù)。這樣的AcDbDatabase數(shù)據(jù)庫(kù)不能直接向其中添加實(shí)體或?qū)ο螅枳x入一個(gè)圖形文件來(lái)拓展該圖形數(shù)據(jù)庫(kù),然后再逐步添加或修改數(shù)據(jù)庫(kù)中的實(shí)體或?qū)ο蟆?span style="display:none">qQn紅軟基地
讀入圖形數(shù)據(jù)庫(kù)使用函數(shù):AcadErrorStatus AcDbDatabase::readDwgFile(const char* fileName );qQn紅軟基地
若要使用已有的圖形,比如“test.dwg”文件,則使用下列代碼:qQn紅軟基地
AcDbDatabase *pDb= new AcDbDatabase(false);qQn紅軟基地
pDb->readDwgFile(“test.dwg”);qQn紅軟基地
AcDbDatabase構(gòu)造函數(shù)的noDocument參數(shù)控制打開(kāi)的數(shù)據(jù)庫(kù)是否與當(dāng)前文檔關(guān)聯(lián),此參數(shù)用于“多文檔處理”中。qQn紅軟基地
注意:在這種情況下,AcDbdatabase()的參數(shù)必須指定為false(當(dāng)然,0或者Adesk::kFalse都可以)。因?yàn)槭褂胮Db->readDwgFile()函數(shù)時(shí),pDb必須是一個(gè)完全空白的數(shù)據(jù)庫(kù),也就是說(shuō),哪怕使用了AcDbDatabase(false);新建數(shù)據(jù)庫(kù)后,只要對(duì)數(shù)據(jù)庫(kù)進(jìn)行了操作,就不能再使用readDwgFile()函數(shù),否則會(huì)導(dǎo)致嚴(yán)重的內(nèi)存錯(cuò)誤。qQn紅軟基地
數(shù)據(jù)庫(kù)對(duì)象AcDbObject概述qQn紅軟基地
每一個(gè)數(shù)據(jù)庫(kù)對(duì)象具有以下三種表示方法:qQn紅軟基地
句柄 ——  AcDbHandleqQn紅軟基地
對(duì)象id ——  AcDbObjectIdqQn紅軟基地
指針 ——  AcDbObect *qQn紅軟基地
三者之間的相互關(guān)系qQn紅軟基地
之間相互關(guān)系和轉(zhuǎn)換qQn紅軟基地
1. AcDbHandle -> AcDbObjectIdqQn紅軟基地
AcDbDatabase ::getAcDbObjectId(&AcDbObjectId ,F(xiàn)ALSE, AcDbHandle );qQn紅軟基地
2. AcDbObjectId -> AcDbHandleqQn紅軟基地
AcDbHandle  = AcDbObjectId::handle ();qQn紅軟基地
3.AcDbObjectId -> AcDbObject *qQn紅軟基地
acdbOpenObject(AcDbObject *&,AcDbObjectId,AcDb::OpenMode);qQn紅軟基地
4.AcDbObject * -> AcDbHandle qQn紅軟基地
AcDbHandle  = AcDbObject::getAcDbHandle();qQn紅軟基地
5.ads_name 和 AcDbObjcetIdqQn紅軟基地
一個(gè)ads_name 是 一個(gè)包含兩個(gè)long型元素的數(shù)組qQn紅軟基地
這個(gè)數(shù)組的第一個(gè)元素就是AcDbObjcetIdqQn紅軟基地
6. ads_name 和 AcDbObjcetId相互轉(zhuǎn)換qQn紅軟基地
acdbGetAdsName(ads_name, objId);qQn紅軟基地
acdbGetObjectId(objId, ads_name);qQn紅軟基地
怎樣訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象?qQn紅軟基地
打開(kāi)對(duì)象的方法:qQn紅軟基地
acdbOpenObject() 該函數(shù)為模板函數(shù),能打開(kāi)任意對(duì)象qQn紅軟基地
acdbOpenAcDbObject()qQn紅軟基地
acdbOpenAcDbEntity()qQn紅軟基地
打開(kāi)對(duì)象的模式:qQn紅軟基地
AcDb::kForRead //只讀qQn紅軟基地
AcDb::kForWrite //可寫qQn紅軟基地
AcDb::kForNotify //通知qQn紅軟基地
升級(jí)和降級(jí)訪問(wèn):qQn紅軟基地
AcDbObject::upgradeOpen();  //升級(jí)為寫qQn紅軟基地
AcDbObject::downgradeOpen(); //降級(jí)為讀qQn紅軟基地
刪除對(duì)象qQn紅軟基地
AcDbObject::erase()qQn紅軟基地
用事務(wù)方式訪問(wèn)qQn紅軟基地
事務(wù)qQn紅軟基地
AcTransaction * AcTransactionManager::startTransaction qQn紅軟基地
AcTransactionManager::endTransaction() qQn紅軟基地
AcTransactionManager::abortTransaction(),qQn紅軟基地
virtual Acad::ErrorStatus getObject(AcDbObject*& obj, AcDbObjectId objectId, AcDb::OpenMode mode, bool openErasedObject = false)qQn紅軟基地
對(duì)象訪問(wèn)限制qQn紅軟基地
如果一個(gè)對(duì)象被寫打開(kāi),則在關(guān)閉前不能再被讀打開(kāi)或?qū)懘蜷_(kāi)qQn紅軟基地
如果一個(gè)對(duì)象被讀打開(kāi),則在關(guān)閉前不能再被寫打開(kāi),但可被讀打開(kāi)(一個(gè)對(duì)象最多可同時(shí)被打開(kāi)128次)qQn紅軟基地
對(duì)象類型識(shí)別 qQn紅軟基地
desc():qQn紅軟基地
a static member function that returns the class descriptor object of a particular (known) class.qQn紅軟基地
cast():qQn紅軟基地
 a static member function that returns an object of the specified type, or NULL if the object is not of the required class (or a derived class). qQn紅軟基地
isKindOf():qQn紅軟基地
returns whether an object belongs to the specified class (or a derived class). qQn紅軟基地
isA():qQn紅軟基地
 returns the class descriptor object of an object whose class is unknown.qQn紅軟基地
AcRxClassqQn紅軟基地
例如:qQn紅軟基地
AcDbEntity* curEntity = somehowGetAndOpenAnEntity();qQn紅軟基地
if (curEntity->isKindOf(AcDbEllipse::desc())) { }qQn紅軟基地
If(curEntity->isA() == AcDbEllipse::desc()){ } qQn紅軟基地
AcDbLine * pLine  = AcDbLine ::cast(curEntity )qQn紅軟基地
AutoCAD里的交互qQn紅軟基地
AcEd 全局函數(shù)qQn紅軟基地
String, number acquisitionqQn紅軟基地
 acedGetInt        used to get an integer value acedGetReal       used to get a real value acedGetString     used to get a string acedGetDist       used to get the distance between two pointsqQn紅軟基地
Point, angle acquisitionqQn紅軟基地
 acedGetAngle      used to get a angle value acedGetPoint      used to pick a point acedGetCornerqQn紅軟基地
Entity selectionqQn紅軟基地
acedEntSel       used to select a single entity acedNEntSel      used to select a single, nested entity acedNEntSelP     used to select a single, nested entity acedSSGet        used to select multiple entitiesqQn紅軟基地
OthersqQn紅軟基地
acedGetKword      used to get a key word acedInitGet       used to initialize acedGetXXXX functions acedGetFileD      used to retrieve file selection from a file dialogqQn紅軟基地
向ACAD發(fā)送命令qQn紅軟基地
acedCommand:立即執(zhí)行qQn紅軟基地
acedCommand(RTSTR, "zoom", RTSTR, "e", 0);qQn紅軟基地
sendStringToExecute:作為下一個(gè)命令執(zhí)行qQn紅軟基地
 CString strCmd;qQn紅軟基地
 strCmd.Format("_HNBMReservedAreaModified %d %d ", (long)ReservedAreaHandle, nType);qQn紅軟基地
 acDocManager->sendStringToExecute(acDocManager->curDocument(), strCmd, false, true, false);qQn紅軟基地
共同點(diǎn):都不能執(zhí)行有用戶交互的命令qQn紅軟基地
WCS,UCS,OCS(ECS)qQn紅軟基地
規(guī)則:數(shù)據(jù)庫(kù)中對(duì)象保存的點(diǎn)坐標(biāo)是WCS坐標(biāo)(建議);而一些acedXX函數(shù)(如acedGetPoint,acedEntSel等)、list命令一般是UCS坐標(biāo)。qQn紅軟基地
WCS與UCS相互轉(zhuǎn)換qQn紅軟基地
 //UCS坐標(biāo)系qQn紅軟基地
 fromrb.restype = RTSHORT;qQn紅軟基地
 fromrb.resval.rint = 1;qQn紅軟基地
 //WCS坐標(biāo)系qQn紅軟基地
 torb.restype = RTSHORT;qQn紅軟基地
 torb.resval.rint = 0;qQn紅軟基地
 acedTrans(pt_ucs,&fromrb,&torb,F(xiàn)ALSE,resultPt);qQn紅軟基地
acdbUcs2Wcs qQn紅軟基地
acdbWcs2Ucs qQn紅軟基地
AcDbEntity::getEcsqQn紅軟基地
UCS常用函數(shù)及類qQn紅軟基地
函數(shù):Acad::ErrorStatus acedGetCurrentUCS(AcGeMatrix3d& mat);qQn紅軟基地
(以下函數(shù)和類可看作符號(hào)表的操作模式)qQn紅軟基地
函數(shù):Acad::ErrorStatus getSymbolTable(AcDbUCSTable*& pTable,AcDb::OpenMode mode);qQn紅軟基地
類:AcDbUCSTableqQn紅軟基地
類:AcDbUCSTableRecordqQn紅軟基地
ARX應(yīng)用向?qū)?span style="display:none">qQn紅軟基地
應(yīng)用向?qū)В篛bjectARX 2006的在\ObjectARX 2006\utils\ObjARXWiz目錄下。qQn紅軟基地
功能:與MFC應(yīng)用向?qū)ь愃?span style="display:none">qQn紅軟基地
產(chǎn)生工程qQn紅軟基地
產(chǎn)生特定類及函數(shù)qQn紅軟基地
ARX,DBX加載/卸載qQn紅軟基地
加載qQn紅軟基地
ap(appload)qQn紅軟基地
arxqQn紅軟基地
其它方式(lisp文件,注冊(cè)表等)qQn紅軟基地
卸載qQn紅軟基地
apqQn紅軟基地
arxqQn紅軟基地
ARX軟件結(jié)構(gòu)qQn紅軟基地
加載:On_kInitAppMsgqQn紅軟基地
卸載:On_kUnloadAppMsgqQn紅軟基地
命令映射(arx2006或以上):qQn紅軟基地
 static void INTECAD_INTESelect(void)qQn紅軟基地
 {qQn紅軟基地
 }qQn紅軟基地
ACED_ARXCOMMAND_ENTRY_AUTO(CINTECADApp, INTECAD, _INTESelect, INTESelect, ACRX_CMD_TRANSPARENT, NULL)qQn紅軟基地
ARX & MFCqQn紅軟基地
ObjectARX 完全支持MFC。qQn紅軟基地
兩個(gè)MFC基類 AdUi and AcUi。qQn紅軟基地
注意:在調(diào)用資源時(shí)加上這句話 CAcModuleResourceOverride resOverride;qQn紅軟基地
對(duì)話框qQn紅軟基地
資源轉(zhuǎn)換,多個(gè)ARX時(shí)可能需要qQn紅軟基地
CAcModuleResourceOverride resOverride;qQn紅軟基地
qQn紅軟基地
AfxSetResourceHandle (_hdllInstance) ;qQn紅軟基地
AfxSetResourceHandle (acedGetAcadResourceInstance ()) ;qQn紅軟基地
菜單與工具條qQn紅軟基地
通過(guò)菜單文件qQn紅軟基地
COM方式添加qQn紅軟基地
例1:基本操作qQn紅軟基地
建立應(yīng)用程序qQn紅軟基地
建立命令qQn紅軟基地
實(shí)現(xiàn)功能:選中一實(shí)體,然后輸出其信息qQn紅軟基地
例2:重復(fù)產(chǎn)生同半徑的圓qQn紅軟基地
對(duì)話框輸入半徑qQn紅軟基地
用鼠標(biāo)指定圓心qQn紅軟基地
數(shù)據(jù)庫(kù)結(jié)構(gòu)查看工具qQn紅軟基地
ARXDBG工具的使用qQn紅軟基地
位置:\ObjectARX 2006\samples\database\ARXDBGqQn紅軟基地
文檔:ArxDbg.docqQn紅軟基地
本節(jié)結(jié)束qQn紅軟基地
下節(jié)將介紹自定義實(shí)體的內(nèi)容qQn紅軟基地
自定義對(duì)象類qQn紅軟基地
一般從 AcDbObject 或AcDbEntity派生qQn紅軟基地
AcDbObject:不須顯示,如字典對(duì)象qQn紅軟基地
AcDbEntity:可顯示/操作的實(shí)體qQn紅軟基地
從其他(如AcDbLine等實(shí)體類)派生:根據(jù)需要qQn紅軟基地
自定義類可繼續(xù)從另一個(gè)自定義繼承,從而繼承體系成樹(shù)狀結(jié)構(gòu)qQn紅軟基地
編寫時(shí)遵守一定的規(guī)則qQn紅軟基地
放在DBX工程中qQn紅軟基地
自定義類特點(diǎn)qQn紅軟基地
頭文件qQn紅軟基地
ACRX_DECLARE_MEMBERSqQn紅軟基地
ACDB_REGISTER_OBJECT_ENTRY_AUTOqQn紅軟基地
版本qQn紅軟基地
CPP文件qQn紅軟基地
ACRX_DXF_DEFINE_MEMBERSqQn紅軟基地
AcDbProxyEntity::kNoOperationqQn紅軟基地
assertReadEnabled ()與assertWriteEnabled () ;qQn紅軟基地
讀寫控制qQn紅軟基地
顯示刷新qQn紅軟基地
UNO/REDOqQn紅軟基地
DBX加載/卸載qQn紅軟基地
在ARX中調(diào)用qQn紅軟基地
acrxLoadModule/acrxUnloadModuleqQn紅軟基地
ARX在使用DBX的LIB庫(kù)時(shí),可能會(huì)出現(xiàn)諸如:acrxGetApiVersion找不到或ARX加載失敗的問(wèn)題.解決方法:qQn紅軟基地
在ARX和DBX工程中都增加def文件,文件內(nèi)容如下:qQn紅軟基地
EXPORTSqQn紅軟基地
 acrxEntryPoint  PRIVATEqQn紅軟基地
 acrxGetApiVersion PRIVATEqQn紅軟基地
自定義對(duì)象-讀入/寫出qQn紅軟基地
作用qQn紅軟基地
文件(DWG,DXF)讀寫qQn紅軟基地
UNDO/REDOqQn紅軟基地
CLONEqQn紅軟基地
函數(shù)qQn紅軟基地
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* filer);qQn紅軟基地
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* filer) const;qQn紅軟基地
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* filer);qQn紅軟基地
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* filer) const;qQn紅軟基地
AcDbDwgFilerqQn紅軟基地
類中常用函數(shù)qQn紅軟基地
 virtual Acad::ErrorStatus   readInt32(Adesk::Int32*) qQn紅軟基地
    virtual Acad::ErrorStatus   writeInt32(Adesk::Int32)qQn紅軟基地
 virtual Acad::ErrorStatus   readString(char**) qQn紅軟基地
virtual Acad::ErrorStatus   writeString(const char*)qQn紅軟基地
 virtual Acad::ErrorStatus   readPoint3d(AcGePoint3d*)qQn紅軟基地
    virtual Acad::ErrorStatus   writePoint3d(const AcGePoint3d&)qQn紅軟基地
 virtual Acad::ErrorStatus   readAcDbHandle(AcDbHandle*)qQn紅軟基地
    virtual Acad::ErrorStatus   writeAcDbHandle(const AcDbHandle&)qQn紅軟基地
 virtual Acad::ErrorStatus   readBytes(void *, Adesk::UInt32)qQn紅軟基地
    virtual Acad::ErrorStatus   writeBytes(const void *, Adesk::UInt32)qQn紅軟基地
讀字符串qQn紅軟基地
 char *str=NULL;qQn紅軟基地
 pFiler->readString(&str);qQn紅軟基地
 m_strPanelType=str;qQn紅軟基地
 acutDelString(str);qQn紅軟基地
自定義對(duì)象-顯示qQn紅軟基地
函數(shù):qQn紅軟基地
virtual Adesk::Boolean worldDraw( AcGiWorldDraw* mode);qQn紅軟基地
virtual void viewportDraw(AcGiViewportDraw* mode);qQn紅軟基地
區(qū)別qQn紅軟基地
worldDraw函數(shù)用來(lái)生成跟視圖無(wú)關(guān)的幾何圖形,它只生成一組幾何圖形,其他的因?yàn)橐晥D的變化而導(dǎo)致的幾何圖形變化都由AutoCAD來(lái)自動(dòng)調(diào)整,舉個(gè)例子,你生成一個(gè)立方體,這個(gè)立方體從不同的角度看所看到的外形是不一樣的,但是worldDraw只生成一個(gè)角度的幾何圖形,其他的都由AutoCAD來(lái)自動(dòng)的調(diào)整了。qQn紅軟基地
viewportDraw則不同,它可以根據(jù)不同的視圖生成不同的幾何圖形,當(dāng)你的視圖改變的時(shí)候,它自動(dòng)將幾何圖形調(diào)整到正確的狀態(tài)。有時(shí)候這兩個(gè)函數(shù)需要配合使用,例如,如果你畫圓,那就可以用worldDraw,因?yàn)闊o(wú)論你怎么變換視圖圓還是圓。但是如果你生成一些表示立體的幾何圖形有時(shí)候就需要借助于viewportDraw了,因?yàn)閷?duì)于立體圖形來(lái)說(shuō)不同的視圖看到的是不一樣的。 舉個(gè)例子來(lái)說(shuō)明其區(qū)別就是worldDraw畫出來(lái)的立體圖形,你改變了角度(也算viewport改變)后看到的有可能就不是立體圖形了,但是你用viewportDraw畫出來(lái)的就不會(huì)出現(xiàn)這樣的問(wèn)題。qQn紅軟基地
AcGiWorldDraw與AcGiViewportDrawqQn紅軟基地
類似,但AcGiViewportDraw有視口相關(guān)的矩陣和方向函數(shù)qQn紅軟基地
通過(guò)geometry得到繪圖類AcGiWorldGeometry 的對(duì)象qQn紅軟基地
通過(guò)subEntityTraits得到環(huán)境設(shè)置類AcGiSubEntityTraits 對(duì)象qQn紅軟基地
AcGiWorldGeometry與AcGiGeometryqQn紅軟基地
circleqQn紅軟基地
circularArcqQn紅軟基地
Polyline(多段線)qQn紅軟基地
polygonqQn紅軟基地
textqQn紅軟基地
pline(多義線,類似于AcDbPolyline)qQn紅軟基地
AcGiSubEntityTraitsqQn紅軟基地
常用函數(shù)qQn紅軟基地
 virtual void setColor(const Adesk::UInt16 color) = 0;qQn紅軟基地
 virtual void setTrueColor(const AcCmEntityColor& color) = 0;qQn紅軟基地
 virtual void setLayer(const AcDbObjectId layerId) = 0;qQn紅軟基地
 virtual void setLineType(const AcDbObjectId linetypeId) = 0;qQn紅軟基地
virtual void setFillType(const AcGiFillType) = 0;qQn紅軟基地
virtual void setLineWeight(const AcDb::LineWeight lw) = 0;qQn紅軟基地
virtual void setLineTypeScale(double dScale = 1.0) = 0;qQn紅軟基地
注意qQn紅軟基地
一個(gè)自定義對(duì)象的不同部分可分屬不同層qQn紅軟基地
是否填充只針對(duì)circle,polygon等封閉圖形qQn紅軟基地
例1 自定義實(shí)體-讀寫/顯示qQn紅軟基地
生成一等邊三角形的自定義實(shí)體qQn紅軟基地
中心qQn紅軟基地
外接圓半徑qQn紅軟基地
方位角qQn紅軟基地
自定義對(duì)象-夾點(diǎn)qQn紅軟基地
virtual Acad::ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const;qQn紅軟基地
virtual Acad::ErrorStatus moveGripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset);qQn紅軟基地
自定義對(duì)象-移動(dòng)qQn紅軟基地
virtual Acad::ErrorStatus transformBy( const AcGeMatrix3d& xform);qQn紅軟基地
自定義對(duì)象-拷貝qQn紅軟基地
virtual Acad::ErrorStatus deepClone(AcDbObject* pOwnerObject, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk::Boolean isPrimary = true) const;qQn紅軟基地
virtual Acad::ErrorStatus wblockClone(AcRxObject* pOwnerObject, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk::Boolean isPrimary = true) const;qQn紅軟基地
自定義對(duì)象-炸開(kāi)qQn紅軟基地
virtual Acad::ErrorStatus explode(AcDbVoidPtrArray& entitySet) const;qQn紅軟基地
自定義對(duì)象-捕捉點(diǎn)qQn紅軟基地
virtual Acad::ErrorStatus getOsnapPoints( AcDb::OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const;qQn紅軟基地
自定義對(duì)象-范圍qQn紅軟基地
 virtual Acad::ErrorStatus getGeomExtents(AcDbExtents& extents) const;qQn紅軟基地
自定義對(duì)象-listqQn紅軟基地
作用:調(diào)試檢查用.qQn紅軟基地
virtual void list() const;qQn紅軟基地
自定義對(duì)象-相交點(diǎn)qQn紅軟基地
virtual Acad::ErrorStatus intersectWith(const AcDbEntity* pEnt,AcDb::Intersect intType,AcGePoint3dArray& points,int thisGsMarker = 0,int otherGsMarker = 0) const;qQn紅軟基地
自定義對(duì)象- sub事件qQn紅軟基地
 virtual Acad::ErrorStatus subErase(Adesk::Boolean erasing);qQn紅軟基地
 virtual Acad::ErrorStatus subOpen(AcDb::OpenMode mode);qQn紅軟基地
 virtual Acad::ErrorStatus subClose();qQn紅軟基地
理解拖動(dòng)夾點(diǎn)與平移實(shí)體的工作方式qQn紅軟基地
在拖動(dòng)夾點(diǎn)時(shí),ACAD調(diào)用自定義對(duì)象重載的moveGripPointsAt函數(shù)。但這時(shí)你要注意:此時(shí)的this指針指向的自定義對(duì)象A并非數(shù)據(jù)庫(kù)中待修改的對(duì)象B,A只是ACAD復(fù)制的一個(gè)用于操作的臨時(shí)對(duì)象,它的所有持久性(即保存到文件中的)參數(shù)與B相同,非持久性參數(shù)保持構(gòu)造函數(shù)時(shí)的值。A并沒(méi)有被加入到數(shù)據(jù)庫(kù)中,所以在moveGripPointsAt不能通過(guò)database()函數(shù)獲取數(shù)據(jù)庫(kù)指針;A中的參數(shù)沒(méi)有累積性,即在moveGripPointsAt中更改了一個(gè)類成員變量m的值,下一次調(diào)用moveGripPointsAt時(shí),m的值與B中m值相同,而不是修改過(guò)的值。qQn紅軟基地
transformBy與moveGripPointsAt類似。qQn紅軟基地
本節(jié)結(jié)束qQn紅軟基地
下節(jié)將介紹自定義對(duì)象生成與編緝qQn紅軟基地
雙擊修改qQn紅軟基地
動(dòng)態(tài)生成(Jig)qQn紅軟基地
屬性頁(yè)qQn紅軟基地
實(shí)體的雙擊修改qQn紅軟基地
在ARX工程中:從AcDbDoubleClickEdit派生并重載函數(shù):qQn紅軟基地
 virtual void startEdit(AcDbEntity *pEnt, AcGePoint3d pt); qQn紅軟基地
 virtual void finishEdit(void);qQn紅軟基地
在On_kInitAppMsg中:qQn紅軟基地
if(!acrxDynamicLinker->loadModule(/*MSG0*/"ACDBLCLKEDITPE.ARX",Adesk::kFalse)) qQn紅軟基地
 {qQn紅軟基地
    AfxMessageBox("'ACDBLCLKEDITPE.ARX' Load Failed");qQn紅軟基地
 }qQn紅軟基地
 // Initialize Double Click EditingqQn紅軟基地
 AcDbDoubleClickEdit::rxInit();qQn紅軟基地
 acrxBuildClassHierarchy();qQn紅軟基地
 TYTriangleDoubleClickEdit *pTriangleDoubleClickEdit=new TYTriangleDoubleClickEdit;qQn紅軟基地
 TYTriangle::desc()->addX(AcDbDoubleClickEdit::desc(),pTriangleDoubleClickEdit);qQn紅軟基地
實(shí)體的雙擊修改qQn紅軟基地
On_kUnloadAppMsg函數(shù)中:qQn紅軟基地
TYTriangle::desc()->delX(AcDbDoubleClickEdit::desc());qQn紅軟基地
startEdit函數(shù)qQn紅軟基地
文檔加鎖qQn紅軟基地
設(shè)置資源qQn紅軟基地
顯示對(duì)話框qQn紅軟基地
修改實(shí)體qQn紅軟基地
文檔解鎖qQn紅軟基地
例1:自定義實(shí)體的雙擊修改qQn紅軟基地
可改:qQn紅軟基地
外接圓半徑qQn紅軟基地
填充qQn紅軟基地
動(dòng)態(tài)創(chuàng)建qQn紅軟基地
AcEdJigqQn紅軟基地
 virtual DragStatus sampler () ;qQn紅軟基地
 virtual Adesk::Boolean update () ;qQn紅軟基地
 virtual AcDbEntity *entity () const ;qQn紅軟基地
DragStatus drag();qQn紅軟基地
AcEdJIg中的用戶輸入函數(shù)qQn紅軟基地
 DragStatus acquireString(char *str);qQn紅軟基地
    DragStatus acquireAngle(double &ang);qQn紅軟基地
    DragStatus acquireAngle(double &ang, const AcGePoint3d& basePnt);qQn紅軟基地
    DragStatus acquireDist(double &dist);qQn紅軟基地
    DragStatus acquireDist(double &dist, const AcGePoint3d& basePnt);qQn紅軟基地
    DragStatus acquirePoint(AcGePoint3d&);qQn紅軟基地
    DragStatus acquirePoint(AcGePoint3d&, const AcGePoint3d&basePnt);qQn紅軟基地
注意:不能使用acedXXX函數(shù)qQn紅軟基地
AcEdJig:其它函數(shù)qQn紅軟基地
const char* keywordList();qQn紅軟基地
void  setKeywordList(const char*);qQn紅軟基地
const char* dispPrompt();qQn紅軟基地
void setDispPrompt(const char*, ...);qQn紅軟基地
AcEdJig::CursorType specialCursorType();qQn紅軟基地
void  setSpecialCursorType(CursorType);qQn紅軟基地
AcEdJig::UserInputControls userInputControls();qQn紅軟基地
void setUserInputControls(AcEdJig::UserInputControls);qQn紅軟基地
例2:動(dòng)態(tài)生成自定義實(shí)體qQn紅軟基地
用向?qū)苫蚴止鴮?span style="display:none">qQn紅軟基地
向?qū)傻腁cEdJig派生類有錯(cuò):qQn紅軟基地
頭文件中除去ACRX_DECLARE_MEMBERSqQn紅軟基地
CPP文件中除去ACRX_CONS_DEFINE_MEMBERSqQn紅軟基地
練習(xí)qQn紅軟基地
自定義實(shí)體qQn紅軟基地
具有N條邊的多邊形qQn紅軟基地
畫出多邊形及外接圓qQn紅軟基地
可輸入邊數(shù)N和外接圓半徑qQn紅軟基地
動(dòng)態(tài)創(chuàng)建qQn紅軟基地
在創(chuàng)建過(guò)程中顯示圖形qQn紅軟基地
在創(chuàng)建過(guò)程中顯示并可修改尺寸(選作)qQn紅軟基地
雙擊修改qQn紅軟基地
屬性頁(yè)qQn紅軟基地
優(yōu)點(diǎn):qQn紅軟基地
可批量修改多個(gè)實(shí)體的屬性qQn紅軟基地
操作步驟少qQn紅軟基地
與ACAD的已有操作更加一致qQn紅軟基地
缺點(diǎn):qQn紅軟基地
實(shí)現(xiàn)有點(diǎn)復(fù)雜qQn紅軟基地
用戶操作習(xí)慣問(wèn)題qQn紅軟基地
生成工程qQn紅軟基地
標(biāo)準(zhǔn)ATL工程qQn紅軟基地
生成ATL類qQn紅軟基地
派生qQn紅軟基地
接口qQn紅軟基地
IDLqQn紅軟基地
DBX中實(shí)體類中:qQn紅軟基地
頭文件: qQn紅軟基地
static bool   s_bHasClsid;qQn紅軟基地
static CLSID  s_clsid;qQn紅軟基地
實(shí)現(xiàn):qQn紅軟基地
initCLSID()qQn紅軟基地
getClassIDqQn紅軟基地
屬性名稱及分組qQn紅軟基地
GetDisplayNameqQn紅軟基地
GetCategoryNameqQn紅軟基地
ShowPropertyqQn紅軟基地
預(yù)定義值qQn紅軟基地
GetPredefinedStringsqQn紅軟基地
GetPredefinedValueqQn紅軟基地
顯示對(duì)話框qQn紅軟基地
MapPropertyToPageqQn紅軟基地
IOPMPropertyDialogqQn紅軟基地
字典qQn紅軟基地
字典內(nèi)可保存多個(gè)從AcDbObject派生的對(duì)象qQn紅軟基地
可用于保存全局變量,選項(xiàng)設(shè)置qQn紅軟基地
AcDbDictionary *pNameDict;qQn紅軟基地
 AcDbDictionary *pNameList;qQn紅軟基地
 pDb->getNamedObjectsDictionary(pNameDict,AcDb::kForWrite);qQn紅軟基地
 if (pNameDict->getAt("TYSOFTHNBMCAD_DICT",(AcDbObject*&)pNameList, AcDb::kForWrite) == Acad::eKeyNotFound)qQn紅軟基地
 {qQn紅軟基地
  pNameList = new AcDbDictionary;qQn紅軟基地
  AcDbObjectId DictId;qQn紅軟基地
  pNameDict->setAt("TYSOFTHNBMCAD_DICT", pNameList, DictId);qQn紅軟基地
}qQn紅軟基地
 pNameDict->close();qQn紅軟基地
 ///打開(kāi)或創(chuàng)建控制信息對(duì)象qQn紅軟基地
 AcDbObjectId objId;qQn紅軟基地
 HNBMDictItem *pDictItem;qQn紅軟基地
 if((pNameList->getAt("TYSOFTHNBMCAD_DICT_ITEM", objId))qQn紅軟基地
  == Acad::eKeyNotFound)qQn紅軟基地
 {qQn紅軟基地
  pDictItem = new HNBMDictItem;qQn紅軟基地
  Acad::ErrorStatus err=pNameList->setAt("TYSOFTHNBMCAD_DICT_ITEM", pDictItem, objId);qQn紅軟基地
  if(err!=Acad::eOk)qQn紅軟基地
  {qQn紅軟基地
   acutPrintf("\nerror in set archinfo!");qQn紅軟基地
   delete pDictItem;qQn紅軟基地
   pNameList->close();qQn紅軟基地
   return;qQn紅軟基地
  }qQn紅軟基地
  pDictItem->close();qQn紅軟基地
 } qQn紅軟基地
 pNameList->close();qQn紅軟基地
AcDbDictionary *pNameDict;qQn紅軟基地
 AcDbDictionary *pNameList;qQn紅軟基地
 pDb->getNamedObjectsDictionary(pNameDict,AcDb::kForRead);qQn紅軟基地
if (pNameDict->getAt("TYSOFTHNBMCAD_DICT",(AcDbObject*&)pNameList, qQn紅軟基地
  AcDb::kForRead) == Acad::eKeyNotFound)qQn紅軟基地
 {qQn紅軟基地
  pNameDict->close();qQn紅軟基地
  return NULL;qQn紅軟基地
 }qQn紅軟基地
 pNameDict->close();qQn紅軟基地
AcDbObjectId objId;qQn紅軟基地
 HNBMDictItem *pDictItem;qQn紅軟基地
 if((pNameList->getAt("TYSOFTHNBMCAD_DICT_ITEM", objId))== Acad::eKeyNotFound)qQn紅軟基地
 {qQn紅軟基地
  pNameList->close();qQn紅軟基地
  return NULL;qQn紅軟基地
 } qQn紅軟基地
 pNameList->close();qQn紅軟基地
if (acdbOpenObject((AcDbObject*&)pDictItem, objId,AcDb::kForRead) == Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  return pDictItem;qQn紅軟基地
 }qQn紅軟基地
qQn紅軟基地
 AcDbLayerTable *pLayerTable;qQn紅軟基地
 es=pDB->getSymbolTable(pLayerTable, AcDb::kForWrite);qQn紅軟基地
 if(es!=Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  pLinetypeTable->close();qQn紅軟基地
  return;qQn紅軟基地
 }qQn紅軟基地
 if(!pLayerTable->has("木作線(RoomLine)"))qQn紅軟基地
 {qQn紅軟基地
  pLayerTableRecord =new AcDbLayerTableRecord;qQn紅軟基地
  pLayerTableRecord->setName("木作線(RoomLine)");qQn紅軟基地
  pLayerTableRecord->setIsFrozen(false);qQn紅軟基地
  pLayerTableRecord->setIsOff(false);qQn紅軟基地
  pLayerTableRecord->setIsLocked(false);qQn紅軟基地
  pLayerTableRecord->setVPDFLT(false);qQn紅軟基地
color.setColorIndex(3);qQn紅軟基地
  pLayerTableRecord->setColor(color);qQn紅軟基地
pLinetypeTable->getAt("Continuous", LinetypeId);qQn紅軟基地
  pLayerTableRecord->setLinetypeObjectId(LinetypeId);qQn紅軟基地
  pLayerTableRecord->setLineWeight(AcDb::kLnWtByLwDefault);qQn紅軟基地
pLayerTable->add(pLayerTableRecord);qQn紅軟基地
  pLayerTableRecord->close();qQn紅軟基地
 }qQn紅軟基地
               pLayerTable->close();qQn紅軟基地
線型qQn紅軟基地
 pDB->loadLineTypeFile("DASHED", "acad.lin");//虛線qQn紅軟基地
 pDB->loadLineTypeFile(“CENTER”, “acad.lin”);//中心線qQn紅軟基地
AcDbLinetypeTable *pLinetypeTable=NULL;qQn紅軟基地
 Acad::ErrorStatus es=pDB->getSymbolTable(pLinetypeTable, AcDb::kForRead);qQn紅軟基地
 if(es!=Acad::eOk)qQn紅軟基地
  return;qQn紅軟基地
 AcDbLayerTable *pLayerTable;qQn紅軟基地
 es=pDB->getSymbolTable(pLayerTable, AcDb::kForRead);qQn紅軟基地
 if(es!=Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  pLinetypeTable->close();qQn紅軟基地
  return;qQn紅軟基地
 }qQn紅軟基地
        AcDbObjectId LinetypeId;qQn紅軟基地
 pLinetypeTable->getAt("CENTER", LinetypeId);qQn紅軟基地
        pLineTypeTable->close();qQn紅軟基地
文字樣式qQn紅軟基地
 AcDbTextStyleTable *pTextStyleTable=NULL;qQn紅軟基地
 Acad::ErrorStatus es=pDB->getSymbolTable(pTextStyleTable, AcDb::kForWrite);qQn紅軟基地
 if(es==Acad::eOk)qQn紅軟基地
 {qQn紅軟基地
  if(!pTextStyleTable->has("宋體-35"))qQn紅軟基地
  {qQn紅軟基地
   AcDbTextStyleTableRecord *pTextStyleTableRecord=new AcDbTextStyleTableRecord;qQn紅軟基地
   pTextStyleTableRecord->setName("宋體-35");qQn紅軟基地
   pTextStyleTableRecord->setFont("宋體", FALSE, FALSE, GB2312_CHARSET, DEFAULT_PITCH|FF_ROMAN);qQn紅軟基地
   pTextStyleTableRecord->setTextSize(3.5);qQn紅軟基地
   pTextStyleTableRecord->setXScale(0.8);qQn紅軟基地
   pTextStyleTable->add(pTextStyleTableRecord);qQn紅軟基地
   pTextStyleTableRecord->close();qQn紅軟基地
  }qQn紅軟基地
if(!pTextStyleTable->has("HZ-35"))qQn紅軟基地
  {qQn紅軟基地
   AcDbTextStyleTableRecord *pTextStyleTableRecord=new AcDbTextStyleTableRecord;qQn紅軟基地
   pTextStyleTableRecord->setName("HZ-35");qQn紅軟基地
   pTextStyleTableRecord->setFileName("txt.shx");qQn紅軟基地
   pTextStyleTableRecord->setBigFontFileName("hztxt.shx");qQn紅軟基地
   pTextStyleTableRecord->setTextSize(3.5);qQn紅軟基地
   pTextStyleTableRecord->setXScale(0.8);qQn紅軟基地
   Acad::ErrorStatus es=pTextStyleTable->add(pTextStyleTableRecord);qQn紅軟基地
   pTextStyleTableRecord->close();qQn紅軟基地
  }qQn紅軟基地
  pTextStyleTable->close();qQn紅軟基地
 }qQn紅軟基地
擴(kuò)展數(shù)據(jù)qQn紅軟基地
XData 容量受限制,只能存儲(chǔ)<=16KqQn紅軟基地
AcDbObject::xData ()qQn紅軟基地
AcDbObject::setXData()qQn紅軟基地
(entget( car ( entsel))' ("*") )qQn紅軟基地
封裝類:AcXdLocalVarqQn紅軟基地
XRecord 容量不受限制qQn紅軟基地
本質(zhì)上沒(méi)有區(qū)別,存貯的都是resbuf結(jié)構(gòu)的鏈表qQn紅軟基地
如果對(duì)象是自定義實(shí)體,存儲(chǔ)非圖形數(shù)據(jù)也可以作為該實(shí)體對(duì)象的屬性存儲(chǔ)起來(lái)qQn紅軟基地
XDATA舉例qQn紅軟基地
(-3 ("INTECAD_HUST_CAD_CENTER" (1000 . qQn紅軟基地
"BILLITEM") (1002 . "{") (1000 . "index") (1070 . 1) (1000 . "code") (1000 . qQn紅軟基地
"C5A") (1000 . "name") (1000 . "E5A") (1000 . "quantity") (1000 . "G5A") (1000 qQn紅軟基地
. "lineblock") (1005 . "0") (1000 . "circle") (1005 . "21B") (1002 . "}") (1000 qQn紅軟基地
. "OBJECT") (1002 . "{") (1000 . "OBJECTID") (1000 . "BILLITEM") (1002 . "}"))))qQn紅軟基地
為一鏈表,表頭為RegAppName,每一節(jié)點(diǎn)為一resbuf的結(jié)構(gòu),此結(jié)構(gòu)為聯(lián)合數(shù)據(jù)結(jié)構(gòu),可存字符串,整數(shù)等類型qQn紅軟基地
 struct  resbuf  *pRb, *pTemp;qQn紅軟基地
 pRb = pObj->xData("architech_3d_code";);qQn紅軟基地
 if (pRb != NULL) qQn紅軟基地
 {qQn紅軟基地
  // If xdata is present, then walk to the end of the list.qQn紅軟基地
  for (pTemp = pRb; pTemp->rbnext != NULL; pTemp = pTemp->rbnext)qQn紅軟基地
   ;qQn紅軟基地
 } qQn紅軟基地
 else qQn紅軟基地
 {qQn紅軟基地
  //以調(diào)用過(guò)acdbRegApp(“architech_3d_code”);qQn紅軟基地
  pRb = acutNewRb(AcDb::kDxfRegAppName);qQn紅軟基地
  pTemp = pRb;qQn紅軟基地
  pTemp->resval.rstring = (TCHAR*) new TCHAR[GetArchitechCodeName().GetLength() + 1];qQn紅軟基地
  _tcscpy(pTemp->resval.rstring, GetArchitechCodeName());qQn紅軟基地
 }qQn紅軟基地
// Add user-specified std::TSTDSTRING to the xdata.qQn紅軟基地
 pTemp->rbnext = acutNewRb(AcDb::kDxfXdAsciiString);qQn紅軟基地
 pTemp = pTemp->rbnext;qQn紅軟基地
 pTemp->resval.rstring =  (TCHAR*) new TCHAR[_tcslen(resString) + 1];qQn紅軟基地
 _tcscpy(pTemp->resval.rstring, resString);qQn紅軟基地
// The following code shows the use of upgradeOpen() to change the entity from read to write.qQn紅軟基地
 pObj->upgradeOpen();qQn紅軟基地
 pObj->setXData(pRb);qQn紅軟基地
 acutRelRb(pRb);qQn紅軟基地
XRecord創(chuàng)建qQn紅軟基地
創(chuàng)建對(duì)象的擴(kuò)展字典qQn紅軟基地
AcDbObject::createExtensionDictionary();qQn紅軟基地
AcDbObjectId AcDbObject::extensionDictionary(); qQn紅軟基地
生成AcDbXrecord并加入字典qQn紅軟基地
AcDbXrecord *pXrec = new AcDbXrecord qQn紅軟基地
acdbOpenObject(pDict, dictObjId, AcDb::kForWrite); qQn紅軟基地
pDict->setAt("ASDK_XREC1", pXrec, xrecObjId); qQn紅軟基地
用鏈表填充AcDbXrecordqQn紅軟基地
pXrec->setFromRbChain(*head);qQn紅軟基地
反應(yīng)器qQn紅軟基地
非持久性(transient Reactor)qQn紅軟基地
數(shù)據(jù)庫(kù)反應(yīng)器:AcDbDatabaseReactor qQn紅軟基地
文檔反應(yīng)器:AcApDocManagerReactor qQn紅軟基地
其它qQn紅軟基地
持久性(persistent Reactor)qQn紅軟基地
數(shù)據(jù)庫(kù)中的對(duì)象之間qQn紅軟基地
區(qū)別:是否能保存到數(shù)據(jù)庫(kù)中qQn紅軟基地
持久反應(yīng)器-建立qQn紅軟基地
TYTriangle *pTriangle=new TYTriangle;qQn紅軟基地
AcDbObjectId TriangleId;qQn紅軟基地
AppendEntityToDb(pTriangle, NULL, &TriangleId);qQn紅軟基地
pTriangle->close();qQn紅軟基地
AcDbLine *pL=new AcDbLine(AcGePoint3d(0, 50, 0), AcGePoint3d(100, 50, 0));qQn紅軟基地
AppendEntityToDb(pL);qQn紅軟基地
pL->addPersistentReactor(TriangleId);qQn紅軟基地
pL->close();qQn紅軟基地
持久反應(yīng)器-事件處理qQn紅軟基地
void TYTriangle::modified        (const AcDbObject* dbObj)qQn紅軟基地
{qQn紅軟基地
 if(dbObj->isKindOf(AcDbLine::desc()))qQn紅軟基地
 {qQn紅軟基地
  AcDbLine *pLine=AcDbLine::cast(dbObj);qQn紅軟基地
  AcGeVector3d dir=pLine->startPoint()-pLine->endPoint();qQn紅軟基地
  double dblAngle=AcGeVector3d::kXAxis.angleTo(dir, AcGeVector3d::kZAxis);qQn紅軟基地
Adesk::Boolean kWritable;qQn紅軟基地
  Acad::ErrorStatus es=upgradeFromNotify(kWritable);qQn紅軟基地
  if(es==Acad::eOk)qQn紅軟基地
  {qQn紅軟基地
   if(isWriteEnabled())qQn紅軟基地
   {qQn紅軟基地
    SetStartAngle(dblAngle);qQn紅軟基地
   }qQn紅軟基地
downgradeToNotify(kWritable);qQn紅軟基地
  }qQn紅軟基地
 }qQn紅軟基地
}qQn紅軟基地
AutoCAD二次開(kāi)發(fā)特點(diǎn)總結(jié)qQn紅軟基地
ObjectARX:面向?qū)ο,功能?qiáng)大,事實(shí)上的工業(yè)標(biāo)準(zhǔn)(類似者:ZRX,CRX)qQn紅軟基地
學(xué)習(xí)材料豐富,代碼多,開(kāi)發(fā)人員多,交流方便,入門容易qQn紅軟基地
市場(chǎng)需求大qQn紅軟基地
進(jìn)入門檻低qQn紅軟基地
是用于學(xué)習(xí)和練習(xí)C++和CAD開(kāi)發(fā)的不錯(cuò)選擇qQn紅軟基地
~完~qQn紅軟基地
謝謝各位!qQn紅軟基地

培訓(xùn)ppt課件模板:這是培訓(xùn)ppt課件模板,包括了文章背景知識(shí),認(rèn)字識(shí)詞朗誦,課文賞析,拓展訓(xùn)練/分組練習(xí)等內(nèi)容,歡迎點(diǎn)擊下載。

幼兒教師師德培訓(xùn)ppt1:這是幼兒教師師德培訓(xùn)ppt1,包括了引言,幼兒園教師師德現(xiàn)狀,幼兒園師德建設(shè)存在的問(wèn)題,原因分析,對(duì)策建議等內(nèi)容,歡迎點(diǎn)擊下載。

釘釘培訓(xùn)ppt:這是釘釘培訓(xùn)ppt,包括了釘釘軟件介紹,釘釘常用功能,公司啟用釘釘考勤操作指南,公司啟用釘釘時(shí)間等內(nèi)容,歡迎點(diǎn)擊下載。

PPT分類Classification

Copyright:2009-2024 紅軟網(wǎng) rsdown.cn 聯(lián)系郵箱:rsdown@163.com

黑ICP備2025041396號(hào)-1