CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、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

多数決は少数派を弾圧する方法だからボクは納得しないだってさw

多数決で物事を決めるのは合理的かつ民主的な方法だ。正確に言うと、まず意見表明して議論して最後に多数決。何かを決めようというときに意見が割れたらどうするかを決める必要があって、結果的に少数派は多数派に飲 …

no image

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

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

no image

四半世紀を経た同窓会で再会して結婚が決まったと聞いてなんだかうれしいぞ

高校の同窓会を学年まるごとを対象にして企画・運営したのがちょうど一年前だった。詳しくは「同窓会で101名も集めちゃったぞよ」を参照。四半世紀を正確に言うと28年ぶりの再会で中年まっただ中だった。人生の …

台湾に行くにあたってパスポー切れに気付いてあわてて申請したので今日受け取りに行く

以下、時系列で記していこう。 2019/10/25 12月に久しぶりの海外旅行で台湾に行くための手続きとして、航空チケットとホテルの手配が済んでいた、妻がふとパスポートは大丈夫かしらと、金庫から取り出 …

no image

香港の友人

毎年、Greetingカードが届く。 香港の友人からだ。 高校時代をともに過ごした友人。 バスケがしたいです! という人だった。 最後に会ったのは自分の結婚式だから、10年ちょっと前。 お互い体型とか …