77845


AUTOCADからの移行作業を行っております  
AUTOCADでは動作していたのですがIJCADでは下記のエラーが出ます

[code]

    実行時エラー '-2147467259(8004005)':
    'AddMInsertBlock'メソッドは失敗しました:'IGcadModelSpeace'オブジェクト
    
[/code]

作業はブロックを1定の幅で並べるという物です（枠を作る）  
素人のプログラムで見づらい所も多いですがご了承ください

[code]

    Type Point
       Point(2) As Double
    End Type
    
    Dim PropertyIns As Point
    PropertyIns.Point(0) = 100 * DwgScale
    PropertyIns.Point(1) = 50 * DwgScale
    PropertyIns.Point(2) = 0#
    
    Dim InsertPoint As Variant
    InsertPoint = PropertyIns.Point
    
    Dim Blockobj As GcadObject
    Set Blockobj = ThisDrawing.ModelSpace.AddMInsertBlock(InsertPoint, Block_FileName, XScale, YScale, ZScale, Rotate, Rows, 1, FrameHeight, 0)
    Blockobj.Layer = "0"
    
[/code]

ヘルプを読んでも構文に問題はないと思っております

皆様にご教示いただきたく  
よろしくお願いいたします


CC BY-SA 4.0
2021-06-17T08:45:14.337
77626
2021-06-29T04:34:52.907
2021-06-17T08:56:03.550
3060
46906
question
vba ijcad
配列ブロック（AddMInsertBlock)の書き方


IJCADでAddMInsertBlock()メソッドを実行した所、質問で書かれたのと同じエラーが出ました。  
IJCADの不具合っぽいですね。

> 作業はブロックを1定の幅で並べるという物です（枠を作る）

ブロックを1定の幅で並べるのなら、AcadEntityのArrayRectangular()メソッドが  
代用できるのではないでしょうか。  
ArrayRectangular()メソッドは下記のように使います。

[code]

    Type Point
       Point(2) As Double
    End Type
    
    Sub InsertBlockUsingArrayRectangular()
        Dim Blockobj As GcadBlockReference
        Dim Block_FileName As String
        Dim XScale, YScale, ZScale, Rotate, RowSpace, ColSpace As Double
        Dim XMin, YMin As Double
        Dim NumRows, NumColumns As Long
        Dim PropertyIns As Point
        
        XMin = 0
        YMin = 0
        '配列にしたい任意の図面ファイルを指定する。
        Block_FileName = "～.dwg"
        XScale = 1
        YScale = 1
        ZScale = 1
        Rotate = 0
    
        PropertyIns.Point(0) = XMin
        PropertyIns.Point(1) = YMin
        PropertyIns.Point(2) = 0#
        NumRows = 2
        NumColumns = 3
        ColSpace = 100
        RowSpace = 50
        Set Blockobj = ThisDrawing.ModelSpace.InsertBlock(PropertyIns.Point, Block_FileName, XScale, YScale, ZScale, Rotate)
        Call Blockobj.ArrayRectangular(NumRows, NumColumns, 1, RowSpace, ColSpace, 0)
    End Sub
    
[/code]


CC BY-SA 4.0
2021-06-29T04:34:52.907
77845
2021-06-29T04:34:52.907
39778
77626
answer