CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

DWG

円弧をポリラインに変換

投稿日:2008年4月13日 更新日:

以前書いた記事「ポリラインのふくらみ」を実践する日がやってきた。
複数のつながった円弧を1つのポリラインに変換する。
AutoCADのポリラインは、点列を線分でつなぐだけのものではない。
途中にふくらみ、つまり円弧を入れることができる。
円弧を表現するために、ふくらみ(bulge)という1つの実数情報が必要になる。
普通に円弧を表現する場合、中心点と半径と開始角度と終了角度と回り方という
情報が必要だが、ポリライン内では開始点と終了点とふくらみだけで済む。
ポリラインには点列(つまり開始点と終了点)が存在しているので、
そこにふくらみという情報を追加するだけで、あらゆる円弧が表現できてしまう。
おさらいは、ここまでにしておく。
さて、AutoCADの円弧である。
保持している情報は、中心点と半径と開始角と終了角。
回り方、つまり反時計回りなのか時計回りなのかという情報がない。
常に、反時計回りとして識別される。
(数学的には、3時方向を0度として反時計回りに角度を測るのが普通。)
ただ単純に円弧を画面に表示するのであれば、回り方なんていう情報は必要ない。
でも、ポリラインのようにつながっているという状態を表現するには、
絶対的に必要なものである。(ハッチングにおける、境界図形の円弧も同様。)
「複数のつながった円弧」とは、画面ではつながっているように見えても、
内部情報としてはつながっていないのである。
となりあう円弧同士で接続状態を確認しながら、
個々の円弧が反時計回りなのか時計回りなのかを判定する。
文章にすると簡単だが、プログラムでは約100ステップを要した。
これにより、連続した円弧の回り方が判明する。
さらに、円弧の開始点と終了点を計算しておく。
(中心点と半径と開始角、終了角から容易に計算できる。)
以下の公式からふくらみを計算する。
ふくらみ = tan( 円弧の中心角 /4 )
反時計回りなら何も変更する必要はない。
時計回りなら、ふくらみをマイナス値として
開始点と終了点を入れ替える。
あとは空のポリラインに、頂点情報(Vertex)追加すればよい。
1個の円弧につき、開始点とふくらみをセットで頂点情報とする。
最後の頂点だけは、1つ前の終了点とふくらみに0をセットする。
これでポリラインが完成だ。
「複数のつながった円弧を1つのポリラインに変換する。」
なかなか興味深いテーマだった。
今後、いろいろと応用が利きそうだ。

-DWG
-

執筆者:


  1. 続・ポリラインのふくらみ

    以前、「ポリラインのふくらみ」 ←コチラで紹介しました、
    ポリラインのふくらみ – – CAD日記
    この記事の続話が、
    円弧をポリラインに変換 – …

comment

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

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

関連記事

no image

Teighaのdwg2018サポート時期

AutoCAD2018がリリースしてしばらく経つ。5年ぶりのdwg変更で2018形式になったわけだが、まだうちのCADの問い合わせでdwgが読めねーじゃねーかという話は聞いていない。永久ライセンスがな …

no image

消えゆくOpenDWG

www.opendwg.org がなくなった。 お気に入りに入れていて、ほんの3日前までアクセスできていたのが、 今日アクセスしようとしたら、つながらなかった。 一瞬メンテナンス中かと思ったが、すぐに …

no image

ハッチング境界

塗りハッチング(パターン名=SOLID)の話。 ハッチングの境界図形が閉じていないことがある。 境界図形とは、ポリラインや線、円弧、楕円、スプラインなどのこと。 ポリラインの場合は、閉じていないという …

no image

DRX SDK

まずは、CAD Japan のニュースを読んでもらいたい。 [ポイント] ・無料でダウンロードできる ・DWGdirectを用いたアプリケーションの機能を拡張する ・C++を利用する 次に、Open …

no image

線種生成モード

ポリラインには、線種生成モードという情報がある。 [システム変数 PLINEGEN] (AutoCADヘルプから引用) ポリラインの頂点での線種パターンの生成方法を設定します。 0 線種パターンを、ポ …