明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 272|回复: 2

[基础] DBX 修改块名报错 (已解决)

[复制链接]
发表于 2017-12-28 09:15 | 显示全部楼层 |阅读模式
本帖最后由 慢慢来吧 于 2018-1-9 09:57 编辑

    public void DrawingPretreatment()//String fileFullName, String curNumber)
        {

            String fileFullName = @"E:\001.dwg";
            String curNumber = "1";
            string progid = "ObjectDBX.AxDbDocument.16";

            AxDbDocument objDbx = (AxDbDocument)acadApp.GetInterfaceObject(progid);

            objDbx.Open(fileFullName, null);

            foreach (AcadEntity entity in objDbx.ModelSpace)
            {
                switch (entity.EntityName)
                {
                    case "AcDbBlockReference":
                        AcadBlockReference blkRef;
                        blkRef = (AcadBlockReference)entity;
                        try
                        {
                            blkRef.Name = blkRef.Name + curNumber;//这里出错
                        }
                        catch (Autodesk.AutoCAD.Runtime.Exception ex)
                        {
                            throw new System.Exception(ex.Message);
                        }
                        break;

                    case "AcDbOrdinateDimension":

                        break;
                }
            }
            objDbx.SaveAs(fileFullName, null);
            objDbx = null;
        }


AutoCAD 2005  & vs2008


 楼主| 发表于 2018-1-2 20:10 | 显示全部楼层
神啊,救救我吧!
 楼主| 发表于 2018-1-9 09:55 | 显示全部楼层

换成.net 模式解决。

                                tempDb.ReadDwgFile(curFileName, System.IO.FileShare.ReadWrite, true, null);

                                using (Transaction curTrans = tempDb.TransactionManager.StartTransaction())
                                {
                                    BlockTable curBt = (BlockTable)curTrans.GetObject(tempDb.BlockTableId, OpenMode.ForRead);

                                    int i = 1;

                                    foreach (ObjectId acObjId in curBt)
                                    {
                                        BlockTableRecord br = curTrans.GetObject(acObjId, OpenMode.ForWrite) as BlockTableRecord;

                                        if (br.Name.StartsWith("_OPEN") || br.Name.StartsWith("DimnDraft"))
                                        {
                                            br.Name = spStr[0].Remove(0, 3) + "-" + i.ToString();
                                            i++;
                                        }
                                    }

                                    // 以写模式打开块表记录ModelSpace(模型空间)
                                    BlockTableRecord acBlkTblRec;
                                    acBlkTblRec = curTrans.GetObject(curBt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                                    foreach (ObjectId acObjId in acBlkTblRec)
                                    {
                                        Entity cc = curTrans.GetObject(acObjId, OpenMode.ForWrite) as Entity;
                                        if (cc.GetType().Name == "OrdinateDimension")
                                        {
                                            OrdinateDimension od = cc as OrdinateDimension;
                                            od.DimensionText = "";
                                            //od.UpgradeOpen();
                                        }
                                        if (cc.GetType().Name == "RotatedDimension")
                                        {
                                            RotatedDimension rd = cc as RotatedDimension;
                                            rd.DimensionText = "";
                                            //rd.UpgradeOpen();
                                        }
                                    }

                                    curTrans.Commit();

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

本版积分规则

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

GMT+8, 2018-9-19 03:59 , Processed in 0.181406 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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