いきなりつまづいてしまった寸法スタイルの設定ですが、

とりあえず、システム変数をExcelワークシート上に出力してみました。



↓出力用ソース(長いです。寸法系のシステム変数80項目あります。)

━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─

Private Sub 寸法スタイル設定シート出力()
Dim test As Variant
Dim tempstr As String
Dim AppObj As AcadApplication 'アプリケーションオブジェクト宣言
Dim AcadDocs As AcadDocument

'実行中のAutoCADアプリケーションオブジェクトの取得
Set AppObj = GetObject(, "AutoCAD.Application.18")

Set AcadDocs = AppObj.ActiveDocument

With ThisWorkbook.Worksheets(1)
.Range("a1").Value = AcadDocs.GetVariable("DIMASO") '寸法オブジェクトを作成
.Range("a2").Value = AcadDocs.GetVariable("DIMSTYLE") '現在の寸法スタイル (読み込み専用)
.Range("a3").Value = AcadDocs.GetVariable("DIMADEC") '角度の精度
.Range("a4").Value = AcadDocs.GetVariable("DIMALT") '変換単位の記入
.Range("a5").Value = AcadDocs.GetVariable("DIMALTD") '変換単位の精度
.Range("a6").Value = AcadDocs.GetVariable("DIMALTF") ' 変換単位の尺度
'.Range("a7").Value = AcadDocs.GetVariable("DIMALTMZF") ' メートル単位寸法用の変換サブゼロ尺度係数
'.Range("a8").Value = AcadDocs.GetVariable("DIMALTMZS") ' メートル単位寸法用の変換サブゼロ接尾表記
.Range("a9").Value = AcadDocs.GetVariable("DIMALTRND") ' 変換単位の丸めの値
.Range("a10").Value = AcadDocs.GetVariable("DIMALTTD") ' 変換単位寸法許容差の精度
.Range("a11").Value = AcadDocs.GetVariable("DIMALTTZ") ' 変換単位寸法許容差の 0 省略表記
.Range("a12").Value = AcadDocs.GetVariable("DIMALTU") ' 変換単位
.Range("a13").Value = AcadDocs.GetVariable("DIMALTZ") ' 変換単位の 0 省略表記
.Range("a14").Value = AcadDocs.GetVariable("DIMAPOST") ' 変換単位寸法値の接頭表記と接尾表記
.Range("a15").Value = AcadDocs.GetVariable("DIMARCSYM") ' 弧長シンボル
.Range("a16").Value = AcadDocs.GetVariable("DIMASZ") ' 矢印サイズ
.Range("a17").Value = AcadDocs.GetVariable("DIMATFIT") ' 矢印と寸法値のフィット
.Range("a18").Value = AcadDocs.GetVariable("DIMAUNIT") ' 角度単位の形式
.Range("a19").Value = AcadDocs.GetVariable("DIMAZIN") ' 角度の 0 省略表記
.Range("a20").Value = AcadDocs.GetVariable("DIMBLK") ' 矢印に使用するブロック名
.Range("a21").Value = AcadDocs.GetVariable("DIMBLK1") ' 1 番目の矢印に使用するブロック名
.Range("a22").Value = AcadDocs.GetVariable("DIMBLK2") '2 番目の矢印に使用するブロック名
.Range("a23").Value = AcadDocs.GetVariable("DIMCEN") '中心マークのサイズ
.Range("a24").Value = AcadDocs.GetVariable("DIMCLRD") '寸法線と引出線の色
.Range("a25").Value = AcadDocs.GetVariable("DIMCLRE") '寸法補助線の色
.Range("a26").Value = AcadDocs.GetVariable("DIMCLRT") '寸法値の色
.Range("a27").Value = AcadDocs.GetVariable("DIMDEC") '精度
.Range("a28").Value = AcadDocs.GetVariable("DIMDLE") '寸法線の延長
.Range("a29").Value = AcadDocs.GetVariable("DIMDLI") '寸法線の間隔
.Range("a30").Value = AcadDocs.GetVariable("DIMDSEP") '桁区切り
.Range("a31").Value = AcadDocs.GetVariable("DIMEXE") '寸法線より飛びだす寸法補助線の長さ
.Range("a32").Value = AcadDocs.GetVariable("DIMEXO") '寸法補助線の起点からのオフセット間隔
.Range("a33").Value = AcadDocs.GetVariable("DIMFRAC") '小数部分の形式
.Range("a34").Value = AcadDocs.GetVariable("DIMFXL") '固定寸法補助線
.Range("a35").Value = AcadDocs.GetVariable("DIMFXLON") '固定寸法補助線を有効
.Range("a36").Value = AcadDocs.GetVariable("DIMGAP") '寸法線から寸法値までのギャップ
.Range("a37").Value = AcadDocs.GetVariable("DIMJOGANG") '半径寸法折り曲げ角度
.Range("a38").Value = AcadDocs.GetVariable("DIMJUST") '寸法線上の寸法値の位置合わせ
.Range("a39").Value = AcadDocs.GetVariable("DIMLDRBLK") '引出線のブロック名
.Range("a40").Value = AcadDocs.GetVariable("DIMLFAC") '長さ寸法の尺度
.Range("a41").Value = AcadDocs.GetVariable("DIMLIM") '許容限界寸法の記入
.Range("a42").Value = AcadDocs.GetVariable("DIMLTEX1") '寸法補助線 1 の線種
.Range("a43").Value = AcadDocs.GetVariable("DIMLTEX2") '寸法補助線 2 の線種
.Range("a44").Value = AcadDocs.GetVariable("DIMLTYPE") '寸法線の線種
.Range("a45").Value = AcadDocs.GetVariable("DIMLUNIT") '長さの単位形式
.Range("a46").Value = AcadDocs.GetVariable("DIMLWD") '寸法線と引出線の線の太さ
.Range("a47").Value = AcadDocs.GetVariable("DIMLWE") '寸法補助線の線の太さ
'.Range("a48").Value = AcadDocs.GetVariable("DIMMZF") 'メートル単位寸法用のサブゼロ尺度係数
'.Range("a49").Value = AcadDocs.GetVariable("DIMMZS") 'メートル単位寸法用のサブゼロ接尾表記
.Range("a50").Value = AcadDocs.GetVariable("DIMPOST") '寸法値の接頭表記と接尾表記
.Range("a51").Value = AcadDocs.GetVariable("DIMRND") '丸めの値
.Range("a52").Value = AcadDocs.GetVariable("DIMSAH") '両端に異なる矢印ブロックを使用
.Range("a53").Value = AcadDocs.GetVariable("DIMSCALE") '寸法記入全体の尺度
.Range("a54").Value = AcadDocs.GetVariable("DIMSD1") '1 本目の寸法線を省略
.Range("a55").Value = AcadDocs.GetVariable("DIMSD2") '2 本目の寸法線を省略
.Range("a56").Value = AcadDocs.GetVariable("DIMSE1") '1 本目の寸法補助線を省略
.Range("a57").Value = AcadDocs.GetVariable("DIMSE2") '2 本目の寸法補助線を省略
.Range("a58").Value = AcadDocs.GetVariable("DIMSOXD") '外側の寸法線を省略
.Range("a59").Value = AcadDocs.GetVariable("DIMTAD") '寸法線の上に寸法値を記入
.Range("a60").Value = AcadDocs.GetVariable("DIMTDEC") '寸法許容差の精度
.Range("a61").Value = AcadDocs.GetVariable("DIMTFAC") '寸法許容差の文字の高さの尺度
.Range("a62").Value = AcadDocs.GetVariable("DIMTFILL") '寸法値の背景色有効
.Range("a63").Value = AcadDocs.GetVariable("DIMTFILLCLR") '寸法値の背景色
.Range("a64").Value = AcadDocs.GetVariable("DIMTIH") '寸法補助線の内側の寸法値を水平記入
.Range("a65").Value = AcadDocs.GetVariable("DIMTIX") '寸法補助線の内側に寸法値を記入
.Range("a66").Value = AcadDocs.GetVariable("DIMTM") 'マイナス寸法許容差の値
.Range("a67").Value = AcadDocs.GetVariable("DIMTMOVE") '寸法値の移動
.Range("a68").Value = AcadDocs.GetVariable("DIMTOFL") '常に寸法補助線の内側に寸法線を記入
.Range("a69").Value = AcadDocs.GetVariable("DIMTOH") '寸法補助線の外側の寸法値を水平記入
.Range("a70").Value = AcadDocs.GetVariable("DIMTOL") '寸法許容差の記入
.Range("a71").Value = AcadDocs.GetVariable("DIMTOLJ") '寸法許容差の垂直方向の位置合わせ
.Range("a72").Value = AcadDocs.GetVariable("DIMTP") 'プラス寸法許容差の値
.Range("a73").Value = AcadDocs.GetVariable("DIMTSZ") 'ティック(斜線)のサイズ
.Range("a74").Value = AcadDocs.GetVariable("DIMTVP") '寸法値の垂直方向の位置
.Range("a75").Value = AcadDocs.GetVariable("DIMTXSTY") ' 文字スタイル
.Range("a76").Value = AcadDocs.GetVariable("DIMTXT") ' 寸法値の高さ
.Range("a77").Value = AcadDocs.GetVariable("DIMTXTDIRECTION") ' 寸法値の方向
.Range("a78").Value = AcadDocs.GetVariable("DIMTZIN") ' 寸法許容差の 0 省略表記
.Range("a79").Value = AcadDocs.GetVariable("DIMUPT") ' ユーザ指定寸法値
.Range("a80").Value = AcadDocs.GetVariable("DIMZIN") ' 0 省略表記
End With

