情報

トップページへ

更新 2018年2月1日 ポリラインの三次元図形

ポリラインの三次元図形   日本語の DXF オンライン ヘルプ   なにも表示されない   エラー メッセージ   ビューア   INSERT   ELLIPSE   MTEXT   ハンドル番号   検索






ポリラインの三次元図形   2018年2月1日

ポリラインの三次元図形であるポリメッシュについて説明します。
ポリラインの三次元図形



日本語の DXF オンライン ヘルプ   2017年11月1日

日本語の DXF のオンライン ヘルプは次のとおりです。
DXF のオンライン ヘルプ



なにも表示されない   2006年10月10日

DXF ファイルが正常に読み込めているにもかかわらず、なにも表示されない場合、状況によっては、図形を表示させることができます。 DWG TrueView を使用した場合を例にとり、どのように操作するかを説明します。
なにも表示されない



エラー メッセージ   2006年9月1日

エラー メッセージの一覧です。 AutoCAD で不完全なDXFファイルを読み込んだ場合、あらわれるメッセージです。
エラー メッセージ



ビューア   2009年6月1日

「DWG ファイルや DWF ファイルを正確に表示・印刷・パブリッシュすることができます。」とのことです。
DWG TrueView



ELLIPSE   2004年8月10日

楕円弧の角度   2004年8月10日

楕円弧の「41」および「42」の次にあらわれる角度は次のように計算します。
角度をもった直線と楕円の交点を計算します。
たとえば、80度の角度をもつ楕円弧の場合、80度の角度の直線と楕円の交点を数学の計算式を使い計算して得ます。このとき、X座標値、もしくはY座標値どちらかひとつでかまいません。たとえば、X座標値を得たとします。このX座標値は楕円上の点ですから X = a cos( theta ) を満足します。つまり cos ( theta ) = X / a となります。これより arccos を使い、角度 ( theta ) が求まります。この角度 ( theta ) が「41」および「42」の次にあらわれる角度です。80度をラジアン表記した値ではありません。

楕円弧の角度と、楕円の方程式内の角度 ( theta ) は同一ではありません。ただし、0度、90度、180度、270度では一致します。



楕円上の点   2004年8月10日

楕円の各点の座標系と基準、そして楕円上の点をワールド座標系であらわす方法は次のとおりです。

楕円の中心座標値(10, 20, 30)は、ワールド座標系です。
楕円の長軸の端点(11, 21, 31)は、楕円の中心座標を原点としたワールド座標系です。
ワールド座標系における楕円の長軸の端点のX座標値から、グループコード 10 の値を引き算した値がグループコード 11 の値となります。
同様に、ワールド座標系における楕円の長軸の端点のY座標値からグループコード 20 の値を引き算した値がグループコード 21 の値となり、ワールド座標系におけるZ座標値からグループコード 30 の値を引き算した値がグループコード 31 の値となります。

楕円の長軸の端点(11, 21, 31)は、オブジェクト座標系ではありません。

楕円弧の始点、終点の角度、つまり、グループコード 41 とグループコード 42 の基準は楕円弧の中心と楕円弧の長軸の端点を結ぶ線が基準となります。

以上が、座標系と基準についての説明です。

ここで、楕円の中心が原点、楕円の長軸が X軸とする座標系を考えます。
この座標系を使うと、楕円弧の平面をXY平面とする平面上で座標値を考えることになります。ですから、Z座標値は常に「0」です。

theta を楕円上の点の角度、とすると x, y は次のとおりです。

x=a*cos(theta)
y=b*sin(theta)

この x座標値、y座標値は、楕円の長軸が X軸、グループコード210, 220, 230が Z軸の座標系における x座標値、y座標値です。
この座標系の X軸を ellipseX(X), ellipseX(Y), ellipseX(Z) とします。
そして、 Y軸を ellipseY(X), ellipseY(Y), ellipseY(Z) とします。
ellipseX と ellipseY は、ワールド座標系であらわされる単位ベクトルです。
この場合、ワールド座標系における楕円上の点の X座標値、 Y座標値、 Z座標値は、次のようになります。
gc は GroupCode を意味し、gc11 は、グループコード 11 に続く値を意味します。

x * ellipseX(X), x * ellipseX(Y), x * ellipseX(Z)
y * ellipseY(X), y * ellipseY(Y), y * ellipseY(Z)


X軸、 ellipseX(X), ellipseX(Y), ellipseX(Z) は、次のとおりです。
ellipseX(X) = gc11 / len
ellipseX(Y) = gc21 / len
ellipseX(Z) = gc31 / len

len = sqrt(gc11^2 + gc21^2 + gc31^2)

Y軸、 ellipseY(X), ellipseY(Y), ellipseY(Z) は、次のとおりです。
ellipseY(X) = n(Y) * ellipseX(Z) - n(Z) * ellipseX(Y)
ellipseY(Y) = n(Z) * ellipseX(X) - n(X) * ellipseX(Z)
ellipseY(Z) = n(X) * ellipseX(Y) - n(Y) * ellipseX(X)

n(X) = gc210
n(Y) = gc220
n(Z) = gc230


theta を楕円上の点の角度とし、x=a*cos(theta), y=b*sin(theta) と考えた場合、ワールド座標系の X座標値、 Y座標値、 Z座標値を WCS_X, WCS_Y, WCS_Z とします。


