62676
IJCADをvb.netで印刷するときに、印刷領域に窓 (PlotType.Window)
を指定すると`icPlSetVdr.SetPlotType(icLayout,
GrxCAD.DatabaseServices.PlotType.Window)` のところでエラーになります。

ただし手動で一度印刷領域を窓に設定するとエラーが出なくなります。  
最初からエラーが出ないようにする方法はないでしょうか？

```

    Using icTrans As Transaction = icDb.TransactionManager.StartTransaction()
        Dim icLayMgr As LayoutManager = LayoutManager.Current
        Dim icLayout As Layout = icTrans.GetObject(icLayMgr.GetLayoutId(icLayMgr.CurrentLayout), OpenMode.ForWrite)
        Dim icPlSetVdr = PlotSettingsValidator.Current
        icPlSetVdr.SetPlotType(icLayout, GrxCAD.DatabaseServices.PlotType.Window)
        icPlSetVdr.SetUseStandardScale(icLayout, True)
        icPlSetVdr.SetStdScaleType(icLayout, StdScaleType.ScaleToFit)
        icPlSetVdr.SetPlotCentered(icLayout, True)
        icPlSetVdr.SetPlotRotation(icLayout, PlotRotation.Degrees090)
        icPlSetVdr.SetPlotWindowArea(icLayout, New Extents2d(New Point2d(0.0, 0.0), New Point2d(4000, 2800)))
    
    
```
CC BY-SA 4.0
2019-11-25T21:41:07.703
60839
2020-01-31T09:27:09.427
2019-11-26T00:38:41.113
3060
36480
question
vb.net ijcad
IJCADをvb.netで印刷するときに、印刷領域に窓 (PlotType.Window) を指定するとエラーになってしまう
添付しているコードを少し見ました。エラーというのは、eInvalidInput(code5)ですか？  
自分がデバッグしたときはコード上の、  
`icPlSetVdr.SetPlotType(icLayout, GrxCAD.DatabaseServices.PlotType.Window)`  
というところでeInvalidInput(code5)が起きました。

ちなみにコード最下部の1行を↑のコードよりも前に置くとエラーは出なくなりました。  
つまり、

```

    Using icTrans As Transaction = icDb.TransactionManager.StartTransaction()
    Dim icLayMgr As LayoutManager = LayoutManager.Current
    Dim icLayout As Layout = icTrans.GetObject(icLayMgr.GetLayoutId(icLayMgr.CurrentLayout), OpenMode.ForWrite)
    Dim icPlSetVdr = PlotSettingsValidator.Current    
    icPlSetVdr.SetPlotWindowArea(icLayout, New Extents2d(New Point2d(0.0, 0.0), New Point2d(4000, 2800))) **'ここに追加した**
    icPlSetVdr.SetPlotType(icLayout, GrxCAD.DatabaseServices.PlotType.Window) **'ここでエラーが出た**
    icPlSetVdr.SetUseStandardScale(icLayout, True)
    icPlSetVdr.SetStdScaleType(icLayout, StdScaleType.ScaleToFit)
    icPlSetVdr.SetPlotCentered(icLayout, True)
    icPlSetVdr.SetPlotRotation(icLayout, PlotRotation.Degrees090)
    
```

エラーが出る理由はおそらく、コードでなり手動でなり、印刷領域を窓に設定するとその窓のサイズが必要になるので、コードで窓に設定する時に窓のサイズが無いし、又はNULLだとエラーが起きるのではないかと思います。なので、窓に設定するコードの前に窓のサイズを決めてあげるコードを置いてあげると、問題なく動作するのではないでしょうか。

この修正で問題なく動作出来たら、教えてもらえると嬉しいです。
CC BY-SA 4.0
2020-01-31T04:18:54.473
62676
2020-01-31T09:27:09.427
2020-01-31T09:27:09.427
37617
37617
60839
answer