DxfExtractBlock


説明

DXFファイル内の指定した単一ブロックから、ブロックを構成するオブジェクトを抽出します。

 

書式

Object.DxfExtractBlock(retCount,ExtractArray,StartLineNo,ObjectName,GroupList,[DxfFullPath]) As Boolean

引数 説明
retCount 抽出されたオブジェクトの数を返す変数を指定します。
ExtractArray 抽出結果が2次元の配列で返されます。
StartLineNo 抽出したいブロックのDXFファイル内での行番号を指定します。
DxfExtractGroupメソッドの使用例の補足説明をお読み下さい。
ObjectName 抽出したいオブジェクト名(TEXT,LINE等)を指定します。オブジェクト名にはワイルドカード(*)等のパターン文字を含めることが出来ます。
GroupList 抽出したい複数のグループコードをパイプ文字で区切って指定します。
DxfFullPath 省略可能です。省略するとWindowsテンポラリフォルダ内のAcadRemocon.dxfになります。

 

戻り値

戻り値 説明
True 正常終了しました。
False 異常終了しました。エラーの詳しい内容はShowErrorメソッドで確認出来ます。

 

使用例(VBScript)

Dim Acad  'Acad変数はErサブルーチンでも使うのでここで宣言
Call Main 'Mainサブルーチンコール

'選択したブロック内の線分を抽出
Sub Main()
  'AcadRemoconオブジェクト作成
  Set Acad = CreateObject("AcadRemocon.Body")

  'バージョンチェック
  If Not Acad.CheckVersion("220") Then Exit Sub

  'ブロック抽出
  If Not Acad.acDxfOut("ブロックを選択", "", False) Then Er: Exit Sub
  If Not Acad.DxfExtract(BlkCnt, Blk, "BLOCKS", "", "BLOCK", "2") Then Er: Exit Sub
  If BlkCnt = 0 Then Exit Sub

  'ブロック数ループ
  LineCnt = 0
  For i = 1 To BlkCnt
  'モデル空間とスペース空間の定義は無視
    If Left(Blk(1, i), 1) <> "*" Then
      '線分を取得
      If Not Acad.DxfExtractBlock(ObjCnt, Obj, Blk(UBound(Blk, 1), i), "LINE", "10|20") Then Er: Exit Sub
      LineCnt = LineCnt + ObjCnt
    End If
  Next

  '抽出結果表示
  Acad.acShowMessage LineCnt & "本の線分を抽出しました。"
End Sub

'エラー処理
Sub Er()
  'ユーザーによるキャンセル
  If Acad.ErrNumber = vbObjectError + 1000 Then
    'ここにキャンセル時の処理を追加
  Else
    Acad.ShowError 'エラー内容表示
  End If
End Sub