fsfdliwei 发表于 2006-6-27 15:21:00

在C#下插入块

&nbsp;public class Testinsert<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; static public void DoIt()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = Application.DocumentManager.MdiActiveDocument;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Editor ed = doc.Editor;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PromptResult res = ed.GetString("Give me a file to insert");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (res.Status != PromptStatus.OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string fname = res.StringResult;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!File.Exists(fname))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fname = HostApplicationServices.Current.FindFile(fname, doc.Database, FindFileHint.Default);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (Database db = new Database(false, false))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //read drawing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.ReadDwgFile(fname, FileShare.Read, true, null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (Transaction t = doc.TransactionManager.StartTransaction())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //insert it as a new block<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectId idBTR = doc.Database.Insert("test", db, false);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //create a ref to the block<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BlockTable bt = (BlockTable)t.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt, OpenMode.ForWrite);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (BlockReference bref = new BlockReference(Point3d.Origin, idBTR))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btr.AppendEntity(bref);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.AddNewlyCreatedDBObject(bref, true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.Commit();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>

tcsl9621 发表于 2006-7-1 00:29:00

对于块对像,除了将块分解外。还有没有其它方法取得块中对像。

houlinbo 发表于 2006-12-31 11:04:00

在VB.net下插入块怎么写

东震西兑 发表于 2011-3-2 11:16:53

先生你好!现在要急着解决一个在程序中对dwg文件插入块的问题,就是往dwg文件中插入另外文件夹下的dwg块的问题,看了你的文章有看不懂的地方,就是那个database类和document类是怎么引用的啊?c#中引用的是哪些类库?是否需要第三方开发包?感谢您,请你帮忙回复下,不胜感激!

雪山飞狐_lzh 发表于 2011-3-2 13:22:48

http://bbs.mjtd.com/thread-78291-1-1.html

东震西兑 发表于 2011-3-2 15:12:28

多谢楼主指点!

古泊川 发表于 2011-12-16 17:14:14

谢谢楼主
但是有个问题 如果想给插入指定插入点可以嘛???

illuminiti 发表于 2011-12-16 17:20:36

请问C#的dll中能否省略添加命令这一步?就是autocad加载dll后直接执行代码,而不需要输入命令。望指点

icefire 发表于 2012-1-11 10:53:35

学习了,进步了
页: [1]
查看完整版本: 在C#下插入块