ARX二次开发 遍历删除所有的约束
文章目錄
- 前言
- 一、操作約束的菜單
- 二、使用約束的意義
- 下述說(shuō)明摘抄自網(wǎng)友:
- 三、遍歷刪除約束
- 總結(jié)
前言
AutoCAD自從2010版本開(kāi)始,就多了參數(shù)化約束的功能,這個(gè)功能在三維軟件中是很常用的,而從事多年AutoCAD平面制圖的人很少用到,對(duì)其功能不是很了解。與此同時(shí),對(duì)于二次開(kāi)發(fā)人員,操作約束的參考示例例子更是不多,本文拋磚引玉,簡(jiǎn)單介紹。
提示:首先截幾個(gè)AutoCAD2014的圖,然后上代碼進(jìn)行示例操作
一、操作約束的菜單
autocad2014中的約束分為幾何約束和標(biāo)注約束
1.幾何約束:它控制的是對(duì)象彼此之間的關(guān)系,比如相切、平行、垂直、共線等等。
2.標(biāo)注約束:它控制的是對(duì)象的具體尺寸,比如距離、長(zhǎng)度、半徑值等等。
一般情況下,我們建議大家先使用幾何約束確定圖形的形狀,再使用標(biāo)注約束,確定圖形的尺寸。
約束可以設(shè)置成可見(jiàn),也可以設(shè)置成不可見(jiàn),具體還有很多自定義設(shè)置,如下圖:
二、使用約束的意義
下述說(shuō)明摘抄自網(wǎng)友:
由于傳統(tǒng)的cad系統(tǒng)是面向具體的幾何形狀,屬于交互式繪圖,要想改變圖形大小的尺寸,可能需要對(duì)原有的整個(gè)圖形進(jìn)行修改或重建,這就增加了設(shè)計(jì)人員的工作負(fù)擔(dān),大大降低了工作效率。
而使用參數(shù)化的圖形,要繪制與該圖結(jié)構(gòu)相同,但是尺寸大小不同的圖形時(shí),只需根據(jù)需要更改對(duì)象的尺寸,整個(gè)圖形將自動(dòng)隨尺寸參數(shù)而變化,但形狀不變。參數(shù)化技術(shù)適合應(yīng)用于繪制結(jié)構(gòu)相似的圖形而要繪制參數(shù)化圖形,“約束”是不可少的要素,約束是應(yīng)用于二維幾何圖形的一種關(guān)聯(lián)和限制方法。
其實(shí)很多建模工作流都有異曲同工之妙,例如AutoCad的動(dòng)態(tài)快、Revit的族參數(shù)化建模、ArchiCAD的GDL參數(shù)化建模等等。
三、遍歷刪除約束
//spaceId是當(dāng)前workingDataSpace 的ID Acad::ErrorStatus DeleteAllConstraints(const AcDbObjectId& spaceId) {AcDbObjectId networkId = AcDbAssocNetwork::getInstanceFromObject(spaceId, true);if (networkId.isNull()){return Acad::eNullObjectId;}AcDbObjectPointer<AcDbAssocNetwork> pNetwork(networkId, kForRead);if (pNetwork.openStatus() != Acad::eOk){return Acad::eNullObjectId;}const AcDbObjectIdArray& actionsInNetwork = pNetwork->getActions();for (int nCount = 0; nCount < actionsInNetwork.length(); ++nCount){const AcDbObjectId& idAction = actionsInNetwork[nCount];if (idAction == AcDbObjectId::kNull)continue;if ( actionsInNetwork[nCount].objectClass() == NULL ||!actionsInNetwork[nCount].objectClass()->isDerivedFrom(AcDbAssoc2dConstraintGroup::desc()))continue;AcDbObjectPointer<AcDbAssoc2dConstraintGroup> pAction(idAction, kForWrite);if (pAction.openStatus() != Acad::eOk)continue;AcDbAssoc2dConstraintGroup* pConstGrp = static_cast<AcDbAssoc2dConstraintGroup*>(pAction.object());if (!pConstGrp)continue;pConstGrp->erase();}return Acad::eOk; } ## 2.關(guān)鍵說(shuō)明AcDbAssoc2dConstraintGroup:所有的約束關(guān)系都保存在約束組(AcDbAssoc2dConstraintGroup)里面,怎樣獲得約束組即是關(guān)鍵所在。總結(jié)
…
總結(jié)
以上是生活随笔為你收集整理的ARX二次开发 遍历删除所有的约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql集群多管理节点_项目进阶 之
- 下一篇: win7ie11调用java失败,Win