明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3212|回复: 7

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

[复制链接]
发表于 2007-1-9 17:22:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-8-14 14:58:39 编辑

Try
            Dim cadApp As AcadApplication = New Autodesk.AutoCAD.Interop.AcadApplicationClass()
            cadApp.Visible = True
            Dim db As Database = New Database()
            db = HostApplicationServices.WorkingDatabase
            Dim trans As Transaction = db.TransactionManager.StartTransaction()
            Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite)
            Dim br As Circle = CreateCircle(db, bt)
            trans.Commit()
            trans.Dispose()
            db.SaveAs("d:\ff.dwg", DwgVersion.AC1015)
        Catch ex As Exception

        End Try

流程是:新建一个dwg文件后,要从新建的图形上插入一个圆,但运行的结果确是圆画在了未新建图时显示的图上,请各位帮忙解决,不胜感激!QQ420021327 

 楼主| 发表于 2007-8-8 17:07:00 | 显示全部楼层
发表于 2007-8-9 22:51:00 | 显示全部楼层

用Com接口啊,好久没玩这个了。

为什么不把 InsertBlock函数代码贴出来?

 楼主| 发表于 2007-8-14 15:00:00 | 显示全部楼层

自已顶一下,两周了还没有解决

发表于 2007-8-14 16:41:00 | 显示全部楼层
看不大明白,感觉应该是数据库(db)设置有问题
 楼主| 发表于 2007-8-15 09:33:00 | 显示全部楼层
有没有类似的代码帖上来看看,谢了
发表于 2007-8-15 14:54:00 | 显示全部楼层

我用的是C#,

Database db = new Database(true,true);  

Transaction trans = db.TransactionManager.StartTransaction();   


BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForWrite); 

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

Line line = new Line(Point3d.Origin,new Point3d(0,0,0));

btr.AppendEntity(line);

trans.AddNewlyCreatedDBObject(line,true);

db.SaveAs("ttt.dwg",DwgVersion.Current);

大体是这样子的

发表于 2007-12-7 10:13:00 | 显示全部楼层
加入一个创建图层的函数,把实体的layerid设置到想要的图层就行。注意:要在trans.Commit()之前啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-29 04:30 , Processed in 0.184258 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表