WCS_X = gc10 + x * ellipseX(X) + y * ellipseY(X)
WCS_Y = gc20 + x * ellipseX(Y) + y * ellipseY(Y)
WCS_Z = gc30 + x * ellipseX(Z) + y * ellipseY(Z)

WCS_X = gc10 + x * ellipseX(X) + y * ellipseY(X)
= gc10 + a * cos(theta) * ellipseX(X) + b * sin(theta) * ellipseY(X)
= gc10 + len * cos(theta) * ellipseX(X) + len * gc40 * sin(theta) * ellipseY(X)
= gc10 + len * cos(theta) * gc11 / len + len * gc40 * sin(theta) * (n(Y) * ellipseX(Z) - n(Z) * ellipseX(Y))
= gc10 + cos(theta) * gc11 + len * gc40 * sin(theta) * (n(Y) * gc31 / len - n(Z) * gc21 / len)
= gc10 + cos(theta) * gc11 + gc40 * sin(theta) * (gc220 * gc31 - gc230 * gc21)


WCS_Y = gc20 + x * ellipseX(Y) + y * ellipseY(Y)
= gc20 + a * cos(theta) * ellipseX(Y) + b * sin(theta) * ellipseY(Y)
= gc20 + len * cos(theta) * ellipseX(Y) + len * gc40 * sin(theta) * ellipseY(Y)
= gc20 + len * cos(theta) * gc21 / len + len * gc40 * sin(theta) * (n(Z) * ellipseX(X) - n(X) * ellipseX(Z))
= gc20 + cos(theta) * gc21 + len * gc40 * sin(theta) * (n(Z) * gc11 / len - n(X) * gc31 / len)
= gc20 + cos(theta) * gc21 + gc40 * sin(theta) * (gc230 * gc11 - gc210 * gc31)


WCS_Z = gc30 + x * ellipseX(Z) + y * ellipseY(Z)
= gc30 + a * cos(theta) * ellipseX(Z) + b * sin(theta) * ellipseY(Z)
= gc30 + len * cos(theta) * ellipseX(Z) + len * gc40 * sin(theta) * ellipseY(Z)
= gc30 + len * cos(theta) * gc31 / len + len * gc40 * sin(theta) * (n(X) * ellipseX(Y) - n(Y) * ellipseX(X))
= gc30 + cos(theta) * gc31 + len * gc40 * sin(theta) * (n(X) * gc21 / len - n(Y) * gc11 / len)
= gc30 + cos(theta) * gc31 + gc40 * sin(theta) * (gc210 * gc21 - gc220 * gc11)




MTEXT   2004年8月10日

項目「MTEXT」に「\M+18260」や「\U+FF21」という文字列があらわれることがあります。この場合、「\M+18260」はシフトJISの「A」、「\U+FF21」はユニコードの「A」を意味します。
「\U」は、ユニコードを意味します。私が確認したところでは、ユニコードを使用している文字は、直径記号、角度記号、プラスマイナスの記号の三種類だけでした。この三種類については、DXFハンドブックの225ページで説明しています。
「\M」は、MIF、AutoCAD のヘルプでは「マルチバイト交換書式」と訳されています。「\M+nxxxx」という形式で、「n」は、「1」〜「5」です。
     0 未定義
     1 日本語(Shift-JIS)
     2 中国語繁体字(Big 5)
     3 Wansung(KS C-5601-1987)
     4 Johab(KS C-5601-1992)
     5 中国語簡体字(GB 2312-80)



ハンドル番号   2003年6月3日

ハンドル番号は、DXFのすべてのオブジェクトに割り当てられる番号です。オブジェクトとは、円や線分などの図形と、画層など図形以外の項目を意味します。
ハンドル番号は、16進数であらわされます。
連続している必要はありませんが、連続していても問題ありません。
ヘッダ セクションにある「$HANDSEED」に次のハンドル番号が設定されていなければいけません。つまり、DXFの最後のハンドル番号に「1」を加算した番号が「$HANDSEED」に設定されていなければいけません。
ハンドル番号は、一度割り当てられると変更されることはありません。削除されたオブジェクトに割り当てられたハンドル番号は、削除後使われることはありません。


検索   2002年9月10日

DXF ファイルがテキスト形式であるため、Windows のエクスプローラの検索機能が使えます。通常、図面として DXF ファイルに保存する場合、図面番号を図面上どこかに記入すると思います。このような場合、図面番号が DXF ファイルに文字列として保存されているはずです。テキスト形式のファイルの文字列を対象に検索をおこなえば、目的の DXF ファイルを見つけることが可能です。操作方法は次のとおりです。
Windows のエクスプローラを起動します。エクスプローラのプルダウン メニューの[ツール]→[検索]→[ファイルやフォルダ]をクリックします。「検索」ダイアログボックスがあらわれます。「検索」ダイアログボックス「名前と場所」タブの項目「名前」」の欄に「*.DXF」と入力します。これで検索の対象となるファイルは拡張子「.DXF」のファイルだけとなります。次に「検索」ダイアログボックス「その他」タブの項目「含まれる文字列」」の欄に検索したい DXF ファイルに含まれる文字列を入力します。図番が DXF ファイルに文字列として記入されていて、その図番で検索したい場合、図番の文字列を入力します。最後に「検索開始」ボタンをクリックします。
以上が Windows のエクスプローラの検索機能を使った DXF ファイルの検索です。不明な点はエクスプローラのヘルプを参照してください。


このホームページの情報に基づいておこなった結果について、落合重紀は一切責任を負いません。



トップページへ