乐筑天下

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

从外部文件复制打印设置

[复制链接]

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 07:53:56 | 显示全部楼层 |阅读模式
大家好,
我尝试了这里发布的一个示例和一条无法解释的错误消息
eObjectType是异常
  1.                         Dim cpl As New PlotSettings(False)
  2.                         cpl.CopyFrom(pl)

有人有什么想法吗
以下原始代码发布在:
http://www.theswamp.org/index.php?topic=31867.msg398478#msg398478
(感谢杰夫H。)
  1. Public Sub AddPlotSettings(ByVal PlotSettingsFile As String, ByVal PlotSettingsName As String)
  2.             Dim CurrentDatabase As Database = HostApplicationServices.WorkingDatabase
  3.             Dim SourceDatabase As New Database(False, True)
  4.             SourceDatabase.ReadDwgFile(PlotSettingsFile, FileOpenMode.OpenForReadAndAllShare, True, "")
  5.             Using currentTransaction As Transaction = CurrentDatabase.TransactionManager.StartTransaction
  6.                 Using sourceTransaction As Transaction = SourceDatabase.TransactionManager.StartTransaction
  7.                     Dim sourcePlotDic As DBDictionary = SourceDatabase.PlotSettingsDictionaryId.GetObject(OpenMode.ForRead)
  8.                     If sourcePlotDic.Contains(PlotSettingsName) Then
  9.                         Dim objID As ObjectId = sourcePlotDic.GetAt(PlotSettingsName)
  10.                         Dim pl As PlotSettings = objID.GetObject(OpenMode.ForRead)
  11.                         Dim cpl As New PlotSettings(False)
  12.                         cpl.CopyFrom(pl)
  13.                         cpl.AddToPlotSettingsDictionary(CurrentDatabase)
  14.                         Dim bt As BlockTable = CurrentDatabase.BlockTableId.GetObject(OpenMode.ForRead)
  15.                         Dim btr As BlockTableRecord = bt(BlockTableRecord.PaperSpace).GetObject(OpenMode.ForRead)
  16.                         Dim lytobjID As ObjectId = btr.LayoutId.GetObject(OpenMode.ForRead).ObjectId
  17.                         Dim lytps As PlotSettings = lytobjID.GetObject(OpenMode.ForWrite)
  18.                         lytps.CopyFrom(cpl)
  19.                     End If
  20.                     currentTransaction.Commit()
  21.                 End Using
  22.             End Using
  23.         End Sub

我不得不说,这里是一个很棒的资源。大家好

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

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

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 10:44:08 | 显示全部楼层
糟糕,没有释放数据库
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 19:03:34 | 显示全部楼层
杰夫:不确定这会有什么例外:
  1.                         Dim cpl As New PlotSettings(False)
  2.                         cpl.CopyFrom(pl)

或者我只是错过了什么?
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 19:17:51 | 显示全部楼层
我不这么认为,但我注意到了。
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 19:35:13 | 显示全部楼层
你能发布调用它的代码吗?
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 19:43:15 | 显示全部楼层
我使用的是样品的精确副本。(至少我没有,我修改了它…)
  1.     Public Sub AddPlotSettings(ByVal PlotSettingsFile As String, ByVal PlotSettingsName As String)
  2.         Dim CurrentDatabase As Database = HostApplicationServices.WorkingDatabase
  3.         Dim SourceDatabase As New Database(False, True)
  4.         SourceDatabase.ReadDwgFile(PlotSettingsFile, FileOpenMode.OpenForReadAndAllShare, True, "")
  5.         Using currentTransaction As Transaction = CurrentDatabase.TransactionManager.StartTransaction
  6.             Using sourceTransaction As Transaction = SourceDatabase.TransactionManager.StartTransaction
  7.                 Dim sourcePlotDic As DBDictionary = CType(SourceDatabase.PlotSettingsDictionaryId.GetObject(OpenMode.ForRead), DBDictionary)
  8.                 If sourcePlotDic.Contains(PlotSettingsName) Then
  9.                     Dim objID As ObjectId = sourcePlotDic.GetAt(PlotSettingsName)
  10.                     Dim pl As PlotSettings = CType(objID.GetObject(OpenMode.ForRead), PlotSettings)
  11.                     Dim cpl As New PlotSettings(False)
  12.                     cpl.CopyFrom(pl)
  13.                     cpl.AddToPlotSettingsDictionary(CurrentDatabase)
  14.                     Dim bt As BlockTable = CType(CurrentDatabase.BlockTableId.GetObject(OpenMode.ForRead), BlockTable)
  15.                     Dim btr As BlockTableRecord = CType(bt(BlockTableRecord.PaperSpace).GetObject(OpenMode.ForRead), BlockTableRecord)
  16.                     Dim lytobjID As ObjectId = btr.LayoutId.GetObject(OpenMode.ForRead).ObjectId
  17.                     Dim lytps As PlotSettings = CType(lytobjID.GetObject(OpenMode.ForWrite), PlotSettings)
  18.                     lytps.CopyFrom(cpl)
  19.                 End If
  20.                 currentTransaction.Commit()
  21.             End Using
  22.         End Using
  23.     End Sub

