AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
CAD作ろ! 文字を描く(2)
文字列のパラメータには、まず、文字高さ、文字幅又は文字の縦横比率があります。文字幅を扱うのか、縦横比率を扱うのか、は最初にちゃんと決めておく必要があります。
H:文字高さ
W:文字幅
 
W/H:縦横比率
(文字幅=文字高×この数値)

次に、AutoCADのDTEXT(ダイナミックテキスト)にはありませんが、日本国内製CADでは、文字間隔を持つものが多いです。

AutoCADのDTEXTのように、半角文字と全角文字の横幅が同じであれば
文字の全長L=文字数×文字幅+(文字数−1)×文字間隔
で計算出来ますが、半角文字の横幅は、全角文字の横幅の半分、としている場合には、
L=バイト数×半角分文字幅+(文字数−1)×文字間隔
となります。また、全角の横の文字間隔と、半角の横の文字間隔が同じだとバランス的にイマイチという事で、半角文字の横の文字間隔は半分にしようというソフトもあるかもしれません。また、計算を楽にするために、文字間隔を、文字と文字の間の距離ではなく、文字の後ろにつく空白距離、つまり、文字数と文字間隔数は同じとして扱う、というソフトもあるかもしれません。但しこの場合、文字の基点によって振る舞いが異なってしまうので余り薦められません。
 
文字の基点は標準・左下、というものが多いです。

文字の基点を、9種類持てるものも多くなっています。

この場合、文字基点を左上(※TextOutの基点が左上なので)に持って行く計算をさせれば、文字を描くルーチンは、文字の基点=左上として統一させる事が出来ます。
基点X移動量dxY移動量dy
左下0H
中下-L/2H
右下-LH
左中0H/2
中中-L/2H/2
右中-LH/2
左上00
中上-L/20
右上-L0

次に、文字は回転角度を持ちます。

基点の移動量も回転後の位置になりますが、この場合には回転写像を行うと良いでしょう。(x,y)の座標を角度θで回転させた後の座標(x',y')は、
(x')=(cosθ -sinθ)(x)
y'sinθ  cosθy
x'=xcosθ−ysinθ
y'=xsinθ+ycosθ
ですので、文字の左下点(x',y')は、基点の座標を(x,y)とすれば
x'=x+dxcosθ−dysinθ
y'=y+dxsinθ+dycosθ
となります。
そして、文字を1文字ずつ描かせるよう、各文字の左上点を計算していきます。(ls:進み量)
mx=x+ls×cosθ
my=y+ls×sinθ
 
文字の左右合わせに対応する場合には、文字作図の第1座標・第2座標から、文字Lの全長と傾き角度が計算出来ます。そして、文字高さを固定して文字幅を変動させるようにするのか、文字の縦横比率を固定して文字高を変動させるようにするのか、また、文字間隔を変動させて均等文字を表現させるか、に対応させます。
第1座標(x1,y1)
第2座標(x2,y2)
A=tan-1((y2-y1)/(x2-x1))
L=√((x2-x1)2+(y2-y1)2
 
文字高H
文字幅W=L/文字数
 
更に、文字の縦字に対応する場合には、それ相応のロジックを組み込む必要があります。
 
 
文字間隔を考慮し、文字列を1文字ずつ作図するサンプルプログラムです。(※2点指定には対応していません)
サンプルプログラムのソース
 
 
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
 ▲PREV
 ▼NEXT
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.