使用 ucs 和剪裁平面设置视图
这里有几个线程涉及这一点,但并不完全是我所追求的。下面的代码用于使用当前ucs设置基本视图,我现在要做的是打开修剪平面。
到目前为止,我已经找到了可以用位掩码切换的sysvar VIEWMODE,这是失败的,有什么想法吗?
下一个问题将是设置剪辑距离,有没有人使用arx dll的函数有任何运气?
Public Sub SetClippedView()
' This example creates a new view.
' It then changes the active viewport to
' the newly created view.
' Create a new view
Dim viewObj As AcadView
Set viewObj = ThisDrawing.Views.Add("TESTVIEW")
' Set the view characteristics
' get the current ucs values:
Dim xdir As Variant, ydir As Variant, zdir(2) As Double, ucsorigin As Variant
xdir = ThisDrawing.GetVariable("UCSXDIR")
ydir = ThisDrawing.GetVariable("UCSYDIR")
'cross the x and y vecs to get the zdir
Dim xv(2) As Double, yv(2) As Double
InitVec xv, xdir: InitVec yv, ydir
VecCross zdir, xv, yv
ucsorigin = ThisDrawing.GetVariable("UCSORG")
viewObj.Center(0) = ucsorigin(0): viewObj.Center(1) = ucsorigin(1)
viewObj.Direction = zdir
viewObj.Target = ucsorigin
'set the clipping planes on:
ThisDrawing.SetVariable "VIEWMODE", 6 '<<-------- fails here
' Get the current active viewport
Dim viewportObj As AcadViewport
Set viewportObj = ThisDrawing.ActiveViewport
' Set the view in the viewport
viewportObj.SetView viewObj
ThisDrawing.ActiveViewport = viewportObj
ThisDrawing.Regen True
ThisDrawing.SendCommand "_zoom" & vbCr & "a" & vbCr
End Sub
**** Hidden Message ***** 自从我完成它以来已经过去了十年或更长时间(以为是95年),但是我已经成功地从lisp建立了剪裁平面。我会看看我是否能找到代码和突出位;可以这么说。 我关于设置裁剪平面的回答让我有点不知所措...反正就在那里(frontz/backz) 好的,我最大的问题是设置sysvar,看起来你需要做一些体操来设置它们,这是我到目前为止所拥有的,但它仍然失败,在此期间我会进行一些挖掘。
我找到了代码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,你只能使用系统变量来设置剪切平面等,就像你在上一篇文章中所做的那样。
上面的蓝色vars是你在代码中解决的问题;红色的vars是你
可能需要
设置(或确认它们的值)才能完成任务的var。对不起,这就是我现在所拥有的一切。
不好意思。 哦,好吧,又把旧的arx拐杖拿出来了
附加的arx(2007/8)有2个命令:
SETCLIPVIEW-将视图设置为当前ucs,剪辑平面前后打开,距离分别为500mm/-500mm。将您的ucs设置为您想要工作和运行的点和方向。
VIEWSEISO-将视图设置为std东南iso视图并关闭剪辑。
如果有人想要解决方案或代码,只需大喊大叫。
添加:我刚刚添加了一个帝国版本,将剪辑平面设置为24英寸,希望适合,如果不让我知道。 米克Arx可能是正确的选择。
中心-作为一个2d点,很难确定这个2d点需要在哪个平面上,我以为会在dcs中,但这不一定行得通。
DCS的原点是存储在AutoCAD系统变量TARGET中的点,其Z轴是观察方向,但是目标不会更新。
“视图模式”是只读的。
我会再看一会儿。
可悲的是,一行口齿不清可以设定方向,夹住飞机,雅达如果不是很晚,我还没有吃安眠药,我会扔一个剪刀,但我的头被猛击了。
页:
[1]