乐筑天下

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

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

[复制链接]

9

主题

16

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2012-2-26 10:24:00 | 显示全部楼层 |阅读模式
大家好,我在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()
请问是什么原因,我文档加锁后也解锁了啊
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2012-2-26 13:25:00 | 显示全部楼层

1,若acDoc.LockDocument()之后, acDoc.LockDocument.Dispose() 这句之前报异常,解锁将没有执行.
2,一般的,是先锁定文件,再开始事务
3,一般的,若不涉外,不必锁定文件
另,acCurDb.Dispose()这一句你明白是什么意思吗?
回复

使用道具 举报

9

主题

16

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2012-2-26 21:20:00 | 显示全部楼层
我的是非模式窗体,不锁定不能操作。谢谢你的解释。最后一句我还真不理解,望求教!
回复

使用道具 举报

21

主题

97

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
181
发表于 2012-3-19 16:08:00 | 显示全部楼层
可以这样
using (DocumentLock docLock = ThisDrawing.ActiveDocument.LockDocument())
  {
    //---
///
  }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 21:23 , Processed in 0.512950 second(s), 60 queries .

© 2020-2025 乐筑天下

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