« 2008年2月 | トップページ | 2008年4月 »

2008年3月31日 (月)

2.5DからSketchUp

2.5Dで斜面まで立体を完成させ、SketchUpにインポートしてみました。            実点/補助線種とレイヤ名設定だけで2.5Dデータを作成しています。             2.5Dの作図方法については、サイト内の応用例を参考にしてください。

25d_fin   

SketchUpにインポート

25d_import   

プラグイン makefaces11 を実行

25d_face_fr 25d_face_re_2             

| | コメント (0) | トラックバック (0)

2008年3月30日 (日)

テンプレート

SketchUp起動時のテンプレートファイルをカスタマイズする手順です。

メートル-ミリメートル-3Dの起動画面です。

Style_3d_5

メニュー ⇒ ウィンドウ ⇒ スタイル をクリック                          例)デフォルトのスタイル ⇒ デフォルトのスタイルをクリック                         

Style_1_4 Style_2_5

編集タブ ⇒ エッジ設定 をクリック                                 例)外形線を 3 → 1 に変更

Style_3_1_3 Style_3_2_3

面設定をクリックすると面の表/裏の色を設定することができます。                                            

Style_4_1 Style_4_2

背景設定をクリックするとウィンドウ内の背景色を設定できます。               例)空のチェックを外します。              

Style_5_1 Style_5_2_2

各項目のカラーボタンをクリックすると、スライドバーで色を変更できます。

Style_6_3

等角ボタンをクリックし、直交する軸の中心点を画面中心に。

Style_7_3

「名前を付けて保存」から **.skp ファイルとして保存します。              注) 必ず、新しいファイル名で保存してください。 例) userstyle_3D.skp

保存先のパスは、                                      C:\Program Files\Google\Google SketchUp 6\Resources\ja\Templates

Style_8_7  

メニュー ⇒ ウィンドウ ⇒ 環境設定をクリック                                テンプレートを、保存したファイルに設定します。                        次回起動時から、新しいテンプレートが開きます。                        

Style_9_7  

| | コメント (0) | トラックバック (0)

2008年3月29日 (土)

ダブルクリック

選択ツールで面をダブルクリックすると、面とエッジを選択できますが、              他のツールでの効果的な使い方を説明します。

球を作図する場合

Follow_1

選択ツールからガイド円となる面をダブルクリック

Follow_2

フォローミーツールから、回転させる円をクリック

Follow_3 Follow_4

ガイド円を消去して球が完成します。

Follow_5

プッシュプルツールでスイープした直後に、                           スイープした面をダブルクリックすると、元に戻すことができます。

Pushpull_1 Pushpull_2

プッシュプルツールでスイープすると、スイープ量が記憶され、                   他の面をダブルクリックすると、同じ高さにスイープすることができます。

Pushpull_3 Pushpull_4

オフセットツールもオフセット量が記憶されます。                         オフセットした内側の面をダブルクリックした場合です。

Offsetl_1_3 Offsetl_2_3

選択ツールから、オフセットした内側の面をダブルクリックすると、                 Deleteキーで面を消去することができます。

Erase_1 Erase_2

| | コメント (0) | トラックバック (0)

2008年3月27日 (木)

円+文字

円と文字を組合わせた線記号変形です。

作図位置を指示 ⇒ 任意文字を入力

すでに公開されているものがあるかもしれませんが・・・・・。                    アレンジして使いたい方はどうぞ。

080327

0 円+文字
00 00 0 0 0 360 1 1 -1 e 3 #円データ(半径3)
25000 00 0 0 5 0 10000 404 -1 "55
999

0 長丸+文字
00 00 -1 0 90 270 1 1 -1 e 3 #左半円データ(半径3)
00 00 1 0 270 90 1 1 -1 e 3 #右半円データ(半径3)
00 00 -1 3 1 3 1 1 -1 #水平線(上)
00 00 -1 -3 1 -3 1 1 -1 #水平線(下)
25000 00 0 0 5 0 10000 404 -1 "555
999

注)                                                     1 1 -1 は、順に線色/線種/書込みレイヤの指示です。                    404は、基点(中)/文字種4の指示です。

| | コメント (0) | トラックバック (0)

2008年3月23日 (日)

トリプルクリック

