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

Teigha3.3.1

DWGdirect改めTeighaの3.03.01がリリースしたのは、6月の最終日である30日だった。 リリース予定を、The end of Juneと公言していたのをかろうじて守ったことになる。 そ …

no image

DWGdirectの迷走

DWGdirect Version 1.14.01が出たのが、去年の12月半ばですから、もう2ヶ月も経ちました。最初の頃はみんな静観していたようですが、近頃バグ報告が多発しているようです。サポート掲示 …

no image

DWG TrueView

 フリーのDWGビューアです。もちろんDXFも見れます。印刷もできます。いつの間にかAutodeskからリリースされてました。  ここ最近はDWGのビューアを有料にしてたのですけど、ここへきて方針変更 …

no image

DWGdirect 2.4.0

いよいよ本格的な2008DWG対応が行われたようだ。 DWGdirect 2.4.0 Beta. Sustaining Member向けにBeta版が公開された。 Neil から英語の短いメールが届き …

no image

TeighaのPDFサポートその後

TeighaのPDFサポートのその後の話です。 Teigha(旧OpenDWG)のベースの契約だけではPDFを扱うことが できないため、追加契約が必要となる。 デモ版での基本的動作の確認がとれため、追 …