乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 90|回复: 5

跪求哪里出错了????

[复制链接]

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2014-12-2 12:09:00 | 显示全部楼层 |阅读模式
class Test
    {      
        [CommandMethod("blk")]
        public void createBlkRef()
        {
            //获取块的插入点
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            PromptPointOptions ptOps = new PromptPointOptions("选择块的插入点");
            PromptPointResult ptRes;
            ptRes = ed.GetPoint(ptOps);
            Point3d ptInsert;
            if (ptRes.Status == PromptStatus.OK)
            {
                ptInsert = ptRes.Value;
            }
            else
            {
                ptInsert = new Point3d(0, 0, 0);
            }
            Database db = HostApplicationServices.WorkingDatabase;
            // 使用 "using"关键字指定事务的边界
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //获取块表和模型空间
                BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForWrite));
                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                //创建块引用
                BlockReference blkRef = new BlockReference(ptInsert, createBlkDef());// 指定插入点和所引用的块表记录
               // blkRef.Rotation = 1.57;//指定旋转角,按弧度
                //保存新创建的块引用到模型空间   
                btr.AppendEntity(blkRef);
                trans.AddNewlyCreatedDBObject(blkRef, true);    // 通知事务新创建了对象
                trans.Commit(); //提交事务
            }
        }
              
        public static ObjectId createBlkDef()
        {
            Document doc = openDoc("C:\\图例列表.dwg");
           // DocumentLock docLock = Autodesk..ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
           // docLock.Dispose();
            Database db = doc.Database;
            //Database db = HostApplicationServices.WorkingDatabase;
            //定义函数的返回值ObjectId
            ObjectId blkObjId = new ObjectId();
            // 使用 "using"关键字指定事务的边界
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //获取块表
                BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
                //通过块名myBlkName判断块表中是否包含块表记录
                if ((bt.Has("DET_001")))
                    blkObjId = bt["DET_001"];//如果已经存在,通过块名获取块对应的ObjectId
                trans.Commit(); //提交事务
            }
            return blkObjId;
        }
     //打开“图例列表.dwg”文件,但我做的是在cad中看到了,如果不看到,怎么做呢???
        public static Document openDoc(string fileName)
        {
            Document doc = null;
            DocumentCollection docMar = Application.DocumentManager;
            if (System.IO.File.Exists(fileName))
            {
                doc = docMar.Open(fileName, false);
                //docMar.MdiActiveDocument = doc;
            }
            else
                docMar.MdiActiveDocument.Editor.WriteMessage("\n 文件" + fileName + "不存在");
            return doc;
        }
    }
我是想把“图例列表.dwg”文件中块名为“DET_001”的块加入到一个.dwg的文件中,各位大神,我哪里出错了,整个cad崩溃了,还有就是我打开“图例列表.dwg”文件不在cad中显示怎么实现,我这里是在当前的cad中打开了,但不是当前Document。
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2014-12-2 15:57:00 | 显示全部楼层
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
                //通过块名myBlkName判断块表中是否包含块表记录
                if ((bt.Has("DET_001")))
                    blkObjId = bt["DET_001"];//如果已经存在,通过块名获取块对应的ObjectId
                trans.Commit(); //提交事务
如果不存在呢?
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2014-12-2 16:01:00 | 显示全部楼层
以后不用跪了
回复

使用道具 举报

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2014-12-3 14:52:00 | 显示全部楼层
我保证是存在的而且是唯一的。
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2014-12-3 15:45:00 | 显示全部楼层
你是拿明朝的尚方宝剑砍清朝的官,搜一搜吧,论坛内有多吃讨论过这个内容
回复

使用道具 举报

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2014-12-3 16:00:00 | 显示全部楼层
恩,谢谢大家,我这个问题解决了。谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 18:39 , Processed in 0.472778 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表