選択ツールから、ジオメトリの一つの面を連続して3回クリックすると、             ジオメトリ全体を選択することができます。                             範囲選択が難しい場合、とても有効だと思います。                              

Triple_1_2   

選択ツールから、黄色のジオメトリの上面を3回クリック

Triple_2

移動ツールから、基点を指定してマウスを移動

Triple_3

任意の位置をクリック ⇒ 選択解除

Triple_4 Triple_5 

| | コメント (4) | トラックバック (0)

2008年3月20日 (木)

円筒壁に窓

円筒の壁に窓を設置するイメージでモデルを作図してみました。

中心指定円弧のプラグインで1/4円弧を作図                          ・オフセットツール/線ツールで投影図を作図                          ・必要な長さ/角度は、メジャーツール/分度器ツールを利用               

注)開口部は大きく作図しておいた方が、"モデルと交差"を実行後、                 不要な面/線の消去が容易です。

Window_1

窓枠に相当する部分を、プッシュプルツールで上下にスイープ

Window_2

開口部に相当する部分をプッシュプルツールでスイープ

Window_3

外壁に相当する部分をプッシュプルツールで上下にスイープ

Window_4_2

ジオメトリを全選択して"モデルと交差"を実行

Window_5

消去ツールで不要な面/線を消去

Window_6

ガラスに相当する部分をスイープ                                "エッジのソフトニング"を実行し、円弧の分割線を非表示にします。

Window_7

ガラス部分をペイントツールで透明にして完成。

Window_8

| | コメント (4) | トラックバック (0)

2008年3月19日 (水)

任意角度の矩形作図

直交線上にある3点を指定して、任意角度の矩形を作図する外部変形です。                     相談室で話題になっていましたので・・・・・。                           トレースする3点がないと、実用的ではないです。

直角で交わる点を始点にしない場合、平行四辺形が作図されますので注意。           水平/垂直でも作図は可能です。矩形は、曲線属性化されます。

Rec_2 

一行スプリクトですので、jgawk~>temp.txtまで改行を入れないでください。         

--------------------
@REM 矩形の作図
@echo off
REM
REM #jww
REM #cd
REM #0 始点を指定してください
REM #1 1点目を指定してください
REM #2 2点目を指定してください
REM #hr
REM #e
jgawk 'BEGIN{x[0]=0;y[0]=0}/^^hp1/{x[1]=$2;y[1]=$3}/^^hp2/{x[3]=$2;y[3]=$3;x[2]=x[1]+x[3];y[2]=y[1]+y[3]}END{print "pl";for(i=0;i^<=2;i++){printf "%%.15g %%.15g %%.15g %%.15g\n",x[i],y[i],x[i+1],y[i+1]}printf "%%.15g %%.15g %%.15g %%.15g\n",x[3],y[3],x[0],y[0]}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

| | コメント (0) | トラックバック (0)

2008年3月18日 (火)

ミラー反転/複写

ジオメトリをミラー反転/複写する手順です。

Mirror_1_2

選択 ⇒ 尺度ツール から前面中央のグリップをクリックします。

Mirror_2_2

数値入力ボックスに 「-1」 を入力 ⇒ Enter でジオメトリが反転します。           選択するグリップの位置で反転方向を変えることができます。

Mirror_3_2 Mirror_4_2

反転したジオメトリを再選択します。

Mirror_5

Ctrl + 移動ツールから、ジオメトリを複写します。

Mirror_6_3

選択を解除する前に、ジオメトリ上で右クリック ⇒ 反転方向 ⇒ 赤の方向で        ジオメトリがミラー複写されます。         

Mirror_7_2 Mirror_8

| | コメント (0) | トラックバック (0)

2008年3月17日 (月)

Alt+移動ツール

移動ツールでAlt キーを併用すると、台形形状をモデリングできます。

円ツールで同心円を作図。

Circle_1_2

外側の円を選択

Circle_2_2 

移動ツールを選択 ⇒ 中心点をクリック

Circle_3_2

Altキーを押して、マウスを青い軸上が表示される位置に移動 ⇒ 高さを指定

Circle_4_2

線ツールで円周上の2点をクリックすると、上面として認識されます。

Circle_5 Circle_6

矩形ツールとオフセットツールで、2つの長方形を作図

Rec_1

Ctrl キーを押しながら、内側の長方形を選択

