CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、PC関係、プログラミング、国内海外旅行情報など何でもござれ。@caddiary

雑感

CAD日記読者からの質問にCAD開発歴25年のおいらが回答してみる

投稿日:2018年12月13日 更新日:

Twitterのダイレクトメッセージで、CADの性能アップに関する質問が届いた。2次元CADの開発に25年もの長きあいだ関わり、今では開発者とクソ管理職のあいだを取り持つだけの便利屋になってしまったが、まぁそこそこの経験と実績があるから、わかる範囲で回答してみるという企画だ。

・2次元CADの描画高速化
CADは昔からC++で組むという慣習がある。アンマネージドで取っ掛かりは悪いけど、速いプログラムを書くならCやC++というのは当たり前であり、今でも変わっていないこと。残念ながら描画まわりは専門外だが、キーワードくらいは思い浮かぶので書いてみる。ずばり、ダブルバッファリングが有効。描画オブジェクトを一つずつ処理するのでなく、画面全体分の描画データを作って一気に描画させるという技術。一朝一夕に組めるものではないが、昔ながらの描画ルーチンを「くるむ」形でコーディングできるはず。GDIっていう古きよきWindowsの描画システムも捨てたもんじゃないってことがわかる。少し前に流行ったGDIPlus、Direct2D、OpenGLなんて技術もいいんだけど、GDIからの移行には大きな労力が必要。Direct2Dについてはプロトタイプ作って速度を計ってみたら、言うほど速くならなくて逆に遅くなるケースがあったりして、労力に見合わないからやめたという経緯あり。3次元だったら新しい技術を取り込むのもありだけど、2次元CADとなると容易でないからねぇ。

・64bit対応
ポインターの型が32bit整数から64整数になるとかなんで、コンパイラが主要なところは見つけてくれる。見つけてくれないところは地味にデバッグして調べるしかない。バグを出し切ったと思っても、結構残っているものでリリース後のバグがそこそこ出る。ウチのCADの場合は、32bit版を残しつつ64bitもリリースして、インストール時にどちらを入れるかを決めさせた。10年ほど前はまだ32bitOSを使っている人が多数いて、64bitOS使う人が少なかったから。今ならほぼ全員64bitOSを使っているから、64bit版で1本化してもよいだろう。
なお、ネイティブ64bit対応したCADは32bit版より速くなることはない。若干遅くなるくらいに考えておいたほうがよい。もちろん巨大データを扱う場合で、メモリーが足りなくなってスワップして激遅になることがなくなるから、そんな面では速くなる。最大のメリットはアプリが大量のメモリーを使えるようになること。32bitならたったの2GBしか使えないところ、64bitなら実装しているメモリーの範囲内で無制限に使えるようになる。2次元CADの図面データは大きくて10MB程度だから普通はいいんだけど、たまに100MB超えなんて図面を作っているユーザーがいるからそんなときは64bitの恩恵を受けられる。あとはラスターか。CADでラスターデータを扱うなら、高精度の画像データを扱うために大量のメモリーが必要になるから64bit化は必須要件。地道にソースコードを直すことが唯一の対策なり。

・DXF,DWGコンバータの変換精度(Teigha使用)
DXF,DWGコンバータはおいらの専門。文字の幅と寸法が基本的なところで高い壁があって、Teighaから得られるこれら情報を自前のCADのオブジェクトに柔軟に変換するべし。Teighaが勝手に自分のCADのデータに変換してくれるわけではないので、いかにDXF,DWGフォーマットの特徴を知るかがカギ。文字はAutoCADストロークフォントという独自フォントがクセモノなので、これをTrueTypeや自分とこのオリジナルフォントにする時点で完璧はありえない。それなりな変換ができればいいんじゃないかな。寸法のデータ構造は超やっかい。AutoCADの長い歴史があるから、ホントよくわからん仕様が多くて苦労したもんだ。AutoCADでデータを作ってTeighaで読み込んでみてってことの繰り返しで傾向がつかめるはず。幾何図形ならSPLINE、ELLIPSE、MLINEなんてところがおもしろいところ。BLOCKは誰もが使うデータ構造なので完全にマスターしておいたほうがよい。MTEXT、MLINEなんてクソな仕様があるので適度に変換できればよい。近頃ではPDFアンダーレイ、IMAGE、それからXCLIPによる切り取りなんて興味深い構造があるので、これに対応できていれば上級編クリアかな。Teighaはドキュメントがすべて英語だから、英語を根気よく読むことが必要。またTeighaの掲示板は同じ問題に直面しているユーザーがたくさん参加しているので、つまったら掲示板を見るべし。誰もそこに上げていないトラブルに遭遇したら、つたない英語で投稿して回答を得てみるのも重要。

