Polymorphism














AutoCAD LTを利用できる新発想システム開発ツール!  安全と信頼の完全自社開発製品!

抜粋サンプル
LT VB-COM HELP Samples


ホーム > 製品 > LT VB-COM > 充実のヘルプ > 抜粋サンプル


  ヘルプ本編の中からいくつかサンプルを抜粋しました

本ヘルプでは、基本的にすべての「関数」と「命令」に、そのまま使用できるサンプル プログラムを紹介しています。そのため実行したい内容をヘルプの中で見つければ、その使用方法には必ず「そのまま使用できるサンプル」が付いています。
しかしながら、「とりあえず何かを実行してみたい」方や、「どのようなプログラムの構造なのかが知りたい」方など、本編よりも実際のプログラムの書式や構造が手軽に知りたいと思う方も少なくありません。
そこで、ここではそのような方のために、ヘルプ本編内で使用されているサンプルプログラムをいくつか紹介いたします。


図形操作
    |
    |-基本操作
    |     |-
図形の作成
    |     |-
図形の削除
    |     |-
図形の移動
    |     |-
図形のコピー
    |     |-
モデル空間上のすべて図形取得
    |
    |-図形の識別と図形別操作
    |     |-
図形の識別
    |     |-
モデル空間上からすべての文字図形を取得
    |     |-
線分の頂点取得
    |     |-
線分の頂点変更
    |     |-
円の半径取得
    |     |-
円の半径変更
    |     |-
ブロック図形の構成要素取得
    |     |-
スプライン曲線の制御点、フィット点操作
    |     |-
リージョンの作成とブール演算
    |     |-
寸法図形の作成
    |
    |-図形の特殊操作
    |     |-
図形のオフセット
    |     |-
図形の分割
    |     |-
図形の空間投影
    |
    |-ラスターイメージ関連
    |     |-
ラスタイメージ作成
    |     |-
ラスタイメージ情報取得
    |     |-
ラスタイメージクリップ表示
    |
    |-マルチライン関連
    |     |-
マルチライン作成
    |     |-
マルチラインスタイル定義
    |
    |- 3次元図形
          |
          |- 3次元面
                |-3次元面作成
                |-3次元面エッジ非表示


「画層」や「文字スタイル」、「線種」、「ブロック」などのシンボルテーブル関連
    |
    |-すべての要素(レコード)の取得
    |-要素(レコード)の取得
    |-要素(レコード)の確認
    |-要素(レコード)の作成
    |-ブロックテーブルの操作


表示関連
    |
    |-ビューポート関連
    |     |-ビューポートの作成
    |     |-ポリゴン状ビューポートの作成
    |
    |-特殊な表示方法の制御
          |-前方クリップ表示、遠近法表示
          |-レンダーモード設定


入力、ユーザインターフェース関連
    |
    |-作図画面上から図形選択
    |-作図画面上から座標値取得
    |-コマンド実行


カスタマイズ特有のデータ(「拡張データ」、「拡張レコード」、「ディクショナリ」)関連
    |
    |-拡張データの操作
    |-拡張ディクショナリの操作
    |-拡張レコードの操作
    |-ディクショナリの操作











 
図形の作成

  各種図形の作成方法のサンプルです。

準備するもの:
準備するものはありません。サンプルプログラムはすべて自動的に動作します。