Rec_2

移動ツールを選択 ⇒ 長方形の面上の任意点をクリック                   Alt キーを押して、マウスを青い軸上が表示される位置に移動 ⇒ 高さを指定

Rec_3

オービットツールで底面を表示し、線ツールで2点をクリックすると                   底面として認識されます。

Rec_4 Rec_5

| | コメント (2) | トラックバック (0)

2008年3月12日 (水)

Excel データの作図(拡張版)

距離と角度から、Excel で座標データを計算し、作図する外部変形の拡張版です。    分岐コマンドから、2種類の作図が可能です。

Excel シートの作成方法は、こちらで                           

線種/線色は、lt */lc * で変更することができます。                     レイヤは、ly * を変更してください。                                  縮尺は、スプリクト9行目のS=10 を変更する必要があります。                  1/100の時、S=100です。

この外部変形の作成にあたっては、                                盗朱さんのアドバイスをいただきました。感謝です。

Bunnki

Jww2 Jww3

<cord2.bat>
--------------------
@REM Excel to Jww 座標出力
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|敷地図 (L)|座標点 (R)|
REM #:1
REM #:2
REM #0 原点を指定してください
REM #hr
REM #e
REM
:1
:2
jgawk -vN=%1 -f cord2.awk cord.csv>jwc_temp.txt
REM del cord.csv
goto end
:end

<cord2.awk>
--------------------
###Excel to Jww 座標出力(レイヤ別)
###
BEGIN{
#カンマ区切り(CSV用)
FS=",";
#文字列設定
dq="\"";deg="°";min="'";sec="”";sh="/";sp=" ";wd=10;
#縮尺(S=1/10)
S=10;
#文字位置調整
cdx=0;cdy=3*S;
#文字方向指定(水平)
ddx=5
}
###
#座標値取得
/^#/,/^##/{
if($1=="#"){ns=NR;ch1=$3;ch2=$4;cht=dq ch1 ch2}
if(NF==10){
chn[NR]=$2;x[NR]=$3;y[NR]=$4;L[NR]=$5;d[NR]=$6;m[NR]=$7;s[NR]=$8;
chr[NR]=dq chn[NR] sp L[NR] sh d[NR] deg m[NR] min s[NR] sec}
if($1=="##"){ne=NR;next}
}
END{
###表題の作図
print "ly3";printf "%s %d %d %d %d %s\n","ch",-20*S,5*S,ddx,0,cht;
#####
#中心線の作図
print "ly1";
print "lc2";
print "lt5";
printf "%d %d %d %d\n",-wd*S,0,wd*S,0;
printf "%d %d %d %d\n",0,-wd*S,0,wd*S;
#####
###原点/座標点の作図
print "ly2";
printf "%s %d %d\n","pt",0,0;
for(i=ns+1;i<=ne;i++)
{printf "%s %.15g %.15g\n","pt",x[i],y[i]}
###符号/距離/角度表示
print "ly3";
for(i=ns+1;i<=ne;i++)
{xc=x[i]+cdx;yc=y[i]+cdy;
printf "%s %.15g %.15g %.15g %.15g %s\n","ch",xc,yc,ddx,0,chr[i]}
###敷地作図
#線種指定
if(N==1){
print "ly0";
print "lc3";
print "lt5";
for(i=ns+1;i<=ne-1;i++)
{printf "%.15g %.15g %.15g %.15g\n",x[i],y[i],x[i+1],y[i+1]}
printf "%.15g %.15g %.15g %.15g\n",x[ne],y[ne],x[ns+1],y[ns+1]
}}

| | コメント (2) | トラックバック (0)

2008年3月 9日 (日)

Excel マクロの記録

Excel でCSVファイル保存をマクロに記録するための手順です。

ツール ⇒ マクロ ⇒ 新しいマクロの記録を実行します。

Macro_1

マクロの保存先を"作業中のブック"に指定し、マクロ名に任意の名前を設定します。    ショートカットキーに任意のKeyを設定します。(例 Ctrl+q で実行可能 )                                

Macro_2_2 

作業内容を記録するために、名前を付けて保存から                     CSVファイル形式での保存を実行します

Macro_4_2

注意のメッセージが表示されたら、"はい"をクリックします。

Csv_save2_5    

ツールバーの記録終了をクリックして完了です。

