版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章塊操作目錄CONTENTS01知識(shí)講解02任務(wù)一:創(chuàng)建塊03任務(wù)二:插入塊04任務(wù)三:屬性塊PART01知識(shí)講解01知識(shí)講解塊的概念塊定義塊參照屬性塊塊表學(xué)習(xí)模塊簡單理解,塊就是由簡單實(shí)體組合而成的一個(gè)整體。使用塊可以避免重復(fù)操作,并且方便修改和編輯,不同的塊還可以展示不同屬性。塊的概念01知識(shí)講解01知識(shí)講解塊定義是塊的模板,它包含了塊的圖形實(shí)體、屬性定義和其他相關(guān)信息。塊定義中定義了塊的形狀和屬性,可以用于在圖紙中創(chuàng)建塊參照。所有的實(shí)體都保存在塊表記錄中,而塊表記錄則存儲(chǔ)在塊表中。實(shí)際上,用戶在ZWCAD中定義塊相當(dāng)于增加了一個(gè)塊表記錄,塊表記錄的名稱就是塊定義的名稱。塊定義ZWCAD有塊定義和塊參照兩個(gè)概念。塊定義不是一個(gè)實(shí)體,而是一種對實(shí)體的描述,通過定義塊完成,塊參照則是一種實(shí)體,圖形窗口中顯示“塊”都是塊參照,通過插入塊獲得。塊參照是實(shí)際插入到圖紙中的塊的實(shí)例。塊參照可以使用預(yù)先設(shè)置好的塊定義創(chuàng)建,并可以在圖紙中的多個(gè)位置進(jìn)行插入和放置。塊參照是塊的副本,它可以獨(dú)立于塊定義進(jìn)行移動(dòng)、旋轉(zhuǎn)和修改屬性值。插入塊參照時(shí),CAD會(huì)將塊定義的圖形實(shí)體和屬性復(fù)制到指定位置。塊參照01知識(shí)講解屬性塊是塊的一種特殊實(shí)體,它可以包含與塊參照關(guān)聯(lián)的文本或值,是與塊參照關(guān)聯(lián)的附加信息,包含文本、值、單位等信息。屬性塊可以用于創(chuàng)建自動(dòng)化的圖紙標(biāo)注、注釋和數(shù)據(jù)提取,并且可以在塊參照中進(jìn)行編輯和修改。屬性塊01知識(shí)講解塊表是CAD圖形數(shù)據(jù)庫中的一個(gè)表,用于存儲(chǔ)所有的塊定義。塊表維護(hù)著塊定義的名稱和對應(yīng)的ObjectId,可以通過塊表來獲取、創(chuàng)建和管理塊定義。塊表01知識(shí)講解PART02創(chuàng)建塊02創(chuàng)建塊塊是CAD繪圖中的很重要的一部分,學(xué)習(xí)通過二次開發(fā)接口創(chuàng)建塊,培養(yǎng)ZRX二次開發(fā)的基礎(chǔ)能力任務(wù)背景任務(wù)目標(biāo)實(shí)施思路調(diào)用ZRX二次開發(fā)接口,自定義函數(shù)實(shí)現(xiàn)塊的創(chuàng)建學(xué)習(xí)和了解創(chuàng)建塊的ZRX二次開發(fā)接口設(shè)計(jì)自定義函數(shù)的功能,調(diào)用二次開發(fā)接口完成塊的創(chuàng)建任務(wù)實(shí)施步驟一:獲得當(dāng)前圖形數(shù)據(jù)庫的塊表,向其中添加一條新的塊表記錄創(chuàng)建塊就是向塊表中添加一個(gè)新的塊表記錄,新的塊表記錄通過AcDbBlockTableRecord函數(shù)創(chuàng)建//創(chuàng)建新的塊表記錄AcDbBlockTableRecord*pBlkTblRcd=newAcDbBlockTableRecord();任務(wù)實(shí)施步驟二:設(shè)計(jì)并實(shí)現(xiàn)創(chuàng)建塊的自定義函數(shù)voidCreateBlock(){
//獲得當(dāng)前圖形數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);
//創(chuàng)建新的塊表記錄
AcDbBlockTableRecord*pBlkTblRcd=newAcDbBlockTableRecord();
//根據(jù)用戶的輸入設(shè)置塊表記錄的名稱
TCHARblkName[40]; if(acedGetString(Adesk::kFalse,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { pBlkTbl->close(); deletepBlkTblRcd; return; } pBlkTblRcd->setName(blkName);
//將塊表記錄添加到塊表中
AcDbObjectIdblkDefId; autoes=pBlkTbl->add(blkDefId,pBlkTblRcd); if(es!=Acad::eOk){ acutPrintf(TEXT("添加塊定義失敗")); deletepBlkTblRcd; pBlkTbl->close(); return; } pBlkTbl->close(); pBlkTblRcd->close();}成果展示://驗(yàn)證函數(shù)功能voidCreateBlock(){
//獲得當(dāng)前圖形數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);
//創(chuàng)建新的塊表記錄
AcDbBlockTableRecord*pBlkTblRcd=newAcDbBlockTableRecord();
//根據(jù)用戶的輸入設(shè)置塊表記錄的名稱
TCHARblkName[40]; if(acedGetString(Adesk::kFalse,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { pBlkTbl->close(); deletepBlkTblRcd; return; } pBlkTblRcd->setName(blkName);
//將塊表記錄添加到塊表中
AcDbObjectIdblkDefId; autoes=pBlkTbl->add(blkDefId,pBlkTblRcd); if(es!=Acad::eOk){ acutPrintf(TEXT("添加塊定義失敗")); deletepBlkTblRcd; pBlkTbl->close(); return; } pBlkTbl->close(); pBlkTblRcd->close();}課后思考:調(diào)用ZRX二次開發(fā)接口創(chuàng)建一個(gè)塊定義,該塊定義中是一個(gè)軸承的塊。PART03插入塊03插入塊塊是CAD繪圖中的很重要的一部分,學(xué)習(xí)通過二次開發(fā)接口插入塊,培養(yǎng)ZRX二次開發(fā)的基礎(chǔ)能力任務(wù)背景任務(wù)目標(biāo)實(shí)施思路調(diào)用ZRX二次開發(fā)接口,自定義函數(shù)實(shí)現(xiàn)塊的插入學(xué)習(xí)和了解創(chuàng)建塊的ZRX二次開發(fā)接口設(shè)計(jì)自定義函數(shù)的功能,調(diào)用二次開發(fā)接口完成塊的插入任務(wù)實(shí)施步驟一:學(xué)習(xí)插入塊的ZRX二次開發(fā)接口在ZRX編程中,塊參照由AcDbBlockReference類來表示AcDbBlockReference(
//position是塊參照的插入點(diǎn)constAcGePoint3d&position,//blockTableRec是塊參照所參照的塊表記錄(塊定義)的ID。AcDbObjectIdblockTableRec);任務(wù)實(shí)施步驟二:設(shè)計(jì)并實(shí)現(xiàn)插入塊的自定義函數(shù)voidInsertBlock(){ //獲得用戶輸入的塊定義名稱
TCHARblkName[40]; if(acedGetString(0,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { return; }
//獲得當(dāng)前數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);
//查找用戶指定的塊定義是否存在
if(!pBlkTbl->has(blkName)) { acutPrintf(TEXT("\n當(dāng)前圖形中未包含指定名稱的塊定義!")); pBlkTbl->close(); return; }
//獲得用戶指定的塊表記錄
AcDbObjectIdblkDefId; pBlkTbl->getAt(blkName,blkDefId); pBlkTbl->close();
//獲得用戶輸入的塊參照的插入點(diǎn)
ads_pointpt; if(acedGetPoint(NULL,TEXT("\n輸入塊參照的插入點(diǎn):"),pt)!=RTNORM) { pBlkTbl->close(); return; } AcGePoint3dptInsert=asPnt3d(pt); //創(chuàng)建塊參照對象
AcDbBlockReference*pBlkRef=newAcDbBlockReference(ptInsert,blkDefId);
//將塊參照添加到模型空間
UtilsFunc::PostToModel(pBlkRef);}成果展示://驗(yàn)證插入塊的函數(shù)功能voidInsertBlock(){ //獲得用戶輸入的塊定義名稱
TCHARblkName[40]; if(acedGetString(0,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { return; }
//獲得當(dāng)前數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);
//查找用戶指定的塊定義是否存在
if(!pBlkTbl->has(blkName)) { acutPrintf(TEXT("\n當(dāng)前圖形中未包含指定名稱的塊定義!")); pBlkTbl->close(); return; }
//獲得用戶指定的塊表記錄
AcDbObjectIdblkDefId; pBlkTbl->getAt(blkName,blkDefId); pBlkTbl->close();
//獲得用戶輸入的塊參照的插入點(diǎn)
ads_pointpt; if(acedGetPoint(NULL,TEXT("\n輸入塊參照的插入點(diǎn):"),pt)!=RTNORM) { pBlkTbl->close(); return; } AcGePoint3dptInsert=asPnt3d(pt); //創(chuàng)建塊參照對象
AcDbBlockReference*pBlkRef=newAcDbBlockReference(ptInsert,blkDefId);
//將塊參照添加到模型空間
UtilsFunc::PostToModel(pBlkRef);}課后思考:結(jié)合上一節(jié)內(nèi)容,調(diào)用ZRX二次開發(fā)接口,插入一個(gè)圖形為軸承的塊參照。PART04塊屬性03屬性塊屬性塊是CAD繪圖中的很重要的一部分,學(xué)習(xí)通過二次開發(fā)接口創(chuàng)建和插入屬性塊,培養(yǎng)ZRX二次開發(fā)的基礎(chǔ)能力任務(wù)背景任務(wù)目標(biāo)實(shí)施思路調(diào)用ZRX二次開發(fā)接口,自定義函數(shù)實(shí)現(xiàn)屬性塊的創(chuàng)建和插入學(xué)習(xí)和了解創(chuàng)建和插入屬性塊的ZRX二次開發(fā)接口設(shè)計(jì)自定義函數(shù)的功能,調(diào)用二次開發(fā)接口完成屬性塊的創(chuàng)建和插入任務(wù)實(shí)施步驟一:創(chuàng)建屬性塊的自定義函數(shù)在ZRX編程中,屬性塊的創(chuàng)建與塊定義的創(chuàng)建類似voidCreateAttBlk(){
//獲得當(dāng)前圖形數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);
//創(chuàng)建新的塊表記錄
AcDbBlockTableRecord*pBlkTblRcd=newAcDbBlockTableRecord();
//根據(jù)用戶的輸入設(shè)置塊表記錄的名稱
TCHARblkName[40]; if(acedGetString(Adesk::kFalse,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { pBlkTbl->close(); deletepBlkTblRcd; return; } pBlkTblRcd->setName(blkName);
//將塊表記錄添加到塊表中
AcDbObjectIdblkDefId; pBlkTbl->add(blkDefId,pBlkTblRcd); pBlkTbl->close();
//向塊表記錄中添加實(shí)體
AcGePoint3dptStart(-10,0,0),ptEnd(10,0,0); AcDbLine*pLine1=newAcDbLine(ptStart,ptEnd); //創(chuàng)建一條直線
ptStart.set(0,-10,0); ptEnd.set(0,10,0); AcDbLine*pLine2=newAcDbLine(ptStart,ptEnd); //創(chuàng)建一條直線
AcGeVector3dvecNormal(0,0,1); AcDbCircle*pCircle=newAcDbCircle(AcGePoint3d::kOrigin,vecNormal,6);//創(chuàng)建一個(gè)圓
AcDbAttributeDefinition*pAttDef=newAcDbAttributeDefinition(AcGePoint3d(0,0,0),TEXT("20"),TEXT("直徑"),TEXT("輸入直徑"));
AcDbObjectIdentId; pBlkTblRcd->appendAcDbEntity(entId,pLine1); pBlkTblRcd->appendAcDbEntity(entId,pLine2); pBlkTblRcd->appendAcDbEntity(entId,pCircle); pBlkTblRcd->appendAcDbEntity(entId,pAttDef); pLine1->close(); pLine2->close(); pCircle->close(); pAttDef->close(); pBlkTblRcd->close();}任務(wù)實(shí)施步驟二:插入屬性塊的自定義函數(shù)voidInsertAttBlk(){
//獲得用戶輸入的塊定義名稱
TCHARblkName[40]; if(acedGetString(Adesk::kFalse,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { return; }
//獲得當(dāng)前數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite); //查找用戶指定的塊定義是否存在
if(!pBlkTbl->has(blkName)) { acutPrintf(TEXT("\n當(dāng)前圖形中未包含指定名稱的塊定義!")); pBlkTbl->close(); return; }
//獲得用戶指定的塊表記錄
AcDbObjectIdblkDefId; pBlkTbl->getAt(blkName,blkDefId); pBlkTbl->close(); //獲得用戶輸入的塊參照的插入點(diǎn)
ads_pointpt; if(acedGetPoint(NULL,TEXT("\n輸入塊參照的插入點(diǎn):"),pt)!=RTNORM) { pBlkTbl->close(); return; } AcGePoint3dptInsert=asPnt3d(pt); //創(chuàng)建塊參照對象
AcDbBlockReference*pBlkRef=newAcDbBlockReference(ptInsert,blkDefId); //創(chuàng)建塊屬性對象
AcDbAttribute*pAtt=newAcDbAttribute(); pAtt->setTag(TEXT("直徑")); pAtt->setTextString(TEXT("50")); pAtt->setPosition(ptInsert); pBlkRef->appendAttribute(pAtt);
//將塊參照添加到模型空間
UtilsFunc::PostToModel(pBlkRef);}成果展示://驗(yàn)證插入屬性塊的函數(shù)功能voidInsertAttBlk(){
//獲得用戶輸入的塊定義名稱
TCHARblkName[40]; if(acedGetString(Adesk::kFalse,TEXT("\n輸入圖塊的名稱:"),blkName)!=RTNORM) { return; }
//獲得當(dāng)前數(shù)據(jù)庫的塊表
AcDbBlockTable*pBlkTbl=NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite); //查找用戶指定的塊定義是否存在
if(!pBlkTbl->has(bl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年商洛市中心醫(yī)院招聘(35人)筆試備考重點(diǎn)題庫及答案解析
- 2025忻州原平市招聘社區(qū)專職工作人員模擬筆試試題及答案解析
- 2025西安張家堡社區(qū)衛(wèi)生服務(wù)中心招聘(5人)備考考試題庫及答案解析
- 2025年甘肅省隴南市武都區(qū)第三人民醫(yī)院招聘鄉(xiāng)村醫(yī)生模擬筆試試題及答案解析
- 2025安徽金鼎物業(yè)管理有限責(zé)任公司社會(huì)招聘2人備考考試試題及答案解析
- 2025廣西來賓市興賓區(qū)石陵供銷合作社招聘出納1人備考考試試題及答案解析
- 2025年環(huán)境風(fēng)險(xiǎn)防控合作協(xié)議
- 2025廣西欽州市兒童福利院編外人員招聘1人模擬筆試試題及答案解析
- 2025寧夏海望(寧東)新材料科技有限公司招聘8人備考考試題庫及答案解析
- 2025年福建省南平市政和縣教育緊缺急需學(xué)科教師專項(xiàng)招聘(四)模擬筆試試題及答案解析
- 《神女賦》全文(注音)釋義及解析
- 2025-2026學(xué)年一年級上冊數(shù)學(xué)人教版(2024)全冊教案(教學(xué)設(shè)計(jì))-
- 員工培訓(xùn)法律法規(guī)知識(shí)課件
- 電動(dòng)汽車充電樁建設(shè)規(guī)范設(shè)計(jì)方案
- 2025江蘇中復(fù)神鷹碳纖維股份有限公司招聘1人筆試歷年參考題庫附帶答案詳解
- 2025中國紅十字會(huì)總會(huì)備災(zāi)救災(zāi)中心招聘筆試歷年參考題庫附帶答案詳解
- 裝修工程檢測方案模板(3篇)
- CWPC2025第十一屆中國國際風(fēng)電復(fù)合材料創(chuàng)新發(fā)展論壇暨展覽會(huì):大型風(fēng)電葉片夾芯材料應(yīng)用探討
- 鋼筋工入場安全教育試卷及答案
- 噴淋頭消防知識(shí)培訓(xùn)內(nèi)容課件
- 2025年陜西省專業(yè)技術(shù)人員繼續(xù)教育公需課試題及答案
評論
0/150
提交評論