国产麻豆一级在线观看_国产午夜亚洲精品国产成人小说_国产午夜成人福利在线观看蜜芽_国产天堂亚洲国产碰碰_国产麻豆剧看黄在线观看_国产噜噜在线视频观看_国产精品亚洲二区在线播放

首頁 新聞中心 技術博客

C#批量將CAD圖幅網格外擴生成新圖框

發布時間:2021-10-03 22:11:31   瀏覽量:2460   作者:GIS前沿

之前遇見一個客戶問題,要將每一個圖幅網格進行向外偏移一定距離,保證每張圖幅都有一部分重疊度。

認真思考了一下就是向圖面添加由多段線構成的正四邊形、我的設計思路是這樣的:
首先進行選擇集過濾,因為在圖形中不只有圖框線,還有注記等其他實體,將其他實體過濾掉、只選擇圖框線;
第二、對選擇的圖形進行循環,獲取每個圖框的ObjectId,根據ObjectId獲取實體的外包矩形,得到左下角點和右上角點,因為是正四邊形,外包矩形和圖幅網格圖形一致,這樣就拿到了圖框的左下角點和右上角點的坐標;
第三、根據偏移的距離構造出新圖框的左下角點和右上角點,并交會出新圖框的另外兩個角點的坐標;
第四、在內存中新建Polyline對象,將點按順序依次連接并閉合;最后、向圖面添加實體,提交數據。

程序編寫流程

下圖是目前原始圖框各點和外擴后圖框各點之間的對應關系圖,黑色邊框是目前原始圖框邊線,minPoint和maxPoint分別為圖框的左下角點和右上角點。根據偏移距離構造出新的圖框(紅色框線)。

構建新圖框示意圖

代碼如下:

在上面代碼中ed.GetSelection()是提示用戶從屏幕拾取對象,選擇的結果保存在PromptSelectionResult中;

如果用戶成功選擇,則從PromptSelectionResul能獲取被選中的實體集合,得到ObjectId數組,之后循環數組中每一個ObjectId,按照我們的設計流程進行逐個生成新圖框。

Polyline是CAD中多段線,我們在內存中創建一個Polyline對象并調用它的AddVertexAt()方法向多段線中增加頂點;

AddVertexAt()方法有五個參數其中第一個為點的序號,第二個為點的坐標,第三個為凸度,第四個和第五個分別為起始寬度和結束寬度;

最后將Polyline的Closed屬性設為true,將新圖框閉合。

代碼執行效果如下:

程序執行結果


來源:https://blog.csdn.net/qq_43173805/article/details/112244593
主站蜘蛛池模板: 宁化县| 平昌县| 普定县| 麻江县| 菏泽市| 黑山县| 金门县| 富蕴县| 乌苏市| 福州市| 大同县| 通州市| 珲春市| 元江| 普格县| 上虞市| 五华县| 涪陵区| 务川| 海原县| 丽江市| 绥江县| 芦山县| 江源县| 平武县| 新余市| 溧水县| 普定县| 微山县| 得荣县| 石狮市| 宁化县| 张北县| 屏东县| 卢龙县| 和平区| 马公市| 宁波市| 汕尾市| 姚安县| 庆云县|