Macro_10

設定によっては、ツールバーが表示されない場合があります。                 ツール ⇒ マクロ ⇒ 記録終了 をクリックしてください。

Macro_3

マクロの記録を確認する場合は、ツール ⇒ マクロ ⇒ マクロ をクリック          マクロ名 "CSV保存"が記録されたことを確認してください。

Macro_6

Macro_7

"キャンセル"で戻ることができます。                                確認ができたら、"名前を付けて保存"から、Excel 形式でファイルを保存します。      上書き保存では、CSVファイルを上書きし、マクロが保存されません。

マクロを削除する場合は、ツール ⇒ マクロ ⇒ マクロから編集をクリック。                              標準モジュールの下の"Module1"を右クリック ⇒ Module1の解放をクリック。

Macro_8

"いいえ"をクリックして削除が完了、ファイルを保存します。

Macro_9

マクロが保存されたファイルを起動すると以下のメッセージが出ます。            "マクロを有効にする"をクリックしてファイルを開いてください。

Macro_5

マクロを利用するには、セキュリティレベルを"中"に設定する必要があります。               ツール ⇒ マクロ ⇒ セキュリティ から設定ができます。

Macro_11

| | コメント (0) | トラックバック (0)

Excel データの作図

ExcelからCSV形式で保存した座標データをJwwで作図する外部変形です。                  

距離と角度から、座標データを求めるExcel シートを作成してみました。

Excel_2 

注)データ入力が完了したら、Excel 形式で必ずバックアップを保存してください。 

外部変形用バッチファイルのあるフォルダにCSV形式で保存します。                          ファイル名は、cord.csv とします。                                  

CSV形式の保存には、Excel マクロを利用します。マクロの解説はこちら

Csv_save_2   

CSVファイルをメモ帳で開くとテキストデータを確認できます。                  外部変形で使用するのは、#~## までのデータです。                      

Csvfile   

Jwwを起動して外部変形を実行し、基準点の位置を指定します。              表示内容等は、awkスプリクトを変更してご利用ください。

Jww

バッチファイルは、cord.csv を上書きする設定にしています。                 CSV保存時に、上書きメッセージをスキップしたい場合、                           最終行の"REM"を削除してください。 

拡張版を公開しましたので、バッチファイル/スプリクトは、こちらへ

<cord.bat>
--------------------
@REM Excel to Jww 座標出力
@echo off
REM
REM #jww
REM #cd
REM #0 原点を指定してください
REM #hr
REM #e
REM
jgawk -f cord.awk cord.csv>jwc_temp.txt
REM del cord.csv

<cord.awk>
--------------------
###Excel to Jww 座標出力
###
BEGIN{
#カンマ区切り(CSV用)
FS=",";
#文字列設定
dq="\"";deg="°";min="'";sec="”";sh="/";
#縮尺(S=1/10)
S=10;
#文字位置調整
cdx=0;cdy=3*S;
#文字方向指定(水平)
ddx=5
}
###
#座標値取得
/^#/,/^##/{
if($1=="#"){ch1=$3;ch2=$4;cht=dq ch1 sh ch2}
if(NF==10){
chn[NR]=$2;x[NR]=$3;y[NR]=$4;L[NR]=$5;d[NR]=$6;m[NR]=$7;s[NR]=$8;
chr[NR]=dq chn[NR] sh L[NR] sh d[NR] deg m[NR] min s[NR] sec}
if($1=="##"){n=NR;next}
}
END{
###表題の作図
{printf "%s %d %d %d %d %s\n","ch",-20*S,5*S,ddx,0,cht}
###点の作図
for(i=4;i<=n;i++)
{printf "%s %.15g %.15g\n","pt",x[i],y[i]}
###符号/距離/角度表示
for(i=4;i<=n;i++)
{xc=x[i]+cdx;yc=y[i]+cdy;
printf "%s %.15g %.15g %.15g %.15g %s\n","ch",xc,yc,ddx,0,chr[i]}
###基点/測定点間作図
#線種/線色指定
print "lc2";
print "lt7";
for(i=4;i<=n;i++)
{printf "%.15g %.15g %.15g %.15g\n",0,0,x[i],y[i]}
###境界線作図
#線種指定
print "lc3";
print "lt5";
for(i=4;i<=n-1;i++)
{printf "%.15g %.15g %.15g %.15g\n",x[i],y[i],x[i+1],y[i+1]}
printf "%.15g %.15g %.15g %.15g\n",x[n],y[n],x[4],y[4]
}

