乐筑天下

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

如何添加/更改布局选项卡和属性。有教程吗?

[复制链接]

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-11-19 10:16:05 | 显示全部楼层
这里有一些东西可以让你达到目的。
  1. Public Sub AlignMsToVp()
  2.     Dim Vp As AcadPViewport
  3.     Dim VpsCol As New Collection
  4.     Dim Ent As AcadEntity
  5.     Dim oBref As AcadBlockReference
  6.     Dim M1, M2, P1, P2, CenPt(2) As Double
  7.     Dim Mdist As Double, PDist As Double
  8.     ThisDrawing.ActiveSpace = acPaperSpace
  9.     'Get the viewport
  10.     For Each Ent In ThisDrawing.PaperSpace
  11.         If TypeOf Ent Is AcadPViewport Then
  12.             VpsCol.Add Ent
  13.         End If
  14.     Next
  15.     'The first Vp is the layout itself
  16.     If VpsCol.count  VpsCol(1).ObjectID Then
  17.         Set Vp = VpsCol(2)
  18.     Else
  19.         Set Vp = VpsCol(1)
  20.     End If
  21.    
  22.     If ThisDrawing.MSpace = False Then
  23.         Vp.Display True
  24.         ThisDrawing.MSpace = True
  25.     End If
  26.     'Define your modelspace area
  27.     'Here you need a blockref called "MyLayoutArea"
  28.     'That is a rectangle on defpoints
  29.     Dim Ss As AcadSelectionSet
  30.     Set Ss = sset(2, "MyLayoutArea")
  31.     Ss(0).GetBoundingBox M1, M2
  32.     Vp.GetBoundingBox P1, P2
  33.     Mdist = M2(0) - M1(0)
  34.     PDist = P2(0) - P1(0)
  35.     ThisDrawing.MSpace = True
  36.     CenPt(0) = (M2(0) + M1(0)) / 2: CenPt(1) = (M2(1) + M1(1)) / 2
  37.    
  38.     Vp.StandardScale = acVpCustomScale
  39.     'This is how it is done, set the ZoomCenter
  40.     ThisDrawing.Application.ZoomCenter CenPt, 1
  41.     Vp.CustomScale = PDist / Mdist
  42.     ThisDrawing.MSpace = False
  43. End Sub

回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-11-19 11:56:08 | 显示全部楼层
太快了,布莱科!你什么时候睡觉?
同时,网站上的ZIPped绘图文件已被Acad2004类型文件取代。
选择要在视口中显示的对象:类似于:
  1. Dim algobj As AcadEntity
  2. Dim LowX As Long, HighX As Long
  3. Dim LowY As Long, HighY As Long
  4. Dim BBoxMin, BBoxMax
  5. LowX = 2147483647: HighX = -2147483647
  6. LowY = 2147483647: HighY = -2147483647
  7. For Each algobj In ThisDrawing.ModelSpace
  8.     If algobj.Layer = "Plattegrond" Or algobj.Layer = "ISO-projectie" Then
  9.         algobj.GetBoundingBox BBoxMin, BBoxMax
  10.         If BBoxMin(0)  HighX Then HighX = BBoxMax(0)
  11.         If BBoxMin(1)  HighY Then HighY = BBoxMax(1)
  12.     End If
  13. Next

这将生成公共边界框的XY坐标。但是我看到你正在代码中做类似的事情。我明天会尝试你的解决方案。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-11-19 12:49:52 | 显示全部楼层
好的,Bryco,你帮我解决了我的主要问题,我在其他地方找到了一些外围问题的解决方案。现在我想我可以把这些拼凑起来了。
再次感谢!
回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-11-21 20:12:15 | 显示全部楼层
我很高兴你把这一切都放在一起,哈瓦诺,这听起来像是一个雄心勃勃的项目。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 01:19 , Processed in 2.942566 second(s), 58 queries .

© 2020-2025 乐筑天下

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