・GPUの活用
グラボっすか。。ここはわからんちん。Windows Vistaが2次元描画にグラフィックボードの性能を一切使わないなんてクソ仕様にしたときは遅くなったと騒ぐユーザーがいっぱい湧いてきてけっこうな問題になった。そこから前述のダブルバッファリングを採用して解決した。つまり、イマドキのWindowsくんがそれなりにグラフィックボードを活用してくれているのでアプリ側がそれを意識することはないという認識。きっと、アプリからダイレクトにGPUを扱うためのライブラリがあるんだろうが、3次元CADのようなアプリで必要になるくらいなんじゃないかな。AutoCADやSOLIDWORKSはグラボの推奨型番があって、それに見合わない場合は警告出す。2次元CADだったらこのへんはいらないんじゃないかな。

・Windows10の機能アップデートへの対応
1809が出たということもあって旬な話題だけど、2次元CADには関係ないかな。1809がOS側の設定で、アプリでで表示する文字のサイズを変えられるようになったらしく、それをやられちゃうとアプリとして都合が悪いから、それやっちゃうとダメだよなんて制限事項にしたという話は聞いている。詳細は不明なのでおいおい明らかにしていくつもり。Windows 7はもうじきサポート切れになって、8.1は中途半端なしろものなので、Windows 10は開発環境としてもユーザーの利用環境として完全な標準となりつつある。半年に1回のフィーチャーアップデートやっかいだけど、致命的な問題をアプリ側には与えないから、軽くテストして問題なければいいんじゃないかね。

平日の夜、酒を飲んでないからブログでも書いてみようと思い書きはじめてみたら、ことのほか調子に乗ってきたもんだからけっこうな長文を書いてしまった。これで誰かのお役に立てたなら幸いなことだ。

-雑感

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

クレジットカードを申し込んで小遣いかせぎ

自分としてもこんな形で金を得るのはどうかとは思うんだけど、ネットでまとまった金をかせぐのは難しいから、どうしても安易な方法に流れてしまうのだ。いや、そんな言うほどヘンなことしているわけではないんだけど …

no image

No.をナンバーと読むけどNumberにoがない件

Numberを略してNo.になるというのは間違いだ。 だってNumberの中にoがないんだから。 No.のことを、英語ではnumero signと呼ぶんだと。 ニュメロ サイン、聞きなれないフレーズだ …

no image

家探し

家探し2戦で2敗だった。 横浜にくり出して、アタリを付けていた物件を不動産屋の人の案内で 見て回っているあいだに、本命物件を他の人にとられしまった。 今まさに契約書に記入しようとしたところで、住む気マ …

no image

メタルラック解体

アイリスオーヤマのメタルラックを解体しようとした顛末を記す。 結論から言うと、一ヵ所だけどうしても外れず、パイプ1本と 棚板1枚がつながっている中途半端な状態で、粗大ごみで出した。 何とも歯切れが悪く …

楽天証券がカードで買える投資信託をはじめるってんで、銀行とセットで口座をつくってみた

ネット銀行と証券はSBIってこれまでは思っていたわけだが、ここへ来ておいらのなかで楽天ブランドの株が急上昇している。