各要素をレイヤ分けするスプリクトにしてみました。                       また、コメント欄を空白セルにすると何も表記しないようにしました。 08/03/10

符号表記を元に戻し(21行目)、距離と符号の間は、半角スペースにしました。              アレンジする場合は、sp=" "(5行目)を変更してください。08/03/11

--------------------
###Excel to Jww 座標出力(レイヤ別)
###
BEGIN{
#カンマ区切り(CSV用)
FS=",";
#文字列設定
dq="\"";deg="°";min="'";sec="”";sh="/";sp=" ";
#縮尺(S=1/10)
S=10;
#文字位置調整
cdx=0;cdy=3*S;
#文字方向指定(水平)
ddx=5
}
###
#座標値取得
/^#/,/^##/{
if($1=="#"){ch1=$3;ch2=$4;cht=dq ch1 ch2}
if(NF==10){
chn[NR]=$2;x[NR]=$3;y[NR]=$4;L[NR]=$5;d[NR]=$6;m[NR]=$7;s[NR]=$8;
chr[NR]=dq chn[NR] sp L[NR] sh d[NR] deg m[NR] min s[NR] sec}
if($1=="##"){n=NR;next}
}
END{
###表題の作図
{print "ly3";printf "%s %d %d %d %d %s\n","ch",-20*S,5*S,ddx,0,cht}
###点の作図
print "ly2";
for(i=4;i<=n;i++)
{printf "%s %.15g %.15g\n","pt",x[i],y[i]}
###符号/距離/角度表示
print "ly3";
for(i=4;i<=n;i++)
{xc=x[i]+cdx;yc=y[i]+cdy;
printf "%s %.15g %.15g %.15g %.15g %s\n","ch",xc,yc,ddx,0,chr[i]}
###基点/測定点間作図
#レイヤ/線種/線色指定
print "ly1";
print "lc2";
print "lt7";
for(i=4;i<=n;i++)
{printf "%.15g %.15g %.15g %.15g\n",0
,0,x[i],y[i]}
###境界線作図
#レイヤ/線種/線色指定
print "ly0";
print "lc3";

print "lt5";
for(i=4;i<=n-1;i++)
{printf "%.15g %.15g %.15g %.15g\n",x[i],y[i],x[i+1],y[i+1]}
printf "%.15g %.15g %.15g %.15g\n",x[n],y[n],x[4],y[4]
}

| | コメント (4) | トラックバック (0)

2008年3月 4日 (火)

DXFのインポート2

モデル作成途中に、新しいDXFファイルをインポートしてみます。

CADデータは、JWW情報館さんの「住宅の2.5D集」を利用させていただいています。

Import_1_2

ファイル ⇒ インポートから、新しいDXFファイルをインポートします。

Import_2_2

インポートした直後は、グループ化されていますので、                       図形を 右クリック ⇒ 分解 を実行します。

Import_3_2

Import_4_2

そのまま、プラグイン "makefaces11" を実行して、面を作成することができます。

Import_5_3 

| | コメント (0) | トラックバック (0)

2008年3月 3日 (月)

GSUファイル間複写

クリップボードを利用して、ジオメトリを別ファイルに複写することができます。

2つのファイルを起動します。

T_window2_3   

コピー元のジオメトリを選択して、編集 ⇒ 「コピー」を実行 または、Ctrl+C                   

T_window3_2

コピー先のファイルをアクティブにして、編集 ⇒ 「所定の位置に貼付け」を実行

T_window4_2

コピー元のファイルと同じ位置に複写されます。                          「貼付け」または、Ctrl+V を実行すると任意の位置に複写できます。

T_window5_2

画面上に2つの画面を表示するには、                              タスクバー上の何も表示されていない位置で右クリック                    ⇒ 「左右に並べて表示」を実行します。

T_window

| | コメント (10) | トラックバック (0)

2008年3月 1日 (土)

2.5Dレイヤ名設定(改)

すでに公開している外部変形 「2.5Dレイヤ名設定」 の高さ/奥行き取得方法を     すべて3辺選択に変更しました。

