使用ucs设置视图(&W);剪裁平面
这里有几个线程涉及到这一点,但不完全是我';m之后下面的代码使用当前ucs设置基本视图,我现在要做的是打开剪裁平面
到目前为止,我已经找到了可以用位掩码切换的sysvar VIEWMODE,这是失败的,有什么想法吗
下一个问题是设置剪切距离,有没有人幸运地使用了arx dll中的函数;s
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
It#039;自从我';d完成了(我认为是35;039;95),但我已经成功地从lisp建立了剪裁平面。本人';我看看能不能找到代码和显著位;可以这么说。 我设置剪切平面的答案只是咬了我一口……它';无论如何,它就在那里(前/后); 好的,我最大的问题是设置sysvar#039;s、 似乎你需要做一些体操来设置它们,这是我到目前为止所做的,但它35;039;s仍然失败,我';在此期间,我会四处挖掘一下
'set the clipping planes on:
Dim distF As Double, distB As Double, vmode As Integer, vardata As Variant
distF = 500#: distB = -500#: vmode = 6
vardata = distF
ThisDrawing.SetVariable "FRONTZ", vardata
vardata = distB
ThisDrawing.SetVariable "BACKZ", vardata
vardata = vmode
ThisDrawing.SetVariable "VIEWMODE", vardata
我找到了密码Mick,但是yeow,它';这太令人沮丧了
本质上,我所做的是创建一个临时视图对象,对其进行适当的修改,然后将其设置为活动状态。我修改的视图对象变量(dxf组码)为:组码  
描述  
Activex等价物查看中心(安全阵列)视图扭曲(View Twist)我在完成上表时再次发现,对象模型无法与dxf组码1:1映射;grrrr。注意,我直接询问了一个视图对象,而不是依赖于帮助文件,因此我';我很确定这些被标注的属性没有被暴露(甚至没有作为隐藏属性)
不过可能是错的
因此(如果我理解正确的话)这意味着如果使用VB,您只能使用sys vars来设置剪裁平面等,正如您';你在上一篇文章中做得很好
上面的蓝色变量是您';在代码中重新寻址;红色的是你可能需要设置的变量(或确认它们的值),以完成你的任务。对不起,那是';s all I';我现在没有时间了。对不起。 谢谢迈克尔,那';这可能就是为什么我可以#039;别放他们,笨蛋
不过,我可以得到vardata,这对我有什么好处 哦,好吧,再次取出旧的arx拐杖。附加的arx(用于2007/8)有两个命令:
SETCLIPVIEW-将视图设置为当前ucs,并在500mm/-500mm的距离上前后打开剪裁平面。将ucs设置为要工作和运行的点和方向
VIEWSEISO-将视图设置为std东南iso视图并关闭剪裁。如果有人想要解决方案或代码,请大声喊叫
补充:我刚刚添加了一个帝国版,将裁剪平面设置为24英寸,希望合适,如果不让我知道的话。 Arx的米克可能是一条路要走
中心-作为一个2d点,很难计算出这个2d点需要在哪个平面上,我以为它会在dcs中,但那不是';不一定行
DCS的原点是存储在AutoCAD系统变量目标中的点,其Z轴是观察方向,但目标没有#039;t更新
";VIEWMODE“;是只读的
I';我再多看一点
可悲的是,一行lisp可以设置方向,剪裁平面,雅达如果它不是';迟到了,我没有#039;我已经吃了安眠药;d扔出一个剪子,但我的诺金#039;正在被猛烈抨击。
页:
[1]