Set AcadDocs = Nothing 'オブジェクトの解放
Set AppObj = Nothing 'オブジェクトの解放
End Sub

━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─

下記の4つは、エラーが発生して出力できませんでした。

どうも、AutoCADVBAが未対応のもよう。

'.Range("a7").Value = AcadDocs.GetVariable("DIMALTMZF") ' メートル単位寸法用の変換サブゼロ尺度係数
'.Range("a8").Value = AcadDocs.GetVariable("DIMALTMZS") ' メートル単位寸法用の変換サブゼロ接尾表記
'.Range("a48").Value = AcadDocs.GetVariable("DIMMZF") 'メートル単位寸法用のサブゼロ尺度係数
'.Range("a49").Value = AcadDocs.GetVariable("DIMMZS") 'メートル単位寸法用のサブゼロ接尾表記

━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─



AutoCADを起動し、新図面を作成後実行すると、システム変数の値が

ワークシート上に出力されます。


ただし、これら↓

━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─

DIMBLK 矢印に使用するブロック名
DIMBLK1 1 番目の矢印に使用するブロック名
DIMBLK2 2 番目の矢印に使用するブロック名
DIMLDRBLK 引出線のブロック名
DIMLTEX1 寸法補助線 1 の線種
DIMLTEX2 寸法補助線 2 の線種
DIMLTYPE 寸法線の線種

━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─

ブロック名、線種名を指定するシステム変数の値がブランクのままです。



次に、AutoCAD上で、寸法スタイル”テスト”を追加します。

矢印に使用するブロック名や、線種等を適当に変更します。

CAD・CAD・Autocad-寸法スタイル:テスト

で、再度実行してみると・・・。



お~、ブロック名、線種名が出力されてます。ニコニコ



どうも、システム変数が規定値の場合、ブランクとなるようです。

そして規定値外となると、出力されるようです。

う~ん、こういう仕様アリか・・・・。


ひらめき電球今回、分かったこと。

・寸法記入システム変数は、アクティブな寸法スタイルの設定値が入力されている。

・ブロック名、線種名を指定するシステム変数は、規定値の場合、ブランク。



読みにくくてゴメン。このままで良ければクリックしてね。

にほんブログ村 科学ブログ 技術・工学へ

ダメなら、ソースは画像にしまーす。

次は設定方法。の予定。