ObjectARX完美實現一次拖動多個實體(上)

2021-05-26 02:59:20 字數 773 閱讀 5150

我們知道,在objectarx中可以通過派生acedjig類來實現拖動過程。通常派生乙個acedjig類必須過載以下三個成員函式:

acedjig::sampler(),它獲取幾何值(角度、距離、點等)

acedjig::update(),它分析幾何值並且儲存該值或更新實體

acedjig::entity(),它返回要更新的實體的指標

但在使用過程中發現有乙個問題,就是acedjig::entity()只能返回單個實體的指標,也就是說使用acedjig類的派生類來實現拖動迴圈原則上只適用於單個實體,要使其適用於拖動多個實體,就不得不進行某些變通的處理。例如要對若干個新建的實體使用拖動,一種變通方法就是把新建的實體先加入cad的資料庫,在拖動過程中(即update()中)使用acd::kforwrite模式開啟並更新實體然後關閉。拖動結束後根據返回情況決定是保留還是刪除實體。這樣做顯得很麻煩,一是要對新生成的實體作區別處理,entity()返回的實體和"其它"實體;二是先把實體加入資料庫,然後再決定是否刪除不應該是一種推薦的方式,總感覺有那麼點不自在;拖動過程中頻繁地用寫方式開啟實體也應該避免;而且這種方式並不適用資料庫中已存在的實體,因為一旦取消拖動過程,實體可能已經不處在原來的位置了,當然可以通過複製臨時實體的方式解決,但這就進一步使問題複雜化了。

既然acedjig::entity()只能返回乙個實體,最好的辦法當然是從這個實體上入手了,我們使用乙個自定義的臨時實體,完美解決了這個問題,今天先來看新建實體的例子:

先定義臨時實體:

再實現acedjig派生類:

最後是測試命令:

記Python 「使用者環境」的一次完美應用

我的 github 在之前寫過一篇關於虛擬環境使用的文章 python 虛擬環境使用指南.但是還沒有好好的介紹一下 python 的使用者環境,原因是自己一直沒遇到要使用使用者環境的使用場景,所以就一直懶得寫。恰巧這兩天,自己遇到了乙個使用使用者環境的體驗可以完爆虛擬環境的案例,就拿出來分享一下。公...

只有一次 只有一次

二十多歲的年紀我累了很久,也在努力的尋找機會向陽而生。十三歲時迫於生活父母把剛上初一的我獨自留在老家,被父母伺候慣的我沒有一點生活常識,不懂得如何把衣服洗淨,不懂得如何生火做飯,不懂得如何花錢,不懂得如何戰勝黑暗和孤獨,每次乙個人回家時都會出現幻聽和幻覺,看著家裡好像有炊煙,聽誰都像媽媽的聲音.好不...

一次網頁實現的總結

2019 7 31 22 46 15 師傅給的案例其實很簡單,但是花了兩天才做完,整整兩天,累計花費的時間超過20個小時。我逐漸意識到,這裡面不光是技能熟練度的問題,還是方式方法的問題。從功能的實現上來看這次工作能把樣式基本上都做出來是完成了任務,但從細節去體會期中的問題是還存在不少細小的問題,這一...