日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

winform界面嵌入dwg图纸_c# cad中插入另一个dwg的图块

發布時間:2025/3/19 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 winform界面嵌入dwg图纸_c# cad中插入另一个dwg的图块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.在cad2012環境下:

須引用objectarx開發包

PromptPointResult ppr = ed.GetPoint("請選擇插入點:");

Point3d pt = ppr.Value; //這里獲得插入點

utility.WriteToEditor(pt.ToString());

blockPath = "b_sample.dwg";

using (Database blkDb = new Database(false, true))

{

//read drawing

blkDb.ReadDwgFile(blockPath?, System.IO.FileShare.Read, true, null);

blkDb.CloseInput(true);

using (DocumentLock docLock = doc.LockDocument())//多文檔要先這樣,否則報至命錯誤

{

using (Transaction t = doc.TransactionManager.StartTransaction())

{

string name=“aa”;//aa是不與blockPath文件中的任何塊重名的字符串

//insert it as a new block

ObjectId idBTR = doc.Database.Insert(aa, blkDb, false);

//create a ref to the block

BlockTable bt = (BlockTable)t.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);

BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

using (BlockReference bref = new BlockReference(pt, idBTR)) //pt是一個Point3D坐標,這里是插入進當前dwg文件中

{

btr.AppendEntity(bref);

t.AddNewlyCreatedDBObject(bref, true);

}

t.Commit(); ? 就是這樣 ?謝謝

}

}

}

2.脫離CAD環境下

需引用TDWGNET開發包

using (new Services()) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?using (Database db = new Database(true, true)) ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ?using (Transaction ts = db.TransactionManager.StartTransaction()) ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ?using (BlockTable bt = ts.GetObject(db.BlockTableId,OpenMode.ForWrite) as BlockTable) ? ? ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?BlockTableRecord btr1 = new BlockTableRecord(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Database odb = new Database(false, false); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?odb.ReadDwgFile("aaa.dwg", FileOpenMode.OpenForReadAndAllShare, true, null); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?odb.CloseInput(true); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ObjectId objid = db.Insert("aa", odb, false);//這里插入進當前的dwg文件了 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?BlockTableRecord btr = new BlockTableRecord();//這里是插入另一個塊 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?btr.Name = "000"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Circle c = new Circle(new Point3d(0, 0, 0), Vector3d.ZAxis, 100); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?btr.AppendEntity(c); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ts.AddNewlyCreatedDBObject(c, true); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bt.Add(btr); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ts.AddNewlyCreatedDBObject(btr, true); ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ?ts.Commit(); ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ?//using (Transaction ts = db.TransactionManager.StartTransaction()) ? ? ? ? ? ? ? ? ? ? ?//{ ? ? ? ? ? ? ? ? ? ? ?// ? ?using (BlockTable bt = (BlockTable)ts.GetObject(db.BlockTableId, OpenMode.ForRead)) ? ? ? ? ? ? ? ? ? ? ?// ? ?{ ? ? ? ? ? ? ? ? ? ? ?// ? ? ? ?BlockTableRecord btr=ts.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; ? ? ? ? ? ? ? ? ? ? ?// ? ? ? ?BlockReference br = new BlockReference(new Point3d(0, 0, 0), bt["aa"]);//這里是插入塊于當前的dwg中 ? ? ? ? ? ? ? ? ? ? ?// ? ? ? ?btr.AppendEntity(br); ? ? ? ? ? ? ? ? ? ? ?// ? ? ? ?ts.AddNewlyCreatedDBObject(br, true); ? ? ? ? ? ? ? ? ? ? ?// ? ?} ? ? ? ? ? ? ? ? ? ? ?// ? ?ts.Commit(); ? ? ? ? ? ? ? ? ? ? ?//} ? ? ? ? ? ? ? ? ? ? ?db.SaveAs(path + "\\test.dwg", DwgVersion.Current);//保存文件 ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?} ? ? ? ? }

總結

以上是生活随笔為你收集整理的winform界面嵌入dwg图纸_c# cad中插入另一个dwg的图块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。