外変用バッチファイル角度補助線の分岐コマンドを追加しました。 08/04/05

分岐コマンドに "Next" を追加しました。                             外部変形 "レイヤ間移動/複写"に移動します。                         相互に利用する"バッチファイル名"に注意してください。 08/04/06

外変移動後、「未実行」が表示されないようにしました。 08/04/08

Layer_name_n

「#lh h1 , h2 」の基本的な操作方法は変わりませんが、                      3辺の選択方法によって、以下のレイヤ名が設定されます。                                       

A) 基準線h0 → 基準線h0を選択(h1) → h2を選択  ⇒ 「#lh 0 , h2 」             B) 基準線h0 → h1を選択 → 基準線h0を選択(h2) ⇒ 「#lh h1 , 0 」           C) 基準線h0 → h1を選択 → h1を選択(h2) ⇒ 「#lh h1 , h1 」

* 「#lh 0 , h2 」と「#lh h1 , 0 」 は、#lh ***.** と同等のレイヤ名設定になります。

* 「#lh h1 , h1 」は、#lv ***.** と同等の作図データになりますが、               同一平面に2つの面が作図されることになります。                             2.5Dだけで使用する場合は、作図実行後、重複線の整理を行ってください。                           

<lyr_set_3l_n.bat>
--------------------
@REM レイヤ/レイヤグループ名設定(3辺取得型)
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|+H1,H2 (L)|-H1,H2 (R)|LV (3)|基点設定 (4)|角度補助線(5)|Next (6)|
REM
REM #:1
REM #:2
REM #1ln 基準線h0を指定してください(L)
REM #2ln 高さ(奥行き)h1の指示線をクリック(L)
REM #3ln 高さ(奥行き)h2の指示線をクリック(L)
REM #hr
REM #e
REM
REM #:3
REM #1ln 基準線h0を指定してください(L)
REM #2ln 高さh1の指示線をクリック(L)
REM #hr
REM #e
REM
REM #:4
REM #1 線色6実点位置を指定してください(R)
REM #2 線色5実点位置を指定してください(R)
REM #3 線色5補助線種の方向を指示してください(R)
REM #hr
REM #e
REM
REM #:5
REM #0 始点を指定してください。(R)
REM #1ln 角度線を指定してください(L)
REM #hr
REM #e
REM
REM #:6
REM #h/layer_ch_n.bat
REM #e
REM
:1
:2
jgawk '/^^#/,/NF==0/{if(NF==4){print $0}}' jwc_temp.txt>temp.txt
jgawk -vN=%1 -f lyr_set_3l.awk temp.txt>jwc_temp.txt
del temp.txt
goto end
:3
jgawk '/^^#/,/NF==0/{if(NF==4){print $0}}' jwc_temp.txt>temp.txt
jgawk -vN=%1 -f lyr_set_3l.awk temp.txt>jwc_temp.txt
del temp.txt
goto end
:4
jgawk '/^^hp1/{print "pn6";printf "%%s %%.15g %%.15g\n","pt",$2,$3};/^^hp2/{x0=$2;y0=$3;print "pn5";printf "%%s %%.15g %%.15g\n","pt",x0,y0};/^^hp3/{x1=$2;y1=$3;print "lc5";print "lt9";printf "%%.15g %%.15g %%.15g %%.15g\n",x0,y0,x1,y1}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:5
jgawk '/^^#/,/NF==0/{if(NF==4 ^&^& $1^>$3){x1=$1-$3;y1=$2-$4}else{x1=$3-$1;y1=$4-$2}}END{if(y1^<0){x=-x1;y=-y1}else{x=x1;y=y1}print "lc6";print "lt9";printf "%%.15g %%.15g %%.15g %%.15g\n",0,0,x,y}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:6
echo #>jwc_temp.txt

:end
--------------------

