MickD 发表于 2008-1-16 19:18:07

使用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

MickD 发表于 2008-1-16 19:24:15

It#039;自从我&#039;d完成了(我认为是35;039;95),但我已经成功地从lisp建立了剪裁平面。本人&#039;我看看能不能找到代码和显著位;可以这么说。

MickD 发表于 2008-1-16 19:34:52

我设置剪切平面的答案只是咬了我一口……它&#039;无论如何,它就在那里(前/后);

MickD 发表于 2008-1-16 19:39:03

好的,我最大的问题是设置sysvar#039;s、 似乎你需要做一些体操来设置它们,这是我到目前为止所做的,但它35;039;s仍然失败,我&#039;在此期间,我会四处挖掘一下
'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

MickD 发表于 2008-1-16 20:25:15

我找到了密码Mick,但是yeow,它&#039;这太令人沮丧了
本质上,我所做的是创建一个临时视图对象,对其进行适当的修改,然后将其设置为活动状态。我修改的视图对象变量(dxf组码)为:组码&nbsp&nbsp
描述&nbsp&nbsp
Activex等价物查看中心(安全阵列)视图扭曲(View Twist)我在完成上表时再次发现,对象模型无法与dxf组码1:1映射;grrrr。注意,我直接询问了一个视图对象,而不是依赖于帮助文件,因此我&#039;我很确定这些被标注的属性没有被暴露(甚至没有作为隐藏属性)
不过可能是错的
因此(如果我理解正确的话)这意味着如果使用VB,您只能使用sys vars来设置剪裁平面等,正如您&#039;你在上一篇文章中做得很好
上面的蓝色变量是您&#039;在代码中重新寻址;红色的是你可能需要设置的变量(或确认它们的值),以完成你的任务。对不起,那是&#039;s all I&#039;我现在没有时间了。对不起。

Bryco 发表于 2008-1-16 20:32:31

谢谢迈克尔,那&#039;这可能就是为什么我可以#039;别放他们,笨蛋
不过,我可以得到vardata,这对我有什么好处

MickD 发表于 2008-1-16 23:12:40

哦,好吧,再次取出旧的arx拐杖。附加的arx(用于2007/8)有两个命令:
SETCLIPVIEW-将视图设置为当前ucs,并在500mm/-500mm的距离上前后打开剪裁平面。将ucs设置为要工作和运行的点和方向
VIEWSEISO-将视图设置为std东南iso视图并关闭剪裁。如果有人想要解决方案或代码,请大声喊叫
补充:我刚刚添加了一个帝国版,将裁剪平面设置为24英寸,希望合适,如果不让我知道的话。

Bryco 发表于 2008-1-16 23:38:16

Arx的米克可能是一条路要走
中心-作为一个2d点,很难计算出这个2d点需要在哪个平面上,我以为它会在dcs中,但那不是&#039;不一定行
DCS的原点是存储在AutoCAD系统变量目标中的点,其Z轴是观察方向,但目标没有#039;t更新
&quot;VIEWMODE“;是只读的
I&#039;我再多看一点

Bryco 发表于 2008-1-17 00:56:20

可悲的是,一行lisp可以设置方向,剪裁平面,雅达如果它不是&#039;迟到了,我没有#039;我已经吃了安眠药;d扔出一个剪子,但我的诺金#039;正在被猛烈抨击。
页: [1]
查看完整版本: 使用ucs设置视图(&W);剪裁平面