乐筑天下

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

在paperspace中自动添加尺寸。

[复制链接]

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-18 09:17:52 | 显示全部楼层 |阅读模式
大家好,
我正在寻找创建一个可以自动调整视口中显示的3D实体尺寸的例程。
在我开始之前,我需要了解您如何知道视口上方的纸质空间中的相对坐标与模型空间中的真实坐标之间的相关性。
欢迎任何建议、代码、需要我澄清的问题等。
仅供参考。我注意到Express Tools、Layout Tools、Change Space将携带从模型空间转移到纸质空间的对象的xdata。这很有趣,因为它可用于在纸质空间中创建最终用户可以访问的对象以进行气球膨胀。您还应该注意到,欧特克制作的这个实用程序清楚地表明他们理解并拥有在纸空间中找到等效位置的代码。
谢谢,
David Wishengrad
MillLister, Inc.

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

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

使用道具 举报

3

主题

34

帖子

2

银币

初来乍到

Rank: 1

铜币
46
发表于 2006-4-18 09:23:48 | 显示全部楼层
我想你可能必须使用边界框来确定你正在使用哪个视口。
  1. Public Sub ModeltoPaperSpacePoint()
  2.     Dim vp As AcadPViewport, Ent As AcadEntity, VarPick
  3.     Dim util As AcadUtility, M1, P1
  4.     Dim i As Integer, dblScale As Double
  5.     Dim VpCol As New Collection
  6.     Dim PSpt As AcadPoint, MSpt As AcadPoint
  7.    
  8.     Set util = ThisDrawing.Utility
  9.     If ThisDrawing.ActiveSpace = acModelSpace Then
  10.         MsgBox "Command not allowed unless TILEMODE is set to 0"
  11.         Exit Sub
  12.     End If
  13.     For Each Ent In ThisDrawing.PaperSpace
  14.         If TypeOf Ent Is AcadPViewport Then
  15.             i = i + 1
  16.             VpCol.Add Ent
  17.         End If
  18.     Next
  19.     If i = 1 Then
  20.         MsgBox "Please add a viewport"
  21.         Exit Sub
  22.     End If
  23.      'Debug.Print i
  24.     If ThisDrawing.MSpace = False Then
  25.         If i > 2 Then
  26.             util.GetEntity Ent, VarPick, "Pick a viewport:"
  27.             If TypeOf Ent Is AcadPViewport Then
  28.                 Set vp = Ent
  29.             Else
  30.                 Exit Sub
  31.             End If
  32.          Else
  33.             Set vp = VpCol(2)
  34.         End If
  35.         vp.Display True
  36.         ThisDrawing.MSpace = True
  37.         ThisDrawing.ActivePViewport = vp
  38.     Else
  39.         Set vp = ThisDrawing.ActivePViewport
  40.     End If
  41.     vp.DisplayLocked = True
  42.     M1 = util.GetPoint(, "Pick a point:")
  43.     Set MSpt = ThisDrawing.ModelSpace.AddPoint(M1)
  44.     MSpt.Color = acBlue
  45.    P1 = util.TranslateCoordinates(M1, acWorld, acDisplayDCS, False)
  46.    P1 = util.TranslateCoordinates(P1, acDisplayDCS, acPaperSpaceDCS, False)
  47.     ThisDrawing.MSpace = False
  48.     Set PSpt = ThisDrawing.PaperSpace.AddPoint(P1)
  49.     PSpt.Color = acGreen
  50.     Set vp = Nothing
  51.    
  52. End Sub
  53. Public Sub PapertoModelSpacePoint()
  54.     Dim Ent As AcadEntity, VarPick
  55.     Dim util As AcadUtility, M1, P1
  56.     Dim PSpt As AcadPoint, MSpt As AcadPoint
  57.     Set util = ThisDrawing.Utility
  58.     ThisDrawing.ActiveSpace = acPaperSpace
  59.     ThisDrawing.MSpace = False
  60.     P1 = util.GetPoint(, "Pick a point:")
  61.     Set PSpt = ThisDrawing.PaperSpace.AddPoint(P1)
  62.     PSpt.Color = acGreen
  63.     P1 = util.TranslateCoordinates(P1, acPaperSpaceDCS, acDisplayDCS, False)
  64.     M1 = util.TranslateCoordinates(P1, acDisplayDCS, acWorld, False)
  65.    
  66.     Set MSpt = ThisDrawing.ModelSpace.AddPoint(M1)
  67.     MSpt.Color = acBlue
  68.    
  69. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-4-18 13:21:02 | 显示全部楼层