<lyr_set_3l.awk>
--------------------
#レイヤ/レイヤグループ名設定
########## 3辺取得型 ##########
#####
#初期設定
BEGIN{
#傾き一致:6桁
j=100000;
#小数点桁数(2桁)
k=100;
#単位(mm:1/m:1000)
un=1;
#記号設定
lgn="lgn";lyn="lyn";lh="#lh";lv="#lv";cma=",";
#円周率
pi=atan2(0,-1)}
#####
#端点座標取得
NR==1{if($1>$3){x01=$3;y01=$4;x02=$1;y02=$2}else{x01=$1;y01=$2;x02=$3;y02=$4}
if(y01==y02){an1=0}if(x01==x02){an1=90}else{an1=(y02-y01)/(x02-x01)}}
NR==2{if($1>$3){x11=$3;y11=$4;x12=$1;y12=$2}else{x11=$1;y11=$2;x12=$3;y12=$4}
if(y11==y12){an2=0}if(x11==x12){an2=90}else{an2=(y12-y11)/(x12-x11)}}
NR==3{if($1==""){next}
if($1>$3){x21=$3;y21=$4;x22=$1;y22=$2}else{x21=$1;y21=$2;x22=$3;y22=$4}
if(y21==y22){an3=0}if(x21==x22){an3=90}else{an3=(y22-y21)/(x22-x21)}}
#平行線確認
{ak1=an1-an2;ak1=ak1*j;ak1=rnd(ak1)/j;
if(N==3){next}else{ak2=an2-an3;ak2=ak2*j;ak2=rnd(ak2)/j;
ak3=an3-an1;ak3=ak3*j;ak3=rnd(ak3)/j}}
#####
END{
#未実行判定
if(ak1!=0 || ak2!=0 || ak3!=0){print "hq"}
#高さ取得(水平線)
#+H1,H2
if(N==1 && y01==y02 && y11==y21){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;
h=lh;ht=lyn h h1 cma h1;print ht}
if(N==1 && y01==y02 && y11!=y21){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;
h2=(y21-y01)/un;h2=h2*k;h2=rnd(h2)/k;h=lh;
ht=lyn h h1 cma h2;print ht}
#-H1,H2
if(N==2 && y01==y02 && y11==y21){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h=lh;ht=lyn h h1 cma h1;print ht}
if(N==2 && y01==y02 && y11!=y21){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h2=(y21-y01)/un;h2=h2*k;h2=rnd(h2)/k;h2=-h2;
h=lh;ht=lyn h h1 cma h2;print ht}
#奥行き取得(垂直線)
#+H1,H2
if(N==1 && x01==x02){h1=(x11-x01)/un;h1=h1*k;h1=rnd(h1)/k;
h2=(x21-x01)/un;h2=h2*k;h2=rnd(h2)/k;
h=lh;ht=lyn h h1 cma h2;print ht}
#-H1,H2
if(N==2 && x01==x02){h1=(x11-x01)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h2=(x21-x01)/un;h2=h2*k;h2=rnd(h2)/k;h2=-h2;
h=lh;ht=lyn h h1 cma h2;print ht}
#奥行き取得(任意角度線)
#+H1,H2
if(N==1 && x01!=x02 && y01!=y02){dy=y02-y01;dx=x02-x01;
a0=dy/dx;ang=atan2(dy,dx);ath=pi/2-ang;
b0=y01-a0*x01;b1=y11-a0*x11;b2=y21-a0*x21;
y00=a0*x11+b0;y22=a0*x11+b2;
h1=(y11-y00)*sin(ath)/un;h1=h1*k;h1=rnd(h1)/k;
h2=(y22-y00)*sin(ath)/un;h2=h2*k;h2=rnd(h2)/k;
h=lh;ht=lyn h h1 cma h2;print ht}
#-H1,H2
if(N==2 && x01!=x02 && y01!=y02){dy=y02-y01;dx=x02-x01;
a0=dy/dx;ang=atan2(dy,dx);ath=pi/2-ang;
b0=y01-a0*x01;b1=y11-a0*x11;b2=y21-a0*x21;
y00=a0*x11+b0;y22=a0*x11+b2;
h1=(y11-y00)*sin(ath)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h2=(y22-y00)*sin(ath)/un;h2=h2*k;h2=rnd(h2)/k;h2=-h2;
h=lh;ht=lyn h h1 cma h2;print ht}
#LG基準高さ
#LV
if(N==3){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;
h=lv;ht=lgn h h1;print ht}
}
#####
#ユーザー定義関数
#四捨五入
function rnd(x){if(x>=0){return int(x+0.5)}else{return -int(-x+0.5)}}

| | コメント (0) | トラックバック (0)

« 2008年2月 | トップページ | 2008年4月 »