明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5559|回复: 3

运行一段vb代码后,cad保存时提示“文档 Drawing1.dwg 正在执行命令

[复制链接]
发表于 2012-2-26 10:24:58 | 显示全部楼层 |阅读模式
大家好,我在cad里运行下面的代码生成一个属性块,生成后,cad保存时提示“文档 Drawing1.dwg 正在执行命令。
按回车键取消或 [重试(R)]: ”
   '' 获得当前文档和数据库   Get the current document and database
        Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = acDoc.Database

        ''启动一个事务   Start a transaction
        Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

            '' 以只读方式打开块表   Open the Block table for read
            Dim acBlkTbl As BlockTable
            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
                                         OpenMode.ForRead)

            '文档加锁
            acDoc.LockDocument()


            '' 以写方式打开模型空间块表记录   Open the Block table record Model space for write
            Dim acBlkTblRec As BlockTableRecord
            acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
                                            OpenMode.ForWrite)

            ''创建属性块    Create a single-line text object

            Dim attdef As AttributeDefinition = New AttributeDefinition()
            attdef.Position = New Point3d(0.0, 0.0, 0.0)
            attdef.Height = 8.0 '//设置文字高度  
            attdef.Rotation = 0.0 '//设置文字旋转角度  
            attdef.HorizontalMode = TextHorizontalMode.TextMid '//设置水平对齐方式
            attdef.VerticalMode = TextVerticalMode.TextVerticalMid '//设置垂直对齐方式
            attdef.Prompt = "Room Number:" '//设置属性提示
            attdef.TextString = "0000" '//设置属性的缺省值  
            attdef.Tag = "NUMBER" '//设置属性标签  
            attdef.Invisible = False '//设置不可见选项为假  
            attdef.Verifiable = False '//设置验证方式为假  
            attdef.Preset = False '//设置预置方式为假
            attdef.Constant = False '//设置常数方式为假
            acBlkTblRec.AppendEntity(attdef)
            acTrans.AddNewlyCreatedDBObject(attdef, True)

            '解锁文档
            acDoc.LockDocument.Dispose()

            ''保存更改并销毁事务   Save the changes and dispose of the transaction
            acTrans.Commit()
        End Using

        acDoc = Nothing
        acCurDb.Dispose()
请问是什么原因,我文档加锁后也解锁了啊

发表于 2012-2-26 13:25:55 | 显示全部楼层
本帖最后由 sieben 于 2012-2-26 13:30 编辑

1,若acDoc.LockDocument()之后, acDoc.LockDocument.Dispose() 这句之前报异常,解锁将没有执行.
2,一般的,是先锁定文件,再开始事务
3,一般的,若不涉外,不必锁定文件

另,acCurDb.Dispose()这一句你明白是什么意思吗?
 楼主| 发表于 2012-2-26 21:20:37 | 显示全部楼层
我的是非模式窗体,不锁定不能操作。谢谢你的解释。最后一句我还真不理解,望求教!
发表于 2012-3-19 16:08:01 | 显示全部楼层
可以这样
using (DocumentLock docLock = ThisDrawing.ActiveDocument.LockDocument())
  {
    //---
///

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

本版积分规则

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

GMT+8, 2024-11-25 19:36 , Processed in 0.156050 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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