IJCAD 2018でビューの前方クリップのオンオフ
IJCAD2018でVB.NETを使用して開発をしています。
下記のソースコードにて、現在のビューに対して、前方クリップをオンオフしたり、クリップの距離を設定する関数を作ったのですが、これを呼ぶとエラーは出ませんが、画面に変化がありません。
処理後にGCAD側のビュー管理のダイアログで、前方クリップと距離の設定を見ても、処理が反映されていなかったです。
これの正しいやり方を教えていただけないでしょうか。
一方で、上記と同じようにGetCurrentViewで現在ビューを取得して、ビュー(ビューの中心やカメラの目標点)を編集して画面に更新を掛けることはできていますので、全く見当違いの書き方でもないような気がします。
コード:
カレントビューの前方クリップのオンオフや、クリップ距離の指定がうまくいきません。
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
一方、全く同じようにCurrentViewを取得して指定位置にズームし、カメラターゲットをズーム箇所に合わせる処理は、うまくできています。
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