乐筑天下

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

外部导入一个块的问题

[复制链接]

10

主题

25

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2014-11-3 14:03:00 | 显示全部楼层 |阅读模式
我看了好多帖子,也看到了Kean的那篇文章关于从外部文件导入块到当前打开的文件,但是他那个是全部导入,我现在就想导入那个外部文件中的一个。我想知道我现在这个代码有啥问题?求求大神指导下啊?
  1.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim acDoc As Document = Autodesk..ApplicationServices.Application.DocumentManager.MdiActiveDocument
  3.         Dim destDB As Database = acDoc.Database
  4.         Dim acEditor As Editor = acDoc.Editor
  5.         Dim pPtRes As PromptPointResult
  6.         Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
  7.         pPtOpts.Message = vbLf & "点:"
  8.         pPtRes = acEditor.GetPoint(pPtOpts)
  9.         Dim InsertPt As Point3d = pPtRes.Value
  10.         If pPtRes.Status = PromptStatus.Cancel Then
  11.             Exit Sub
  12.         End If
  13.         Dim FilePath As String = "D:\2RD\PMDS\PMDS\Resources\PFD.dwg"
  14.         Dim FileName As String = " PFD.dwg"
  15.         Dim BlockName As String = "0920101"
  16.         Dim sourceDb As New Database(True, True)
  17.         sourceDb.ReadDwgFile(FilePath, System.IO.FileShare.Read, True, "")
  18.         Dim blockId As New ObjectIdCollection()
  19.             Using (acDoc.LockDocument)
  20.                 Dim sourcetm As Autodesk.AutoCAD.DatabaseServices.TransactionManager = sourceDb.TransactionManager
  21.                 Dim desttm As Autodesk.AutoCAD.DatabaseServices.TransactionManager = destDB.TransactionManager
  22.                 Dim sourcemyT As Transaction = sourcetm.StartTransaction()
  23.                 Dim sourcebt As BlockTable = DirectCast(sourcetm.GetObject(sourceDb.BlockTableId, OpenMode.ForRead, False), BlockTable)
  24.                 For Each btrId As ObjectId In sourcebt
  25.                     Dim sourcebtc As BlockTableRecord = DirectCast(sourcetm.GetObject((sourcebt(BlockTableRecord.ModelSpace)), OpenMode.ForRead, False), BlockTableRecord)
  26.                     If sourcebtc.Name = BlockName Then
  27.                         blockId.Add(btrId)
  28.                         Dim mapping As New IdMapping()
  29.                         sourceDb.WblockCloneObjects(blockId, destDB.BlockTableId, mapping, DuplicateRecordCloning.Replace, False)
  30.                         Using destmyT As Transaction = desttm.StartTransaction()
  31.                             Dim destbt As BlockTable = DirectCast(desttm.GetObject(destDB.BlockTableId, OpenMode.ForWrite, True), BlockTable)
  32.                             Dim destbtc As BlockTableRecord = DirectCast(desttm.GetObject((destbt(BlockTableRecord.ModelSpace)), OpenMode.ForRead, False), BlockTableRecord)
  33.                             Dim Block As BlockReference = New BlockReference(InsertPt, destbt(BlockName))
  34.                             Block.ScaleFactors = New Scale3d(1, 1, 1)
  35.                             Block.Rotation = 0
  36.                             Dim ModelSpace As BlockTableRecord = desttm.GetObject(destDB.CurrentSpaceId, OpenMode.ForWrite)
  37.                             ModelSpace.AppendEntity(Block)
  38.                             destmyT.AddNewlyCreatedDBObject(Block, True)
  39.                             destmyT.Commit()
  40.                         End Using
  41.                     ElseIf Not sourcebtc.IsAnonymous AndAlso Not sourcebtc.IsLayout Then
  42.                              End If
  43.                     sourcebtc.Dispose()
  44.                 Next
  45.                 Me.Close()
  46.             End Using
  47.     End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-28 22:53 , Processed in 1.329726 second(s), 55 queries .

© 2020-2025 乐筑天下

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