参见附件
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2014-3-17 19:43:55 | 显示全部楼层
如果我想跳到下一行,我会被拒绝
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 21:01:15 | 显示全部楼层
试试这个,消息框显示什么?    Public Sub AddPlotSettings(ByVal plotsettings file为字符串,ByVal PlotSettingsName为字符串)。
Dim current Database As Database = HostApplicationServices,工作数据库。
Dim layName As String = Nothing 。
将SourceDatabase用作新数据库(假,真)。
源数据库,ReadDwgFile(PlotSettingsFile,FileOpenMode。OpenForReadAndAllShare,True," " " 。
使用currentTransaction作为Transaction = CurrentDatabase,transaction manager . start transaction 。

使用sourceTransaction作为Transaction = SourceDatabase,transaction manager . start transaction 。
Dim sourcePlotDic As db dictionary = source database,PlotSettingsDictionaryId . GetObject(open mode,ForRead)。
If sourcePlotDic,包含(PlotSettingsName) Then。
Dim objID As ObjectId = sourcePlotDic,GetAt(PlotSettingsName)。
Dim pl As PlotSettings = objID,GetObject(OpenMode,ForRead)。
Dim CPL As New plot settings(False)。
应用,ShowAlertDialog(pl,GetType.Name)。
应用,ShowAlertDialog(CPL . gettype . name)。
cpl.CopyFrom(pl)。
CPL . addtoplotsettingdictionary(当前数据库)。
Dim Bt As block table = current database,block table id . GetObject(OpenMode,ForRead)。
Dim btr As block table record = Bt(block table record,图纸空间),GetObject(OpenMode。ForRead)。
Dim lay As Layout = btr,LayoutId.GetObject(OpenMode,ForWrite)。
铺设,CopyFrom(cpl)。
layName = lay,布局名称。
结束If。
源事务,Commit()。
结束使用。
当前事务,Commit()。
结束使用。

结束使用。
如果不是layName = Nothing,则。
布局管理器,current . current layout = layName 。
结束If。

结束Sub。

回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 21:11:49 | 显示全部楼层
剧情设置,剧情设置
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2014-3-17 21:38:37 | 显示全部楼层
你试图复制模型空间的绘图设置,是吗?您需要更新该功能。您可以只检查您的coping ModelType属性的plotsettings来设置构造函数,类似于    Public Sub AddPlotSettings(ByVal plotsettings file作为字符串,ByVal PlotSettingsName作为字符串)。
Dim current Database As Database = HostApplicationServices,工作数据库。
Dim layName As String = Nothing 。
将SourceDatabase用作新数据库(假,真)。
源数据库,ReadDwgFile(PlotSettingsFile,FileOpenMode。OpenForReadAndAllShare,True," " " 。
使用currentTransaction作为Transaction = CurrentDatabase,transaction manager . start transaction 。

使用sourceTransaction作为Transaction = SourceDatabase,transaction manager . start transaction 。
Dim sourcePlotDic As db dictionary = source database,PlotSettingsDictionaryId . GetObject(open mode,ForRead)。
If sourcePlotDic,包含(PlotSettingsName) Then。
Dim objID As ObjectId = sourcePlotDic,GetAt(PlotSettingsName)。
Dim pl As PlotSettings = objID,GetObject(OpenMode,ForRead)。
Dim cpl作为新的绘图设置(pl,ModelType)。
cpl.CopyFrom(pl)。
CPL . addtoplotsettingdictionary(当前数据库)。
Dim Bt As block table = current database,block table id . GetObject(OpenMode,ForRead)。
将btr调成块表记录。
如果pl,型号然后。
btr = bt(BlockTableRecord,模型空间),GetObject(OpenMode。ForRead)。
否则。
btr = bt(BlockTableRecord,图纸空间),GetObject(OpenMode。ForRead)。
结束If。

Dim lay As Layout = btr,LayoutId.GetObject(OpenMode,ForWrite)。
铺设,CopyFrom(cpl)。
layName = lay,布局名称。
结束If。
源事务,Commit()。
结束使用。
当前事务,Commit()。
结束使用。

结束使用。
如果不是layName = Nothing,则。
布局管理器,current . current layout = layName 。
结束If。

End Sub(结束订阅)。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 02:37 , Processed in 0.158981 second(s), 72 queries .

© 2020-2025 乐筑天下

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