乐筑天下

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

插入块

[复制链接]

9

主题

33

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2020-12-29 13:28:28 | 显示全部楼层 |阅读模式
大家好
Autodesk。' eNotInDatabase
这是主题的一部分;在表格中插入符号
当我第一次编写应用程序时,块插入到我想要的位置。ok
当我第二次运行我的应用程序时,出现了问题,我收到了以下消息。AutoCAD . runtime . exception:' eNotInDatabase
如何修复
谢谢
下面的代码

  1. DrawRect(acBlkTblRec, acTrans, 0, 0, 5, 5)
  2. Public Sub DrawRect(ByRef acBlkTblRec As BlockTableRecord, ByRef actrans As Transaction,
  3.   ByVal origPtx As Double, ByVal origPty As Double, ByVal Base As Double, ByVal Haut As Double)
  4.         Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
  5.         Dim acCurDb As Database = acDoc.Database
  6.         Dim acLyrTbl As LayerTable
  7.         acLyrTbl = actrans.GetObject(acCurDb.LayerTableId,
  8.                                      OpenMode.ForRead)
  9.         Dim LCadre As String = "Armat"
  10.         Dim bt As BlockTable = DirectCast(actrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead), BlockTable)
  11.         Dim btr As BlockTableRecord = New BlockTableRecord()
  12.         If Not bt.Has("Ceramic") Then
  13.             bt.UpgradeOpen()
  14.             btr.Name = "Ceramic"
  15.             bt.Add(btr)
  16.             actrans.AddNewlyCreatedDBObject(btr, True)
  17.         End If
  18.         Dim acPoly As Polyline = New Polyline()
  19.         acPoly.AddVertexAt(0, New Point2d(origPtx + 0.15, origPty + Haut - 0.1), 0, 0.005, 0.005)
  20.             acPoly.AddVertexAt(0, New Point2d(origPtx + 0.12, origPty + Haut + 0.05), 0, 0.005, 0.005)
  21.             acPoly.AddVertexAt(0, New Point2d(origPtx + Base + 0.1, origPty + Haut - 0.05), 0, 0.005, 0.005)
  22.             acPoly.AddVertexAt(0, New Point2d(origPtx + Base, origPty), 0, 0.005, 0.005)
  23.             acPoly.AddVertexAt(0, New Point2d(origPtx, origPty), 0, 0.005, 0.005)
  24.             acPoly.AddVertexAt(0, New Point2d(origPtx, origPty + Haut), 0, 0.005, 0.005)
  25.             acPoly.AddVertexAt(0, New Point2d(origPtx + 0.1, origPty + Haut - 0.1), 0, 0.005, 0.005)
  26.             acPoly.Layer = LCadre
  27.         'acBlkTblRec.AppendEntity(acPoly)
  28.         'actrans.AddNewlyCreatedDBObject(acPoly, True)
  29.         btr.AppendEntity(acPoly)
  30.        actrans.AddNewlyCreatedDBObject(acPoly, True)' [b][color=red]problem is here![/color][/b]
  31. End Sub

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2020-12-29 17:16:38 | 显示全部楼层
嗨,您在if语句之外将多段线添加到块定义中,因此如果块表已经包含块定义,则“btr”尚未添加到数据库中。只有在块表尚未包含if语句中的块定义IOW时,您才应该创建BlockTableRecord的新实例并将id追加到多段线。    DrawRect(acBlkTblRec,acTrans,0,0,5,5)。

Public Sub DrawRect(ByRef acBlkTblRec As block table record,ByRef actrans As Transaction,。
ByVal origPtx为Double,ByVal origPty为Double,ByVal Base为Double,ByVal Haut为Double)。

Dim acDoc As Document = Autodesk,AutoCAD . application services . application . document manager . mdiactivedocument 。
Dim acCurDb As Database = acDoc,数据库。
将acryrtbl Dim作为图层表。
acLyrTbl = actrans,GetObject(acCurDb,LayerTableId,。
打开模式,ForRead)。

Dim LCA dre As String = " Armat " 。

Dim Bt As block table = direct cast(actrans,GetObject(acCurDb,BlockTableId,OpenMode。ForRead)、块表)。

如果不是bt,Has(“陶瓷”)Then。
bt,UpgradeOpen()。
Dim btr As block table record = New block table record()。

btr,Name = "Ceramic"。
bt,添加(btr)。
actrans,AddNewlyCreatedDBObject(btr,True)。

Dim AC poly As Polyline = New Polyline()。

acPoly,AddVertexAt(0,新点2d(origPtx + 0.15,origPty + Haut - 0.1),0,0.005,0.005)。
acPoly,AddVertexAt(0,新点2d(origPtx + 0.12,origPty + Haut + 0.05),0,0.005,0.005)。
acPoly,AddVertexAt(0,New Point2d(origPtx + Base + 0.1,origPty + Haut - 0.05),0,0.005,0.005)。
acPoly,AddVertexAt(0,新点2d(origPtx + Base,origPty),0,0.005,0.005)。
acPoly,AddVertexAt(0,新点2d(origPtx,origPty),0,0.005,0.005)。
acPoly,AddVertexAt(0,新点2d(origPtx,origPty + Haut),0,0.005,0.005)。
acPoly,AddVertexAt(0,新点2d(origPtx + 0.1,origPty + Haut - 0.1),0,0.005,0.005)。

acPoly,Layer = LCadre。
btr,AppendEntity(acPoly)。
actrans,AddNewlyCreatedDBObject(acPoly,True)。
结束If。
结束Sub。


回复

使用道具 举报

9

主题

33

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2020-12-30 02:47:28 | 显示全部楼层
是的它在目标
谢谢吉尔
这个话题
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 00:03 , Processed in 0.155754 second(s), 58 queries .

© 2020-2024 乐筑天下

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