国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在C#中使用ObjectDBX技術從未打開圖形中獲得圖塊的信息

2024-07-21 02:19:59
字體:
來源:轉載
供稿:網友
從未打開圖形中能獲得圖塊的信息嗎?回答是肯定的。下面就來說明具體的實現方法。
要求:

n 會用c#編程

n 讀過我寫的“利用c#進行autocad的二次開發“(在csdn中有)

開始:

n 在visual studio.net中新建一c#控制臺程序

n 在引用選項卡中添加下列類庫:

l interop.autocad.dll

l acadexample.dll

l objectdbx16(在“解決方案資源管理器”中右擊“引用”標簽,在彈出的菜單中選擇“添加引用”,在“添加引用”對話框中選擇“com"選項卡下的下拉列表框中的“autocad/objectdbx common 16.0 type library"項)

然后鍵入以下代碼:

1: using system;

2: using autocad;

3: using dbx = axdblib;

4: using acadexample;

5:

6: namespace consoleapplication1

7: {

8: /// <summary>

9: /// summary description for class1.

10: /// </summary>

11: class class1

12: {

13: /// <summary>

14: /// the main entry point for the application.

15: /// </summary>

16: [stathread]

17: static void main(string[] args)

18: {

19: using (autocadconnector connector = new autocadconnector())

20: {

21: string progid = "objectdbx.axdbdocument.16"//注意,這是autocad2004的寫法,

// 若是autocad2002和autocad2000i則是”objectdbx.axdbdocument.1“

22: acadapplication acadapp = connector.application;

23: dbx.axdbdocument dbxdoc;

24: dbxdoc = (dbx.axdbdocument)acadapp.getinterfaceobject(progid);

25: dbxdoc.open(@"f:/test.dwg");

26: foreach (dbx.acadentity entity in dbxdoc.modelspace)

27: {

28: if (entity.entityname == "acdbblockreference")//判斷實體是否是塊參照

29: {

30: dbx.acadblockreference blkref;

31: blkref = (dbx.acadblockreference)entity; //將是塊參照的實體強制轉換為塊參照類型

32: object[] atts = (object[])blkref.getattributes();//獲取塊參照中的屬性(為對象類型)

33: for (int i = 0; i < atts.length; i++) //遍歷塊參照屬性

34: {

35: dbx.acadattributereference att;

36: att = (dbx.acadattributereference)atts;//將塊參照屬性(對象類型)強制轉換為塊參照屬性類型

37: console.writeline("tag: {0}/tvalue: {1}/n",

38: att.tagstring,

39: att.textstring);//顯示塊參照屬性的tag和text的值

40: }

41: }

42: }

43: console.readline();

44: }

45: }

46: }

47: }

第一個要注意的是第三行,使用了一個別名。因為autocad和objectdbx命名空間有許多相同的類名,因此,你必須使用全名,而不能使用簡寫的形式,但objectdbx寫起來比較麻煩,所以用別名dbx來使輸入方便一些。

程序前面部分的代碼,你可以參考我寫的“利用c#進行autocad的二次開發“這篇文章。讓我們來看第21行,程序定義了一個字符串progid,作為第24句的函數getinterfaceobject的參數,該函數是用來產生一個axdbdocument對象。但要注意, getinterfaceobject函數返回的類型是object,所以你必須用強制轉換把它變為axdbdocument類。然后在第25行使用24行產生的axdbdocument對象來”打開“一個.dwg文件(其實沒有打開),需要注意的是這個文件的路徑必須是正確的。這個文件就是我們要獲得的塊信息所在的文件。

由于objectdbx 沒有選擇集,所以只有通過遍歷文件的模型空間來獲得塊的信息(26-28行)。

余下語句的說明我已經寫在程序的注釋中了。

你可以發現objectdbx的工作原理在c#中與vba是類似的,只不過要進行必要的類型轉換。

商業源碼熱門下載www.html.org.cn

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瓦房店市| 宁德市| 元谋县| 津南区| 临安市| 东乌珠穆沁旗| 东城区| 永泰县| 曲周县| 罗平县| 洪江市| 龙胜| 八宿县| 兴国县| 木里| 石首市| 陇南市| 安阳县| 永兴县| 嘉禾县| 聂拉木县| 天峻县| 治多县| 博罗县| 宜昌市| 普洱| 洛隆县| 本溪市| 泽普县| 霞浦县| 陕西省| 英超| 莱芜市| 武功县| 九台市| 福建省| 土默特右旗| 防城港市| 达尔| 永平县| 南雄市|