乐筑天下

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

使用 ucs 和剪裁平面设置视图

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 19:18:07 | 显示全部楼层 |阅读模式
这里有几个线程涉及这一点,但并不完全是我所追求的。
下面的代码用于使用当前ucs设置基本视图,我现在要做的是打开修剪平面。
到目前为止,我已经找到了可以用位掩码切换的sysvar VIEWMODE,这是失败的,有什么想法吗?
下一个问题将是设置剪辑距离,有没有人使用arx dll的函数有任何运气?
  1. Public Sub SetClippedView()
  2.     ' This example creates a new view.
  3.     ' It then changes the active viewport to
  4.     ' the newly created view.
  5.    
  6.     ' Create a new view
  7.     Dim viewObj As AcadView
  8.     Set viewObj = ThisDrawing.Views.Add("TESTVIEW")
  9.    
  10.     ' Set the view characteristics
  11.     ' get the current ucs values:
  12.     Dim xdir As Variant, ydir As Variant, zdir(2) As Double, ucsorigin As Variant
  13.     xdir = ThisDrawing.GetVariable("UCSXDIR")
  14.     ydir = ThisDrawing.GetVariable("UCSYDIR")
  15.     'cross the x and y vecs to get the zdir
  16.     Dim xv(2) As Double, yv(2) As Double
  17.     InitVec xv, xdir: InitVec yv, ydir
  18.     VecCross zdir, xv, yv
  19.     ucsorigin = ThisDrawing.GetVariable("UCSORG")
  20.     viewObj.Center(0) = ucsorigin(0): viewObj.Center(1) = ucsorigin(1)
  21.     viewObj.Direction = zdir
  22.     viewObj.Target = ucsorigin
  23.     'set the clipping planes on:
  24.     ThisDrawing.SetVariable "VIEWMODE", 6 '<<-------- fails here
  25.    
  26.     ' Get the current active viewport
  27.     Dim viewportObj As AcadViewport
  28.     Set viewportObj = ThisDrawing.ActiveViewport
  29.       
  30.     ' Set the view in the viewport
  31.     viewportObj.SetView viewObj
  32.     ThisDrawing.ActiveViewport = viewportObj
  33.         
  34.     ThisDrawing.Regen True
  35.     ThisDrawing.SendCommand "_zoom" & vbCr & "a" & vbCr
  36. End Sub

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

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

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 19:24:15 | 显示全部楼层
自从我完成它以来已经过去了十年或更长时间(以为是95年),但是我已经成功地从lisp建立了剪裁平面。我会看看我是否能找到代码和突出位;可以这么说。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 19:34:52 | 显示全部楼层
我关于设置裁剪平面的回答让我有点不知所措...反正就在那里(frontz/backz)
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 19:39:03 | 显示全部楼层
好的,我最大的问题是设置sysvar,看起来你需要做一些体操来设置它们,这是我到目前为止所拥有的,但它仍然失败,在此期间我会进行一些挖掘。
[1代码]
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 20:25:15 | 显示全部楼层
我找到了代码Mick,但是是的,它很模糊。
从本质上讲,我所做的是创建一个临时视图对象,将其调整为适合对象,然后将其设置为活动状态。我修改的视图对象变量(dxf组代码)是:
组代码
描述
Activex 等效
10
视图中心
(安全阵列)
11
视图方向
(安全数组)
12
视图目标
(安全数组)
43
前 Z
N/A
44
Back Z
N/A
50
View Twist
N/A
71
View Mode
N/A

我发现试图完成上表时发现,对象模型再次无法使用 dxf 组代码进行 1:1 映射; grrrr。请注意,我直接询问了一个视图对象,而不是依赖于帮助文件,所以我非常确定记录的属性没有公开(甚至不是隐藏属性)。
不过可能是错的。
所以(如果我理解正确的话)这意味着如果一个人使用VB[A],你只能使用系统变量来设置剪切平面等,就像你在上一篇文章中所做的那样。
上面的蓝色vars是你在代码中解决的问题;红色的vars是你
可能需要
设置(或确认它们的值)才能完成任务的var。对不起,这就是我现在所拥有的一切。
不好意思。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-1-16 20:32:31 | 显示全部楼层
哦,好吧,又把旧的arx拐杖拿出来了
附加的arx(2007/8)有2个命令:
SETCLIPVIEW-将视图设置为当前ucs,剪辑平面前后打开,距离分别为500mm/-500mm。将您的ucs设置为您想要工作和运行的点和方向。
VIEWSEISO-将视图设置为std东南iso视图并关闭剪辑。
如果有人想要解决方案或代码,只需大喊大叫。
添加:我刚刚添加了一个帝国版本,将剪辑平面设置为24英寸,希望适合,如果不让我知道。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 23:12:40 | 显示全部楼层
米克Arx可能是正确的选择。
中心-作为一个2d点,很难确定这个2d点需要在哪个平面上,我以为会在dcs中,但这不一定行得通。
DCS的原点是存储在AutoCAD系统变量TARGET中的点,其Z轴是观察方向,但是目标不会更新。
“视图模式”是只读的。
我会再看一会儿。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2008-1-16 23:38:16 | 显示全部楼层
可悲的是,一行口齿不清可以设定方向,夹住飞机,雅达如果不是很晚,我还没有吃安眠药,我会扔一个剪刀,但我的头被猛击了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 12:48 , Processed in 0.574045 second(s), 68 queries .

© 2020-2025 乐筑天下

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