日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ARX二次开发 遍历删除所有的约束

發(fā)布時(shí)間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARX二次开发 遍历删除所有的约束 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、操作約束的菜單
  • 二、使用約束的意義
      • 下述說(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。