objectarx 得到有寬度的多段線的輪廓

2022-01-11 20:47:40 字數 1202 閱讀 9432

使用到的命令是:_.wmfout和_.import以及pedit

步驟:1.先通過_.wmfout和_.import得到輪廓線,得到的輪廓線是乙個塊。方法如下:

//

ssname:選擇的有寬度的多段線

static acdbobjectid wmfoutin(ads_name&ssname)

return

acdbobjectid::knull;

}

view code

2.炸開這個塊,得到的是2維多段線集合。acdb2dpolyline 在炸開,得到直線集合。

acdbvoidptrarray voidarr;

es = pblk->explode(voidarr);

if (es ==errorstatus::eok)

}delete pl2d;

pl2d =null;}}

3.這樣得到的直線集合,發現除了能得到輪廓之後,在輪廓內部還會有重疊的直線,所以這一步就是刪除輪廓內部重疊的直線。

for (int i = 0; i < (int)veclines.size(); i++)

int m = 0

;

for (int j = i + 1; j < (int)veclines.size(); j++)

if (isequal(l1->startpoint(), l2->startpoint(), 1e-4) && isequal(l1->endpoint(), l2->endpoint(), 1e-4

)) }

}

view code

4.到了這一步就只剩下輪廓直線集合了,這步就把這個剩餘的直線轉換為多段線。我使用的pedit命令,這個命令具體用法,詳見另一篇部落格:

這裡做的不好的是,在第4步,需要再次選擇一下,我本來是直接通過:

int acedssadd(

const ads_name ename,

const ads_name sname,

ads_name result

);但是新增出來的result用pe命令合成多段線始終不成功,所以只能手動選擇一次,得到result集合,再合成多段線了。。

ObjectArx不同座標系統的變換

1.點或向量變換 acdbucs2ecs 將點從ucs座標系 變換到 ocs ecs 座標系 acdbecs2ucs acdbucs2wcs 將點從ucs座標系 變換到 wcs座標系 acdbwcs2ucs acdbecs2wcs 將點從e座標系 變換到 wcs座標系 acdbwcs2ecs 獲取滑...

得到螢幕大小的方法大全 你知道有幾種?

1.使用getsystemmetrics 函式 如 int cx getsystemmetrics sm cxfullscreen 得到寬度 int cy getsystemmetrics sm cyfullscreen 得到高度 注意 sm cxscreen 和sm cyscreen 與上面的區別...

字元的寬度

資料庫領域處理的問題,可真是包羅永珍!有個 rpad 函式,它用來做 padding,保證結果集不超過規定的 寬度 10 表示什麼呢?這裡 10 表示 10 個螢幕寬度。對於字母和數字,乙個字母佔1個寬度,對於中文,乙個字佔2個寬度。這樣一來,這個函式就有很實際的意義了 為了列印漂亮,可以用 rpa...