舉個畫三角型的多邊形來做說明好了:
當你選擇畫多邊形:座標輸入 -> 1,1 -> 10,1 -> 10,10 -> c
你選擇該圖元的性質,他是封閉狀況,且點位數只有三個。如下:
但是一般使用者,用滑鼠抓點,一般不太會注意是否已經是到了結束點,或是點上結束點認定封閉,如:1,1 -> 10,1 -> 10,10 -> 1,1
你會發現圖元性質是開啟的,且點位有四個。如下:
不知道是AutoCAD笨,還是其他考量!明明首點與末點是重合點,怎麼會判斷是開放聚合線而不是封閉聚合線呢?
或許對繪圖使用者來說,圖形一模一樣,沒差;但是對程式來說,卻是差粉大。
一則是會讓程式誤判封閉或開放條件,二則是會誤判多邊形邊數。
在程式中要如何處理?~~~
1.可以先利用ent.Coordinates 陣列屬性,先區分起始點是否等於最終點。
If ent.Coordinates(0)= ent.Coordinates(Ubond(ent.Coordinates)-1) and ent.Coordinates(1)= ent.Coordinates(Ubond(ent.Coordinates)) Then .....
2.若True的話,則將座標陣列先導出,做Redim,
Dim varCoods as Variant
varCoods=ent.Coordinates
Dedim Preserve varCoods( Ubond(varCoods)-2)
3. 再餵回去原來的元件,
ent.Coordinates=varCoods
4. 當然別忘記變更該元件的Closed屬性。
ent.Closed=True
搞定....(PS:程式碼可能會有拼字錯誤,請自行修正)
似乎用OVERKILL也可處理
回覆刪除overkill似乎在AutoCAD平台來做處理的指令,程式上似乎沒這個Method,不過還是感謝您的提供 ^-^
刪除