houlinbo 发表于 2007-1-9 17:22:00

文件操作的问题,愁了我一周了

本帖最后由 作者 于 2007-8-14 14:58:39 编辑 <br /><br /> <p>Try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim cadApp As AcadApplication = New Autodesk.AutoCAD.Interop.AcadApplicationClass()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cadApp.Visible = True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim db As Database = New Database()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db = HostApplicationServices.WorkingDatabase<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim trans As Transaction = db.TransactionManager.StartTransaction()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim br As Circle = CreateCircle(db, bt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trans.Commit()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trans.Dispose()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db.SaveAs("d:\ff.dwg", DwgVersion.AC1015)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As Exception</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try</p><p></p><p>流程是:新建一个dwg文件后,要从新建的图形上插入一个圆,但运行的结果确是圆画在了未新建图时显示的图上,请各位帮忙解决,不胜感激!QQ420021327&nbsp; </p>

houlinbo 发表于 2007-8-8 17:07:00

sieben 发表于 2007-8-9 22:51:00

<p>用Com接口啊,好久没玩这个了。</p><p>为什么不把 InsertBlock函数代码贴出来?</p>

houlinbo 发表于 2007-8-14 15:00:00

<p>自已顶一下,两周了还没有解决</p>

liudaohuang 发表于 2007-8-14 16:41:00

看不大明白,感觉应该是数据库(db)设置有问题

houlinbo 发表于 2007-8-15 09:33:00

有没有类似的代码帖上来看看,谢了

liudaohuang 发表于 2007-8-15 14:54:00

<p>我用的是C#,</p><p>Database db = new Database(true,true);&nbsp;&nbsp;</p><p>Transaction trans = db.TransactionManager.StartTransaction();&nbsp;&nbsp;&nbsp;</p><p><br/>BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForWrite);&nbsp;</p><p>BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt,OpenMode.ForWrite );</p><p>Line line = new Line(Point3d.Origin,new Point3d(0,0,0));</p><p>btr.AppendEntity(line);</p><p>trans.AddNewlyCreatedDBObject(line,true);</p><p>db.SaveAs("ttt.dwg",DwgVersion.Current);</p><p></p><p>大体是这样子的</p>

ww810529 发表于 2007-12-7 10:13:00

加入一个创建图层的函数,把实体的layerid设置到想要的图层就行。注意:要在trans.Commit()之前啊!
页: [1]
查看完整版本: 文件操作的问题,愁了我一周了