乐筑天下

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

为何加入多义线总出错

[复制链接]

15

主题

195

帖子

9

银币

后起之秀

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

铜币
255
发表于 2006-8-7 21:52:00 | 显示全部楼层 |阅读模式
&nbspublic Function addpl()
        Dim db As Database = HostApplicationServices.WorkingDatabase()
        Dim trans As Transaction = db.TransactionManager.StartTransaction()
        MsgBox("0")
        Try
            Dim pl As New Circle(New Point3d(0, 0, 0), Vector3d.ZAxis, 100)
            MsgBox("1")
            Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead)
            MsgBox("2")
            Dim btrid As ObjectId = bt.Item(BlockTableRecord.ModelSpace)
            Dim btr As BlockTableRecord = trans.GetObject(btrid, OpenMode.ForWrite)
            MsgBox("3")
            Dim ObjId As ObjectId
            MsgBox("4")
            ObjId = btr.AppendEntity(pl)
            MsgBox("5")
            trans.AddNewlyCreatedDBObject(pl, True)
            MsgBox("6")
            trans.Commit()
        Catch ex As Exception
            MsgBox("pl error.")
        Finally
            trans.Dispose()
        End Try
    End Function
上面程序中红色代码总出错。请高手指点。
回复

使用道具 举报

15

主题

195

帖子

9

银币

后起之秀

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

铜币
255
发表于 2006-8-7 21:59:00 | 显示全部楼层
我可按照教程一个字都不差,不知为什么就是不行。
回复

使用道具 举报

4

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
26
发表于 2006-8-8 14:47:00 | 显示全部楼层
好像是这样吧?
Dim btr As BlockTableRecord = trans.GetObject(db.CurrentSpaceID, OpenMode.ForWrite)
回复

使用道具 举报

15

主题

195

帖子

9

银币

后起之秀

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

铜币
255
发表于 2006-8-8 23:16:00 | 显示全部楼层
谢谢楼上的弟兄回复。但我试了还是不行。我将OpenMode.ForWrite换成OpenMode.ForRead就好了,但下面出错。因为不是以写方式打开的。是什么毛病?
回复

使用道具 举报

4

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
26
发表于 2006-8-11 09:43:00 | 显示全部楼层
这是我在C#里面的代码:(成功的)复制代码
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2006-8-15 16:35:00 | 显示全部楼层
                Dim btr As BlockTableRecord = trans.GetObject(btrid, OpenMode.ForWrite)

改写为下面试试           
            Dim btr As BlockTableRecord = (BlockTableRecord)trans.GetObject(btrid, OpenMode.ForWrite)
我的意思是加一步显式转换,我忘了VB是不是这样转换了,C#是
回复

使用道具 举报

15

主题

195

帖子

9

银币

后起之秀

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

铜币
255
发表于 2006-8-21 22:05:00 | 显示全部楼层

谢谢楼上的给出主意,我再试试看。
我今天看了看。bt(btr.ModelSpace)在我的程序中是READONLY属性。请教大侠怎么才能将其也为非只读的。我想只要是非只读就不会有问题了。
回复

使用道具 举报

15

主题

195

帖子

9

银币

后起之秀

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

铜币
255
发表于 2006-8-22 21:39:00 | 显示全部楼层

解决了,是我将这个函数放到模块下导致的,我将其放入CLASS1下就好了。但这样我在别的窗体下没法调用了。请教各位高手如何调用?
是我太水了。呵……
这个问题彻底解决了。呵……    是CAD焦点的问题。在我调用这段代码的时候CAD失去了焦点。唉!!!!
回复

使用道具 举报

0

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2007-3-28 12:49:00 | 显示全部楼层
如何设置焦点呢??
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 06:02 , Processed in 0.160775 second(s), 70 queries .

© 2020-2024 乐筑天下

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