乐筑天下

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

以编程方式设置PS布局

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-6-21 20:09:55 | 显示全部楼层 |阅读模式
我需要以编程方式设置所有打印参数。我不知道'我不想在我的新工作表上显示任何视口。基本上,我想通过向layouts集合添加布局来创建新布局,设置绘图仪、图纸尺寸等。当用户从选项卡中选择它时,它不应该显示默认情况下放置视口的新设置窗口,但我希望页面设置显示用户是否在程序外创建新布局。这有意义吗。。。简而言之,我该如何为编程创建的布局关闭该功能?
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-6-21 22:36:16 | 显示全部楼层
您可以在创建新布局时将xrecord附加到该布局 然后在LayoutSwitched事件中执行以下操作:
  1. Private Sub AcadDocument_LayoutSwitched(ByVal LayoutName As String)
  2.   If ThisDrawing.Layouts(LayoutName).HasExtensionDictionary Then
  3.     ' Perhaps add a check here for the presence of a specific xrecord
  4.     Application.Preferences.Display.LayoutCreateViewport = False
  5.     Application.Preferences.Display.LayoutShowPlotSetup = False
  6.   Else
  7.     Application.Preferences.Display.LayoutCreateViewport = True
  8.     Application.Preferences.Display.LayoutShowPlotSetup = True
  9.   End If
  10. End Sub

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-6-22 12:09:28 | 显示全部楼层
或者,使用从Chuck#039;在创建布局之前,只需将这两个变量设置为false,并在完成后将其返回到以前的设置
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-6-22 16:53:15 | 显示全部楼层
是否有您知道的特定标记、设置、xrecord等会在第一次访问新布局时导致页面设置窗口弹出?我问这个问题的原因是,如果在单击布局之前重置变量,新页面设置窗口仍然会显示。我不能利用(无论如何也不容易)事件反应器,因为编程将编译成dll
我甚至转储了一个包含两个布局的图形的DXF,一个选中,一个未选中,然后比较输出,但我仍然没有找到解决这个问题的任何提示。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-6-22 17:30:22 | 显示全部楼层
就这样我'我很清楚,你想通过编程来实现这一点
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-6-22 17:32:04 | 显示全部楼层
这对我很有效,基思
  1. Sub LayoutTest()
  2. Dim oLayout As AcadLayout
  3. Dim oOrigLayout As AcadLayout
  4. Dim bVP As Boolean
  5. Dim bDialg As Boolean
  6.     bVP = Application.Preferences.Display.LayoutCreateViewport
  7.     bDialg = Application.Preferences.Display.LayoutShowPlotSetup
  8.     Set oOrigLayout = ThisDrawing.ActiveLayout
  9.    
  10.     Application.Preferences.Display.LayoutCreateViewport = False
  11.     Application.Preferences.Display.LayoutShowPlotSetup = False
  12.    
  13.     Set oLayout = ThisDrawing.Layouts.Add("NewLayout")
  14.     'With oLayout
  15.     oLayout.CopyFrom ThisDrawing.Layouts.Item(0) 'gets the plot data from the first layout....probably would want to change this.
  16.     ThisDrawing.ActiveLayout = oLayout
  17.     Application.Preferences.Display.LayoutCreateViewport = bVP
  18.     Application.Preferences.Display.LayoutShowPlotSetup = bDialg
  19.     ThisDrawing.ActiveLayout = oOrigLayout
  20.    
  21. End Sub
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-6-22 18:24:48 | 显示全部楼层
不,鲍勃。我很容易做到。问题是,我不想关闭这些设置,而是希望AutoCAD在以编程方式创建布局时忽略这些设置。原因是,如果用户希望设置它,而我将其关闭,他们只会将其重新打开。从编程的角度来看,这并不好,因为如果他们重新打开它,它将提示页面设置,我已经用编程设置了页面设置
杰夫,我会试试,看看是否能解决我的问题。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-6-22 19:25:57 | 显示全部楼层
这可能不是'这不是在动态链接库中接收文档级事件的最优雅方式,但您没有&35;039;t变得简单了。
  1. ' EventSink.cls
  2. Private WithEvents m_acadApp As AcadApplication
  3. Private WithEvents m_currentDoc As AcadDocument
  4. Private Sub m_acadApp_BeginCommand(ByVal CommandName As String)
  5.   Set m_currentDoc = m_acadApp.ActiveDocument
  6. End Sub
  7. Private Sub m_currentDoc_LayoutSwitched(ByVal LayoutName As String)
  8.   m_currentDoc.Utility.Prompt "Switched to layout: " & LayoutName
  9. End Sub
  10. Public Property Set Application(ByRef app As AcadApplication)
  11.   Set m_acadApp = app
  12.   Set m_currentDoc = m_acadApp.ActiveDocument
  13. End Property
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 22:55 , Processed in 0.578646 second(s), 68 queries .

© 2020-2025 乐筑天下

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