サンプルプログラム:
'現在の作業空間に新しい図形「線分」オブジェクトを追加

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 1 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt ( 0 ) = 1.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 0 ) = pt  '(始点)
   pt ( 0 ) = 5.0: pt ( 1 ) = 5.0: pt ( 2 ) = 0.0 
   setData ( 1 ) = pt  '(終点)
   es = obj.makeEnt ( "線分" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub




'現在の作業空間に新しい図形「円」オブジェクトを追加

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 2 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(座標値)
   Dim vec ( 0 to 2 ) As Double '(ベクトル)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt ( 0 ) = 3.0: pt ( 1 ) = 3.0: pt ( 2 ) = 0.0 
   vec ( 0 ) = 0.0: vec ( 1 ) = 0.0: vec ( 2 ) = 1.0 
   setData ( 0 ) = pt  '(中心)
   setData ( 1 ) = vec  '(法線ベクトル)
   setData ( 2 ) = 1.5   '(半径)
   es = obj.makeEnt ( "円" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub




'現在の作業空間に新しい図形「楕円」オブジェクトを追加

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 3 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(座標値)
   Dim vec ( 0 to 2 ) As Double '(ベクトル)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt ( 0 ) = 4.0: pt ( 1 ) = 4.0: pt ( 2 ) = 0.0 
   setData ( 0 ) = pt  '(中心)
   vec ( 0 ) = 0.0: vec ( 1 ) = 0.0: vec ( 2 ) = 1.0 
   setData ( 1 ) = vec  '(法線ベクトル)
   vec ( 0 ) = 2.0: vec ( 1 ) = 0.0: vec ( 2 ) = 0.0 
   setData ( 2 ) = vec  '(主軸ベクトル)
   setData ( 3 ) = 0.5  '(半径比率)
   es = obj.makeEnt ( "楕円" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub




'現在の作業空間に新しい図形「文字」オブジェクトを追加

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 4 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(3次元座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt ( 0 ) = 1.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 0 ) = pt  '(基点の3次元座標値)
   setData ( 1 ) = "Sample"  '(文字)
   setData ( 2 ) = "Standard"  '(文字スタイルのスタイル名)
   setData ( 3 ) = 1.5  '(文字の高さ)
   setData ( 4 ) = 0.0  '(回転角度)
   es = obj.makeEnt ( "文字" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub




 図形の削除
  最後に描画した図形を削除するサンプルです。

準備するもの:
AutoCAD LT上で図形を作図しておきます。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:

Sub Sample()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   If es Then
       es = obj.cad ("全オブジェクト共通" , objId ,"削除" , Null , Null)
       '実行が成功するとオブジェクトが指定の状態に変化します
       MsgBox "一度図面エディタにカーソルを入れ、図形の削除を確認", vbOkOnly ,"削除テスト"
       es = obj.cad ("全オブジェクト共通" , objId ,"削除" , 0 , Null)
   End If
End Sub




 図形の移動
  最後に描画した図形を移動するサンプルです。

準備するもの:
AutoCAD LT上で図形を作図しておきます。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'図形の位置を変換するサンプルです。この例では「平行移動」をしています。
'「変換」は「平行移動」のほかに、「回転」、「尺度変更」などが行なえます。

Sub Sample()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   Dim setData As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim vec ( 0 to 2 ) As Double     '(3次元ベクトル用データ)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   vec ( 0 ) = 2.5: vec ( 1 ) = 5.5: vec ( 2 ) = 0.0 '(平行移動変位をベクトルで指定)
   '(変位のベクトルから3次元マトリクスを作成)
   es = obj.geom ( "3Dマトリクスジオメトリ" , Null , "平行移動" , vec , setData)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad("全図形共通" , objId ,"変換" , setData , Null)
   '実行が成功すると図形が指定の状態に変化します
End Sub




 図形のコピー
  最後に描画した図形をコピーするサンプルです。

準備するもの:
AutoCAD LT上で図形を作図しておきます。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
図形を変換した位置にコピーします。

Sub Sample()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   Dim setData As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim vec ( 0 to 2 ) As Double    '(3次元ベクトル用データ)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   vec ( 0 ) = 2.5: vec ( 1 ) = 5.5: vec ( 2 ) = 0.0 '(平行移動変位をベクトルで指定)
   '(変位のベクトルから3次元マトリクスを作成)
   es = obj.geom ( "3Dマトリクスジオメトリ" , Null , "平行移動" , vec , setData)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad("全図形共通" , objId ,"変換複写" , setData , getData)
   If es Then
       MsgBox getData , vbOKOnly , "オブジェクトID表示"
   End If
End Sub




 モデル空間上のすべて図形取得
  モデル空間上のすべて図形を取得するサンプルです。

準備するもの:
AutoCAD LT上でいろいろな図形を複数作図しておきます。

サンプルプログラム:
'モデル空間に対する操作の例

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   '「ブロックテーブル」から指定の「レコード」を取得
   es = obj.table ("ブロックテーブル")"名前から取得" , "*Model_Space" , objId)
   If es Then   '(上記の命令が正しく動作した場合次を実行)
       es = obj.cad ("ブロックテーブルレコード" , objId ,"全図形取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           For i = LBound ( getData ) To UBound ( getData )
               MsgBox "オブジェクトID:" & getData ( i ) , vbOKOnly , "ブロックレコード内の図形-" & i+1
           Next
       End If
   Else
       MsgBox "「ブロックテーブル」にレコード「*Model_Space」はありません",vbOKOnly , "エラー表示"
   End If
End Sub


 図形の識別
  図形を識別するサンプルです。

準備するもの:
AutoCAD LT上で図形(「円」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'オブジェクトのタイプを識別します。基本的な識別はこの方法です。

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application" ) '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形を取得)
   If obj.typeCheck ( "" , objId ) Then
       'オブジェクトが「円」の場合のみ実行
       es = obj.cad ("" , objId ,"半径設定" , 1.5 ,Null )
   End If
End Sub
'「オブジェクトの名前」で識別します
Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application" ) '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   MsgBox "図形名:" & obj.name (objId) , vbOKOnly , "図形名表示"
End Sub




 モデル空間上からすべての文字図形を取得
  のサンプルです。

準備するもの:
AutoCAD LT上で文字図形(「TEXT」コマンドによる文字)をいくつか作図しておきます。

サンプルプログラム:

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim str As Variant   '(「文字列」を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   '「ブロックテーブル」から指定の「レコード」を取得
   es = obj.table ("ブロックテーブル")"名前から取得" , "*Model_Space" , objId)
   If es Then   '(上記の命令が正しく動作した場合次を実行)
       es = obj.cad ("ブロックテーブルレコード" , objId ,"全図形取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           For i = LBound ( getData ) To UBound ( getData )
               objId = getData ( i )
               If obj.typeCheck ( "文字" , objId ) Then
                   'オブジェクトが「文字」の場合のみ実行
                   str = Empty
                   es = obj.cad ("文字" , objId ,"文字列取得" , Null ,str )
                   MsgBox "文字列:" & str , vbOKOnly , "文字図形"
               End If
           Next
       End If
   Else
       MsgBox "「ブロックテーブル」にレコード「*Model_Space」はありません",vbOKOnly , "エラー表示"
   End If
End Sub




 線分の頂点取得
  線分の始点を取得するサンプルです。

準備するもの:
AutoCAD LT上で図形(「線分」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'最後に描画された図形を対象にしています

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("線分" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       es = obj.cad ("線分" , objId ,"始点取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           MsgBox "X: " & getData ( 0 ) & " Y: " & getData ( 1 ) & " Z: " & getData ( 2 ), vbOKOnly , "始点座標値表示"
       End If
   Else
       MsgBox "図形は「線分」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 線分の頂点変更
  線分の始点の座標値を変更するサンプルです。

準備するもの:
AutoCAD LT上で図形(「線分」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'最後に描画された図形を対象にしています
Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData ( 0 to 2 ) As Double    '(命令の実行に必要な「設定データ」宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("線分" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       setData ( 0 ) = 1.0  'X座標
       setData ( 1 ) = 2.0  'Y座標
       setData ( 2 ) = 0.0  'Z座標
       es = obj.cad ("線分" , objId ,"始点設定" , setData , Null)
       '実行が成功すると図形が指定の状態に変化します
   Else
       MsgBox "図形は「線分」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 円の半径取得
  円の半径の値を取得するサンプルです。

準備するもの:
AutoCAD LT上で図形(「円」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'最後に描画された図形を対象にしています

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("円" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       es = obj.cad ("円" , objId ,"半径取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           MsgBox getData , vbOKOnly , "半径表示"
       End If
   Else
       MsgBox "図形は「円」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 円の半径変更
  円の半径の値を設定するサンプルです。

準備するもの:
AutoCAD LT上で図形(「円」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'最後に描画された図形を対象にしています

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application" ) '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形を取得)
   If obj.typeCheck ( "" , objId ) Then
       'オブジェクトが「円」の場合のみ実行
       es = obj.cad ("" , objId ,"半径設定" , 1.5 ,Null )
   End If
End Sub




 ブロック図形の構成要素取得
  ブロック図形を構成している要素を取得するサンプルです。

準備するもの:
AutoCAD LT上でブロック図形を作図、挿入します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim blockId As Variant   '(ブロック用「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object  '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ( "最後の図形") Null , objId )    '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ( "ブロック参照" , objId ) '(図形が指定のオブジェクトかを確認)
   If chk Then
       es = obj.cad ( "ブロック参照" , objId , "ブロックテーブルレコード取得" , Null , blockId )
       If es Then
           es = obj.cad ("ブロックテーブルレコード" , blockId ,"全図形取得" , Null , getData)
           If es Then
               '(実行結果をメッセージボックスに表示)
               For i = LBound ( getData ) To UBound ( getData )
                   MsgBox "オブジェクトID:" & getData ( i ) , vbOKOnly , "ブロックレコード内の図形-" & i+1
               Next
           End If
       End If
   Else
       MsgBox "図形は「ブロック参照」ではありません") vbOKOnly , "エラー表示"
   End If
End Sub




 スプライン曲線の制御点、フィット点操作
  スプライン曲線の制御点やフィット点を操作するサンプルです。

準備するもの:
AutoCAD LT上で図形(「スプライン」)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'スプライン曲線の制御点をすべて取得します。

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("スプライン" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk  Then
       es = obj.cad ("スプライン" , objId ,"制御点数取得" , Null , getData)
       If es Then
           num = getData - 1
           For i=0 To num
               getData = Empty  '空の変数に設定
               es = obj.cad ("スプライン" , objId ,"制御点順番指定取得" , i , getData)
               If es Then
                   '(実行結果をメッセージボックスに表示)
                   MsgBox "X: " & getData ( 0 ) & " Y: " & getData( 1 ) & " Z: " & getData ( 2 ), vbOKOnly , "制御点" &)
               End If
           Next
       End If
   Else
       MsgBox "図形は「スプライン」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub


'スプライン曲線のフィット点をすべて取得します。

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("スプライン" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       es = obj.cad ("スプライン" , objId ,"フィット点数取得" , Null , getData)
       If es Then
           num = getData - 1
           For i=0 To num
               getData = Empty  '空の変数に設定
               es = obj.cad ("スプライン" , objId ,"フィット点順番指定取得" , i , getData)
               If es Then
                   '(実行結果をメッセージボックスに表示)
                   MsgBox "X: " & getData ( 0 ) & " Y: " & getData( 1 ) & " Z: " & getData ( 2 ), vbOKOnly , "制御点" &)
               End If
           Next
       End If
   Else
       MsgBox "図形は「スプライン」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 リージョンの作成とブール演算
  リージョンを作成し、作成したリージョンをブール演算するサンプルです。

準備するもの:
準備するものはありません。サンプルプログラムはすべて自動的に動作します。

サンプルプログラム:
'リージョンを作成し、作成したリージョンをブール演算します

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim otherId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData ( 0 To 1 ) As Variant '(命令の実行に必要な「設定データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   Dim plineId As Variant   '(ポリライン用「オブジェクトID」を格納する変数宣言)
   Dim circleId As Variant   '(円用「オブジェクトID」を格納する変数宣言)
   Dim data1 ( 0 To 2 ) As Variant '(ポリライン作成用頂点データ)
   Dim data2 ( 0 To 1 ) As Variant '(円作成用データ)
   Dim pt1 ( 0 To 2 ) As Double '(座標値データ)
   Dim pt2 ( 0 To 2 ) As Double '(座標値データ)
   Dim pt3 ( 0 To 2 ) As Double '(座標値データ)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt1 ( 0 ) = 3.0: pt1 ( 1 ) = 3.0: pt1 ( 2 ) = 0.0
   pt2 ( 0 ) = 6.0: pt2 ( 1 ) = 5.0: pt2 ( 2 ) = 0.0
   pt3 ( 0 ) = 6.0: pt3 ( 1 ) = 1.0: pt3 ( 2 ) = 0.0
   'ポリライン作成用頂点
   data1 ( 0 ) = pt1: data1 ( 1 ) = pt2: data1 ( 2 ) = pt3
   '円作成用中心、半径
   data2 ( 0 ) = pt1: data2 ( 1 ) = 2.0
   'リージョン作成
   es = obj.makeEntity ( "ポリライン" , data1 , plineId )
   es = obj.cad ( "ポリライン", plineId , "閉じる", 1 , Null )
   es = obj.makeEntity ( "円" , data2 , circleId )
   es = obj.makeEntity ( "リージョン" , plineId , objId ) '基本となるリージョンを作成
   es = obj.makeEntity ( "リージョン" , circleId , otherId ) '対象となるリージョンを作成
   If es Then
       es = obj.cad ("ポリライン" , plineId ,"削除" , Null , Null) 'もとの図形が不要な場合は削除
       es = obj.cad ("円" , circleId ,"削除" , Null , Null) 'もとの図形が不要な場合は削除
       setData ( 0 ) = 0  '(UNION(和))
       setData ( 1 ) = otherId
       es = obj.cad ("リージョン" , objId ,"ブール演算" , setData , Null)
       '実行が成功すると図形が指定の状態に変化します
       es = obj.cad ("リージョン" , otherId ,"削除" , Null , Null) 'もとの図形が不要な場合は削除
   Else
       MsgBox "図形は「リージョン」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 寸法図形の作成
  寸法図形を作成するサンプルです。

準備するもの:
準備するものはありません。サンプルプログラムはすべて自動的に動作します。

サンプルプログラム:
'現在の作業空間に新しい図形「回転寸法」オブジェクトを追加
Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 3 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   setData ( 0 ) =3.14159265358979323846 / 6.0 '(回転角度=30度)
   pt ( 0 ) = 1.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 1 ) = pt  '(補助線1の通過点)
   pt ( 0 ) = 5.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 2 ) = pt  '(補助線2の通過点)
   pt ( 0 ) = 4.0: pt ( 1 ) = 4.0: pt ( 2 ) = 0.0 
   setData ( 3 ) = pt  '(円弧通過点)
   es = obj.makeEnt ( "回転寸法" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub


'現在の作業空間に新しい図形「平行寸法」オブジェクトを追加
Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim setData ( 0 To 2 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim pt ( 0 to 2 ) As Double '(座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   pt ( 0 ) = 1.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 0 ) = pt  '(補助線1の通過点)
   pt ( 0 ) = 5.0: pt ( 1 ) = 1.0: pt ( 2 ) = 0.0 
   setData ( 1 ) = pt  '(補助線2の通過点)
   pt ( 0 ) = 4.0: pt ( 1 ) = 4.0: pt ( 2 ) = 0.0 
   setData ( 2 ) = pt  '(寸法線通過点)
   es = obj.makeEnt ( "平行寸法" , setData , objId )
   If es Then
       MsgBox "オブジェクトID:" & objId , vbOKOnly , "新しい図形オブジェクト作成成功"
   End If
End Sub




 図形のオフセット
  図形をオフセットするサンプルです。

準備するもの:
AutoCAD LT上で図形(「ポリライン」「円弧」「円」「楕円」「引出線」「線分」「放射線」「スプライン」「構築線」のいずれか)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:
'図形をオフセットするサンプルです。
'対象となる図形は、「線」で構成されている図形です。
'(「ポリライン」「円弧」「円」「楕円」「引出線」「線分」「放射線」「スプライン」「構築線」)

Sub Sample()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad("線形図形共通" , objId ,"オフセット図形作成" , 1.0 , getData)
   '実行が成功すると新しい図形が作成されます
   If es Then
       For  i = LBound ( getData ) To UBound ( getData )
           MsgBox "オブジェクトID:" & getData ( i ) , vbOKOnly , "オブジェクトIDの内容 " & i+1
       Next
   End If
End Sub




 図形の分割
  図形を指定の条件で分割するサンプルです。

準備するもの:
AutoCAD LT上で図形(「ポリライン」「円弧」「円」「楕円」「引出線」「線分」「放射線」「スプライン」「構築線」のいずれか)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

参考:「パラメータ」とは?
線分やポリライン、スプラインなどの線形図形は始点からの距離が「パラメータ」、
円や円弧、楕円などは0度の方向からの角度(ラジアン)が「パラメータ」になります。

サンプルプログラム:
'パラメータによる分割

Sub Sample1()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   Dim setData ( 0 to 2 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   '分割パラメータ設定
   setData ( 0 ) = 1.0  '(パラメータ)
   setData ( 1 ) = 1.0  '(パラメータ)
   setData ( 2 ) = 1.0  '(パラメータ)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad ("線形図形共通" , objId ,"分割図形作成" , setData , getData)
   '実行が成功すると新しい図形が作成されます
   If es Then
       For i = LBound ( getData ) To UBound ( getData )
           MsgBox "オブジェクトID:" & getData ( i ) , vbOKOnly , "オブジェクトIDの内容 " & i+1
       Next
   End If
End Sub


図形上の点による分割
Sub Sample2()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   Dim setData ( 0 to 2 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim length As Variant     '(分割長さ)
   Dim pt1 As Variant     '(分割点1)
   Dim pt2 As Variant     '(分割点2)
   Dim pt3 As Variant     '(分割点3)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad ("線形図形共通" , objId ,"終点取得" , Null , endPoint) '終点
   es = obj.cad ("線形図形共通" , objId ,"点から距離取得" , endPoint ,length ) '全距離(長さ)
   length = length / 4.0
   es = obj.cad ("線形図形共通" , objId ,"距離から点取得")length * 1.0 , pt1) '分割点1
   es = obj.cad ("線形図形共通" , objId ,"距離から点取得")length * 2.0 , pt2) '分割点2
   es = obj.cad ("線形図形共通" , objId ,"距離から点取得")length * 3.0 , pt3) '分割点3
   '分割用図形上の点
   setData ( 0 ) = pt1 '(図形上の点)
   setData ( 1 ) = pt2 '(図形上の点)
   setData ( 2 ) = pt3 '(図形上の点)
 
   es = obj.cad ("線形図形共通" , objId ,"分割図形作成" , setData , getData)
 '実行が成功すると新しい図形が作成されます
   If es Then
       For i = LBound ( getData ) To UBound ( getData )
           MsgBox "オブジェクトID:" & getData ( i ) , vbOKOnly , "オブジェクトIDの内容 " & i+1
       Next
   End If
End Sub




 図形の空間投影
  図形を指定の平面に投影(平面に対して垂直に投影)するサンプルです。

準備するもの:
AutoCAD LT上で図形(「ポリライン」「円弧」「円」「楕円」「引出線」「線分」「放射線」「スプライン」「構築線」のいずれか)を作図します。サンプルプログラムを実行する直前に描いた図形が、サンプルプログラムの対象となるように設計されています。

サンプルプログラム:

Sub Sample()
   Dim es As Boolean    '(この命令を実行した動作状況を格納する「エラー状況」)
   Dim objId As Variant   '(オブジェクトを特定するための「オブジェクトID」を格納)
   Dim getData As Variant '(この命令を実行した動作状況を格納する「取得データ」)
   Dim setData ( 0 to 2 ) As Variant '(命令の実行に必要な「設定データ」宣言)
   Dim pt ( 0 to 2 ) As Double '(原点座標値)
   Dim uVec ( 0 to 2 ) As Double '(u方向ベクトル)
   Dim vVec ( 0 to 2 ) As Double '(v方向ベクトル)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   '平面定義用データ設定(X軸を中心に45度回転した平面を定義)
   pt ( 0 ) = 0.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0  'pt (0)= X: pt (1)=Y: pt (2)=Z
   uVec ( 0 ) = 1.0: uVec ( 1 ) = 0.0: uVec ( 2 ) = 0.0  'uVec (0)= X: uVec (1)=Y: uVec (2)=Z
   vVec ( 0 ) = 0.0: vVec ( 1 ) = 1.0: vVec ( 2 ) = 1.0  'vVec (0)= X: vVec (1)=Y: vVec (2)=Z
  '準備したデータなどを「setData」の各成分に代入します。
   setData ( 0 ) = pt   '(平面の原点)
   setData ( 1 ) = uVec    '(u方向ベクトル)
   setData ( 2 ) = vVec    '(v方向ベクトル)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   es = obj.cad("線形図形共通" , objId ,"指定平面への垂直投影" , setData , getData)
   If es Then
       MsgBox "新しい図形: " & getData , vbOKOnly , "オブジェクトID表示"
   End If
End Sub




 ラスタイメージ作成
  ラスタイメージを作成するサンプルです。

準備するもの:
ラスターイメージを表示するための、イメージファイル「BMP」ファイルや「JPG」ファイルなどが必要です。プログラム内では、このファイル名とファイルパスを指定します。このイメージファイルの指定をすれば、サンプルプログラムはすべて自動的に動作します。(イメージファイルを指定する部分は、「赤」い文字で示してあります。)

参考:コマンド実行について
このサンプルプログラムの中では、「イメージ定義」領域を作成するためにコマンドを「IMAGE」コマンドを実行しています。コマンドの実行には、VisualBasicの標準関数「Sendkeys」を使用していますが、これはこのサンプルプログラムを簡単に動作させるために使用しております。本来であれば、LT VB-COMに用意されている「SendMsg」サンプルユーティリティを使用することをお勧めします。「SendMsg」サンプルユーティリティを使用するには、「LT VB-COM.bas」ファイルのインポート作業が必要なため、ここでは手続きの不要な「Sendkeys」関数を使用しております。

サンプルプログラム:
'新規ラスターイメージ作成

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim imageDefId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData As String '(命令の実行に必要な「設定データ」用変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim pt0 ( 0 to 2 ) As Double '(3次元座標値)
   Dim uVec ( 0 to 2 ) As Double '(ベクトル)
   Dim vVec ( 0 to 2 ) As Double '(ベクトル)
   Dim orient ( 0 To 2 ) As Variant '(命令の実行に必要な方位用変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   'ここでは、実際に使用したいイメージファイル名とパスを指定
   setData = "C:\Program Files\LT_VBCOM\Sample.jpg" '←これは記入例です
   es = obj.table ( "ディクショナリ" , "所有?" , "ACAD_IMAGE_DICT" , getData )
   If getData = 0 Then
       'イメージ機能の起動(新規図面やイメージを使用していない図面では必要)
       AppActivate "AutoCAD LT"
       Sendkeys "-IMAGE " & Chr$(13) , True
       Sendkeys "REGEN" & Chr$(13) , True
       getData = Empty
       es = obj.table ( "ディクショナリ" , "新規オブジェクト追加" , "ACAD_IMAGE_DICT" , getData )
   End If
   es = obj.make ( "イメージ定義" , "Sample" , Null , Null , imageDefId )
   If es Then
       es = obj.cad ( "イメージ定義" , imageDefId , "ソースファイル名設定" , setData , Null )
       es = obj.cad ( "イメージ定義" , imageDefId , "ロード" , Null , Null )
       es = obj.makeEntity ( "ラスターイメージ" , imageDefId , objId )
       If es Then
           pt0 ( 0 ) = 1.0: pt0 ( 1 ) = 1.0: pt0 ( 2 ) = 0.0 
           uVec ( 0 ) = 1.0: uVec ( 1 ) = 0.0: uVec ( 2 ) = 0.0 
           vVec ( 0 ) = 0.0: vVec ( 1 ) = 1.0: vVec ( 2 ) = 0.0 
           orient ( 0 ) = pt0
           orient ( 1 ) = uVec
           orient ( 2 ) = vVec
           es = obj.cad ( "ラスターイメージ" , objId , "方位設定" , orient , Null )
       End If
   End If
End Sub




 ラスタイメージ情報取得
  ラスタイメージの頂点やサイズなどの情報を取得するサンプルです。

準備するもの:
ラスターイメージを表示するための、イメージファイル「BMP」ファイルや「JPG」ファイルなどが必要です。プログラム内では、このファイル名とファイルパスを指定します。(イメージファイルを指定する部分は、「赤」い文字で示してあります。)ラスターイメージ情報取得のサンプルプログラムでは、実行する直前に描いた図形がサンプルプログラムの対象となるように設計されています。先にラスターイメージを作成するサンプルを実行し、直後に情報取得のサンプルを使用します。

参考:コマンド実行について
このサンプルプログラムの中では、「イメージ定義」領域を作成するためにコマンドを「IMAGE」コマンドを実行しています。コマンドの実行には、VisualBasicの標準関数「Sendkeys」を使用していますが、これはこのサンプルプログラムを簡単に動作させるために使用しております。本来であれば、LT VB-COMに用意されている「SendMsg」サンプルユーティリティを使用することをお勧めします。「SendMsg」サンプルユーティリティを使用するには、「LT VB-COM.bas」ファイルのインポート作業が必要なため、ここでは手続きの不要な「Sendkeys」関数を使用しております。

サンプルプログラム:
'新規ラスターイメージ作成

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim imageDefId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData As String '(命令の実行に必要な「設定データ」用変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim pt0 ( 0 to 2 ) As Double '(3次元座標値)
   Dim uVec ( 0 to 2 ) As Double '(ベクトル)
   Dim vVec ( 0 to 2 ) As Double '(ベクトル)
   Dim orient ( 0 To 2 ) As Variant '(命令の実行に必要な方位用変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   'ここでは、実際に使用したいイメージファイル名とパスを指定
   setData = "C:\Program Files\LT_VBCOM\Sample.jpg" '←これは記入例です
   es = obj.table ( "ディクショナリ" , "所有?" , "ACAD_IMAGE_DICT" , getData )
   If getData = 0 Then
       'イメージ機能の起動(新規図面やイメージを使用していない図面では必要)
       AppActivate "AutoCAD LT"
       Sendkeys "-IMAGE " & Chr$(13) , True
       Sendkeys "REGEN" & Chr$(13) , True
       getData = Empty
       es = obj.table ( "ディクショナリ" , "新規オブジェクト追加" , "ACAD_IMAGE_DICT" , getData )
   End If
   es = obj.make ( "イメージ定義" , "Sample" , Null , Null , imageDefId )
   If es Then
       es = obj.cad ( "イメージ定義" , imageDefId , "ソースファイル名設定" , setData , Null )
       es = obj.cad ( "イメージ定義" , imageDefId , "ロード" , Null , Null )
       es = obj.makeEntity ( "ラスターイメージ" , imageDefId , objId )
       If es Then
           pt0 ( 0 ) = 1.0: pt0 ( 1 ) = 1.0: pt0 ( 2 ) = 0.0 
           uVec ( 0 ) = 1.0: uVec ( 1 ) = 0.0: uVec ( 2 ) = 0.0 
           vVec ( 0 ) = 0.0: vVec ( 1 ) = 1.0: vVec ( 2 ) = 0.0 
           orient ( 0 ) = pt0
           orient ( 1 ) = uVec
           orient ( 2 ) = vVec
           es = obj.cad ( "ラスターイメージ" , objId , "方位設定" , orient , Null )
       End If
   End If
End Sub


'ラスターイメージを構成する頂点を取得します。
Sub Sample2()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object      '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("ラスターイメージ" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       es = obj.cad ("ラスターイメージ" , objId ,"全頂点取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           For i = LBound ( getData ) To UBound ( getData )
               pt = getData ( i )
               MsgBox "X: " & pt ( 0 ) &" Y: " & pt ( 1 ) &" Z: " & pt ( 2 ) , vbOKOnly , "頂点表示"
           Next
       End If
   Else
       MsgBox "図形は「ラスターイメージ」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub


'ラスターイメージのピクセルサイズを取得します。
Sub Sample3()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("ラスターイメージ" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       es = obj.cad ("ラスターイメージ" , objId ,"イメージサイズ取得" , Null , getData)
       If es Then
           '(実行結果をメッセージボックスに表示)
           MsgBox "X成分: " & getData ( 0 ) & " Y成分: " & getData ( 1 ) , vbOKOnly , "サイズベクトル表示"
       End If
   Else
       MsgBox "図形は「ラスターイメージ」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 ラスタイメージクリップ表示
  ラスタイメージをクリップ表示するサンプルです。

準備するもの:
ラスターイメージを表示するための、イメージファイル「BMP」ファイルや「JPG」ファイルなどが必要です。プログラム内では、このファイル名とファイルパスを指定します。(イメージファイルを指定する部分は、「赤」い文字で示してあります。)ラスターイメージをクリップするサンプルプログラムでは、実行する直前に描いた図形がサンプルプログラムの対象となるように設計されています。先にラスターイメージを作成するサンプルを実行し、直後にクリップをするサンプルを使用します。

参考:コマンド実行について
このサンプルプログラムの中では、「イメージ定義」領域を作成するためにコマンドを「IMAGE」コマンドを実行しています。コマンドの実行には、VisualBasicの標準関数「Sendkeys」を使用していますが、これはこのサンプルプログラムを簡単に動作させるために使用しております。本来であれば、LT VB-COMに用意されている「SendMsg」サンプルユーティリティを使用することをお勧めします。「SendMsg」サンプルユーティリティを使用するには、「LT VB-COM.bas」ファイルのインポート作業が必要なため、ここでは手続きの不要な「Sendkeys」関数を使用しております。

サンプルプログラム:
'新規ラスターイメージ作成

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim imageDefId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData As String '(命令の実行に必要な「設定データ」用変数宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim pt0 ( 0 to 2 ) As Double '(3次元座標値)
   Dim uVec ( 0 to 2 ) As Double '(ベクトル)
   Dim vVec ( 0 to 2 ) As Double '(ベクトル)
   Dim orient ( 0 To 2 ) As Variant '(命令の実行に必要な方位用変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   'ここでは、実際に使用したいイメージファイル名とパスを指定
   setData = "C:\Program Files\LT_VBCOM\Sample.jpg" '←これは記入例です
   es = obj.table ( "ディクショナリ" , "所有?" , "ACAD_IMAGE_DICT" , getData )
   If getData = 0 Then
       'イメージ機能の起動(新規図面やイメージを使用していない図面では必要)
       AppActivate "AutoCAD LT"
       Sendkeys "-IMAGE " & Chr$(13) , True
       Sendkeys "REGEN" & Chr$(13) , True
       getData = Empty
       es = obj.table ( "ディクショナリ" , "新規オブジェクト追加" , "ACAD_IMAGE_DICT" , getData )
   End If
   es = obj.make ( "イメージ定義" , "Sample" , Null , Null , imageDefId )
   If es Then
       es = obj.cad ( "イメージ定義" , imageDefId , "ソースファイル名設定" , setData , Null )
       es = obj.cad ( "イメージ定義" , imageDefId , "ロード" , Null , Null )
       es = obj.makeEntity ( "ラスターイメージ" , imageDefId , objId )
       If es Then
           pt0 ( 0 ) = 1.0: pt0 ( 1 ) = 1.0: pt0 ( 2 ) = 0.0 
           uVec ( 0 ) = 1.0: uVec ( 1 ) = 0.0: uVec ( 2 ) = 0.0 
           vVec ( 0 ) = 0.0: vVec ( 1 ) = 1.0: vVec ( 2 ) = 0.0 
           orient ( 0 ) = pt0
           orient ( 1 ) = uVec
           orient ( 2 ) = vVec
           es = obj.cad ( "ラスターイメージ" , objId , "方位設定" , orient , Null )
       End If
   End If
End Sub


矩形のラスターイメージを3角形にクリップします
Sub Sample2()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim newId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData ( 0 to 4 ) As Variant    '(命令の実行に必要な「設定データ」宣言)
   Dim getData As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim chk As Boolean    '(チェックの結果を格納する変数宣言)
   Dim pt1 ( 0 To 2 ) As Double '(座標値用変数宣言)
   Dim pt2 ( 0 To 2 ) As Double '(座標値用変数宣言)
   Dim pt3 ( 0 To 2 ) As Double '(座標値用変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.util ("最後の図形" ,Null , objId) '(最後に作図した図形のオブジェクトIDを取得)
   chk = obj.typeCheck ("ラスターイメージ" ,objId) '(命令が使用できるかクラス名をチェック)
   If chk Then
       'ラスターイメージ座標系上での境界指定
       es = obj.cad ("ラスターイメージ" , objId ,"イメージサイズ取得" , Null , getData)
       pt1 ( 0 ) = getData ( 0 ) : pt1 ( 1 ) = getData ( 1 ) : pt1 ( 2 ) = 0.0
       pt2 ( 0 ) = getData ( 0 ) : pt2 ( 1 ) = 0.0 : pt2 ( 2 ) = 0.0
       pt3 ( 0 ) = 0.0 : pt3 ( 1 ) = getData ( 1 ) : pt3 ( 2 ) = 0.0
       
       setData ( 0 ) = 2    '(タイプ=ポリゴン)
       setData ( 1 ) = 3    '(頂点の数=4)
       setData ( 2 ) = pt1    '(頂点1)
       setData ( 3 ) = pt2    '(頂点2)
       setData ( 4 ) = pt3    '(頂点3 閉じない場合は、自動的に閉じられます)
       es = obj.cad ("ラスターイメージ" , objId ,"クリップ境界設定" , setData , Null)
       '実行が成功すると図形が指定の状態に変化します
   Else
       MsgBox "図形は「ラスターイメージ」ではありません", vbOKOnly , "エラー表示"
   End If
End Sub




 マルチライン作成
  マルチラインを作成するサンプルです。

準備するもの:
準備するものはありません。サンプルプログラムはすべて自動的に動作します。

サンプルプログラム:
'マルチラインの作成

Sub Sample()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim vec ( 0 to 2 ) As Double '(ベクトル)
   Dim pt1 ( 0 to 2 ) As Double '(3次元座標値)
   Dim pt2 ( 0 to 2 ) As Double '(3次元座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.makeEntity ( "マルチライン" , "Standard" , objId )
   If es Then
       vec ( 0 ) = 0.0: vec ( 1 ) = 0.0: vec ( 2 ) = 1.0 
       pt1 ( 0 ) = 1.0: pt1 ( 1 ) = 1.0: pt1 ( 2 ) = 0.0 
       pt2 ( 0 ) = 5.0: pt2 ( 1 ) = 5.0: pt2 ( 2 ) = 0.0 
       es = obj.cad ( "マルチライン" , objId , "尺度設定" , 1.0 , Null )
       es = obj.cad ( "マルチライン" , objId , "法線設定" , vec , Null )
       es = obj.cad ( "マルチライン" , objId , "セグメント追加" , pt1 , Null )
       es = obj.cad ( "マルチライン" , objId , "セグメント追加" , pt2 , Null )
   End If
End Sub




 マルチラインスタイル定義
  新しいマルチラインスタイルを定義するサンプルです。

準備するもの:
準備するものはありません。サンプルプログラムはすべて自動的に動作します。

サンプルプログラム:
'マルチラインスタイルの作成
'「"STANDARD"」を基準に、内側中央に2本線を引く

Sub Sample1()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim setData1 ( 0 To 2 ) As Variant '(命令の実行に必要な「設定データ」宣言)
   Dim setData2 ( 0 To 2 ) As Variant '(命令の実行に必要な「設定データ」宣言)
   Dim getData1 As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim getData2 As Variant '(命令の実行結果を格納する「取得データ」用変数宣言)
   Dim mlineName As Variant    '(名前を格納する変数宣言)
   Dim num As Variant    '(要素数を格納する変数宣言)
   Dim elemInfo As Variant    '(要素の内容を格納する変数宣言)
   Dim offset As Double    '(要素のオフセット値を格納する変数宣言)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   mlineName = "Sample" 'マルチラインスタイル名設定
   '「マルチラインスタイル」の新規作成
   es = obj.makeRec ( "マルチラインスタイル" , mlineName , objId )
   If es Then '(新しいマルチラインスタイルが正常に作成できた場合)
       num = Empty
       setData1 ( 0 ) = 0.0: setData2 ( 0 ) = 0.0
       es = obj.cad ( "マルチラインスタイル" , objId , "要素数取得" , Null , num )
       For i = 0 To num - 1  '(要素の数だけ次の実行を繰り返す)
           elemInfo = Empty
           es = obj.cad ( "マルチラインスタイル" , objId , "要素順番指定取得" , i , elemInfo )
           offset = elemInfo ( 0 )
           If offset > 0.0 Then
               If setData1 ( 0 ) = 0.0 Then '初期設定
                   setData1 ( 0 ) = offset
                   setData1 ( 1 ) = elemInfo ( 1 )
                   setData1 ( 2 ) = elemInfo ( 2 )
               ElseIf offset < setData1 ( 0 ) Then '最小値取得
                   setData1 ( 0 ) = offset
                   setData1 ( 1 ) = elemInfo ( 1 )
                   setData1 ( 2 ) = elemInfo ( 2 )
               End If
           ElseIf offset < 0.0 Then 
               If setData2 ( 0 ) = 0.0 Then '初期設定
                   setData2 ( 0 ) = offset
                   setData2 ( 1 ) = elemInfo ( 1 )
                   setData2 ( 2 ) = elemInfo ( 2 )
               ElseIf offset > setData2 ( 0 ) Then '最小値取得
                   setData2 ( 0 ) = offset
                   setData2 ( 1 ) = elemInfo ( 1 )
                   setData2 ( 2 ) = elemInfo ( 2 )
               End If
           End If
       Next
       If setData1 ( 0 ) <> 0.0 Then
           setData1 ( 0 ) = setData1 ( 0 ) / 2.0 '最小値の半分のオフセット
           setData1 ( 1 ) = setData1 ( 1 ) + 1
           If setData1 ( 1 ) > 256 Then setData1 ( 1 ) = 1
           es = obj.cad ( "マルチラインスタイル" , objId , "要素追加" , setData1 , getData1 )
       End If
       If setData2 ( 0 ) <> 0.0 Then
           setData2 ( 0 ) = setData2 ( 0 ) / 2.0 '最小値の半分のオフセット
           setData2 ( 1 ) = setData2 ( 1 ) + 1
           If setData2 ( 1 ) > 256 Then setData2 ( 1 ) = 1
           es = obj.cad ( "マルチラインスタイル" , objId , "要素追加" , setData2 , getData2 )
       End If
   End If
End Sub


'マルチラインの作成
Sub Sample2()
   Dim es As Boolean    '(命令の「エラー状況」を格納する変数宣言)
   Dim objId As Variant   '(「オブジェクトID」を格納する変数宣言)
   Dim vec ( 0 to 2 ) As Double '(ベクトル)
   Dim pt1 ( 0 to 2 ) As Double '(3次元座標値)
   Dim pt2 ( 0 to 2 ) As Double '(3次元座標値)
   '外部プログラムとの接続手続き
   Dim obj As Object     '(外部プログラムとの接続手続き保存用)
   Set obj = GetObject ( , "LT_VBCOM.Application") '(外部プログラムとの接続手続き)
   es = obj.makeEntity ( "マルチライン" , "Sample" , objId )
   If es Then
       vec ( 0 ) = 0.0: vec ( 1 ) = 0.0: vec ( 2 ) = 1.0 
       pt1 ( 0 ) = 1.0: pt1 ( 1 ) = 1.0: pt1 ( 2 ) = 0.0 
       pt2 ( 0 ) = 5.0: pt2 ( 1 ) = 5.0: pt2 ( 2 ) = 0.0 
       es = obj.cad ( "マルチライン" , objId , "尺度設定" , 1.0 , Null )
       es = obj.cad ( "マルチライン" , objId , "法線設定" , vec , Null )
       es = obj.cad ( "マルチライン" , objId , "セグメント追加" , pt1 , Null )
       es = obj.cad ( "マルチライン" , objId , "セグメント追加" , pt2 , Null )
   End If
End Sub