当视口有扭曲时,这会更好一点。
没有简单的方法来获取与视口关联的ucs,
所以简单的方法是设置active eviewport。这会在翻译之前更新Ucs

  1. Public Sub PapertoModelSpacePoint()
  2.     Dim Pv As AcadPViewport, Ent As AcadEntity, VarPick
  3.     Dim util As AcadUtility
  4.     Dim PSpt As AcadPoint, MSpt As AcadPoint
  5.     Dim M1, P1, Orig
  6.     Set util = ThisDrawing.Utility
  7.     ThisDrawing.ActiveSpace = acPaperSpace
  8.     ThisDrawing.MSpace = False
  9.     P1 = util.GetPoint(, "Pick a point:")
  10.     Set PSpt = ThisDrawing.PaperSpace.AddPoint(P1)
  11.     PSpt.Color = acGreen
  12.     Set Pv = EntSel
  13.     ThisDrawing.MSpace = True
  14.     ThisDrawing.ActivePViewport = Pv
  15.     P1 = util.TranslateCoordinates(P1, acPaperSpaceDCS, acDisplayDCS, False)
  16.     M1 = util.TranslateCoordinates(P1, acDisplayDCS, acWorld, False)
  17.     Set MSpt = ThisDrawing.ModelSpace.AddPoint(M1)
  18.     MSpt.Color = acBlue
  19.     ThisDrawing.ActiveSpace = acPaperSpace
  20.    
  21. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-4-18 17:55:29 | 显示全部楼层
David,这是一个困难的问题,虽然你可以从mspace到pspace(Bryco是这方面的老手)获得一个点,但我发现对于3d实体,拥有拓扑是不够的
如果您可以将对象以某种格式存储在文件和模型中,从该文件中您可以获得在任何空间中标注对象所需的一切,您可以使用Bryco的代码获得初始“开始”或插入点<这不容易,但可以做到
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-4-18 18:03:50 | 显示全部楼层
谢谢。你的代码看起来很有希望。
保重,
戴夫
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-19 16:25:27 | 显示全部楼层
嘿伙计们,
谢谢你的代码。我真的很想摆弄那些东西,但我已经偏离了将Rhino创建的SAT文件转换为ACAD实体的轨道。他们在实体中的所有实体都是脊柱,我们正试图将它输出到CNC,在那里所有的实体都必须是直线、圆弧、圆和直线。真是一团糟,但是我快好了。我想接下来我会把我网格移植到Rhino,并在之后的构建中添加特性识别。
总之....我需要为一家对我的软件感兴趣的公司做这项工作,我没有机会用上面的代码工作,但我会的。非常感谢,
戴夫
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-30 14:42:21 | 显示全部楼层
我上面的代码使用点的位置作为所有引线的起点,以及用户选择堆叠文本数据的位置。
有没有办法让代码允许引线和气球文本的可见视图可见,并根据十字准线的位置进行更新,以便用户可以在提交之前查看和调整文本的位置?
任何帮助是值得赞赏的。我以前从未见过任何VB代码这样做,所以我不知道它是否可以通过vb.
我正在寻找这种拖曳效果,但找不到任何人或任何东西在VB中做到这一点。在此期间,我将查看是否有人创建了一个我可以通过VB代码访问的arx。
谢谢。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-6-7 09:48:26 | 显示全部楼层
好了,伙计们,再次感谢大家
我对上面的代码做了很多修改,但对于任何想开始做类似事情的人来说,这是一个很好的起点
以下是完成的实用程序的功能(使用windows media9编解码器编码的10兆avi):
http://SmartLister.com/Files/Balloon1.avi
视频质量是公平的。引线在视频中仅显示为虚线<如果有人在任何一项日常活动中需要帮助,请直接询问。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-6-10 13:23:48 | 显示全部楼层
戴夫看起来不错。因此,当您这样做时,您是否想出了从图纸空间到模型以编程方式提供关联标注的方法?
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-6-10 13:33:47 | 显示全部楼层

谢谢。
我还没有走到那一步。这段代码花了很长一周的时间,也花了很多时间。我甚至不是程序员。
我对PS和MS之间的积分转换有了更好的理解。
自动标注将需要它,但我可能需要引入一个2D投影并使其变暗,然后删除它。我还在考虑要用的概念。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 18:56 , Processed in 0.542585 second(s), 72 queries .

© 2020-2025 乐筑天下

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