

IJCAD2018でVB.NETを使用して開発をしています。

下記のソースコードにて、現在のビューに対して、前方クリップをオンオフしたり、クリップの距離を設定する関数を作ったのですが、これを呼ぶとエラーは出ませんが、画面に変化がありません。  
処理後にGCAD側のビュー管理のダイアログで、前方クリップと距離の設定を見ても、処理が反映されていなかったです。  
これの正しいやり方を教えていただけないでしょうか。

一方で、上記と同じようにGetCurrentViewで現在ビューを取得して、ビュー（ビューの中心やカメラの目標点）を編集して画面に更新を掛けることはできていますので、全く見当違いの書き方でもないような気がします。

* * *

コード：

カレントビューの前方クリップのオンオフや、クリップ距離の指定がうまくいきません。

[code]

        Private Sub SetFrontClipOnOf(ByVal blnEnabled As Boolean)
            Dim icdDoc As Document = IJCADApplication.DocumentManager.MdiActiveDocument
            Using icdTrans As Transaction = icdDoc.TransactionManager.StartTransaction
                Using acView As ViewTableRecord = icdDoc.Editor.GetCurrentView
    
                    acView.FrontClipEnabled = blnEnabled
                    icdDoc.Editor.SetCurrentView(acView)
    
                End Using
                icdTrans.Commit()
            End Using
            icdDoc.Editor.UpdateScreen()
        End Sub
    
        Private Sub SetFrontClipDist(byval dblDist as Double)
            Dim icdDoc As Document = IJCADApplication.DocumentManager.MdiActiveDocument
            Using icdTrans As Transaction = icdDoc.TransactionManager.StartTransaction
                Using acView As ViewTableRecord = icdDoc.Editor.GetCurrentView
    
                    acView.FrontClipDistance = dblDist
                    icdDoc.Editor.SetCurrentView(acView)
    
                End Using
                icdTrans.Commit()
            End Using
            icdDoc.Editor.UpdateScreen()
        End Sub
    
[/code]

一方、全く同じようにCurrentViewを取得して指定位置にズームし、カメラターゲットをズーム箇所に合わせる処理は、うまくできています。

[code]

            Public Sub ZoomRangeByAcView(CenPnt As Point3d, icdDoc As Document, ByVal dblRad As Double)
    
                Using icdTrans As Transaction = icdDoc.TransactionManager.StartTransaction
                    Using acView As ViewTableRecord = icdDoc.Editor.GetCurrentView
    
                        acView.Target = CenPnt
    
                        Dim matWCS2DCS As Matrix3d
                        matWCS2DCS = Matrix3d.PlaneToWorld(acView.ViewDirection)
                        matWCS2DCS = Matrix3d.Displacement(acView.Target - Point3d.Origin) * matWCS2DCS
                        matWCS2DCS = Matrix3d.Rotation(-acView.ViewTwist, _
                                                       acView.ViewDirection, _
                                                       acView.Target) * matWCS2DCS
                        matWCS2DCS = matWCS2DCS.Inverse()
    
                        Dim CenPntConv As Point3d = CenPnt.TransformBy(matWCS2DCS)
                        acView.CenterPoint = New Point2d(CenPntConv.X, CenPntConv.Y)
    
                        acView.Height = dblRad * 2
                        acView.Width = dblRad * 2
    
                        icdDoc.Editor.SetCurrentView(acView)
    
                    End Using
                    icdTrans.Commit()
                End Using
                icdDoc.Editor.UpdateScreen()
    
            End Sub
    
[/code]


CC BY-SA 4.0
2019-01-30T02:33:38.287
52410
2019-02-01T07:17:18.720
2019-01-30T02:39:16.050
3060
31981
question
.net vb.net ijcad
IJCAD 2018でビューの前方クリップのオンオフ


IJCADの.NET
APIではViewTableRecordオブジェクトのFrontClipDistanceプロパティやFrontClipEnabledプロパティを変更しても反映されないようです。  
ObjectARXのsetFrontClipDistanceメソッドを使用した場合は、問題なくクリップクリップ距離を変更することが出来たので、恐らく.NET
APIの不具合だと思われます。  
IJCADのサポートに、APIの不具合として報告した方が良いと思われます。


CC BY-SA 4.0
2019-02-01T07:17:18.720
52475
2019-02-01T07:17:18.720
52410
answer