乐筑天下

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

从辅助数据库中删除布局

[复制链接]

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2017-5-10 12:39:25 | 显示全部楼层 |阅读模式
有什么方法可以从数据库中删除布局吗?使用名为dictionary的布局而不是layoutManager?我一直在使用下面的代码,但它并没有删除布局本身...
  1.    Public Shared Sub DeleteTab(ByVal MyFileCollection As MyFiles)
  2.         For Each AutoCadFile In MyFileCollection
  3.             Using ExistDatabase As New Database(False, True)
  4.                 ExistDatabase.ReadDwgFile(AutoCadFile.SelectedFilePath, FileOpenMode.OpenForReadAndAllShare, False, Nothing)
  5.                 ExistDatabase.CloseInput(True)
  6.                 Using AcTrans As Transaction = ExistDatabase.TransactionManager.StartTransaction
  7.                     Dim MyLayouts As DBDictionary = AcTrans.GetObject(ExistDatabase.LayoutDictionaryId, OpenMode.ForRead)
  8.                     ' Step through each named layout and Model
  9.                     For Each item As DBDictionaryEntry In MyLayouts
  10.                         If item.Key = "English_Metric" Then
  11.                             Dim MyItem As DBObject = AcTrans.GetObject(item.Value, OpenMode.ForWrite)
  12.                             MyItem.Erase(True)
  13.                         End If
  14.                     Next
  15.                     ExistDatabase.SaveAs(AutoCadFile.SelectedFilePath, DwgVersion.Current)
  16.                     AcTrans.Commit()
  17.                 End Using
  18.             End Using
  19.         Next
  20.     End Sub

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

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

使用道具 举报

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2017-5-10 13:10:28 | 显示全部楼层
好的,我刚刚在这个位置找到了_Gile的答案https://forums.autodesk.com/t5/net/remove-layout/td-p/5824050?nobounce.我没有考虑过将工作数据库更改为外部绘图...
回复

使用道具 举报

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2017-5-10 14:06:19 | 显示全部楼层
由于某种原因,删除布局似乎会修改其余布局中的视口...??
  1.    Public Shared Sub DeleteTab(ByVal MyFileCollection As MyFiles, ByVal LayoutName As String)
  2.         Dim currentDatabase As Database = HostApplicationServices.WorkingDatabase
  3.         For Each AutoCadFile In MyFileCollection
  4.             Try
  5.                 Using targetDatabase As New Database(False, True)
  6.                     targetDatabase.ReadDwgFile(AutoCadFile.SelectedFilePath, System.IO.FileShare.ReadWrite, False, Nothing)
  7.                     HostApplicationServices.WorkingDatabase = targetDatabase
  8.                     Using tr As Transaction = targetDatabase.TransactionManager.StartTransaction
  9.                         Dim lm As LayoutManager = LayoutManager.Current
  10.                         lm.DeleteLayout(LayoutName)
  11.                         targetDatabase.SaveAs(AutoCadFile.SelectedFilePath, DwgVersion.Current)
  12.                         targetDatabase.CloseInput(True)
  13.                     End Using
  14.                 End Using
  15.             Finally
  16.                 HostApplicationServices.WorkingDatabase = currentDatabase
  17.             End Try
  18.         Next
  19.     End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 14:03 , Processed in 0.350085 second(s), 58 queries .

© 2020-2025 乐筑天下

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