« 2.5D環境設定 | トップページ | 2.5Dレイヤ間移動/複写(改) »

2008年2月23日 (土)

2.5Dレイヤ名設定

2.5Dの高さ/奥行きデータをレイヤ名(レイヤグループ名) に設定する外部変形です。
レイヤ名の使い方は、こちらで

<概要>
・側面(立面) は、線色6の実点/線色5の実点・補助線種を併用します。
使い方は、こちらで
・入力単位はmm、高さ/奥行きは、小数点第3位を四捨五入。
・各分岐コマンドは、属性取得から書込みレイヤに移動して実行します。
・高さ/奥行きを取得する線が平行でない場合、「未実行」となります。

<分岐コマンド>

Bunnki

◇+H/-H : 2辺を選択してレイヤの高さ/奥行きを指定
◇基点設定:3点を指定して、線色6の実点/線色5の実点・補助線を作図
◇+H1,H2/-H1,H2 : 3辺を選択して、基準線からの2面の高さ/奥行きを指定
◇LV : 2辺を選択してレイヤグループの基準高さを指定

注)
1.+H/-H/+H1,H2/-H1,H2 の選択は下図を参考にしてください。
2.レイヤ名に「#lv ***,**」を設定する場合は、「+H1,H2」からh1線を2回選択します。

Direction

<lyr_set.bat>
--------------------
@REM レイヤ/レイヤグループ名設定
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|+H (L)|-H (R)|基点設定 (3)|-H1,H2 (4)|-H1,H2 (5)|LV (6)|
REM
REM #:1
REM #:2
REM #:6
REM #1ln 基準線h0を指定してください(L)
REM #2ln 高さh1の指示線をクリック(L)
REM #hr
REM #e
REM
REM #:3
REM #1 線色6実点位置を指定してください(R)
REM #2 線色5実点位置を指定してください(R)
REM #3 線色5補助線種の方向を指示してください(R)
REM #hr
REM #e
REM
REM #:4
REM #:5
REM #1ln 基準線h0を指定してください(L)
REM #2ln 高さ(奥行き)h1の指示線をクリック(L)
REM #3ln 高さ(奥行き)h2の指示線をクリック(L)
REM #hr
REM #e
REM
:1
:2
:6
jgawk '/^^#/,/NF==0/{if(NF==4){print $0}}' jwc_temp.txt>temp.txt
jgawk -vN=%1 -f lyr_set.awk temp.txt>jwc_temp.txt
del temp.txt
goto end
:3
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
:4
:5
jgawk '/^^#/,/NF==0/{if(NF==4){print $0}}' jwc_temp.txt>temp.txt
jgawk -vN=%1 -f lyr_set.awk temp.txt>jwc_temp.txt
del temp.txt
goto end
:end
--------------------

<lyr_set.awk>
--------------------
#####レイヤ名/レイヤグループ名設定#####
#初期設定
BEGIN{
#傾き一致:6桁
j=100000;
#小数点桁数(2桁)
k=100;
#単位(mm:1)
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==1 || N==2 || N==6){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"}
###高さ/奥行き取得(水平線)
#+H
if(N==1 && y01==y02){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;
h=lh;ht=lyn h h1;print ht}
#-H
if(N==2 && y01==y02){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h=lh;ht=lyn h h1;print ht}
#+H1,H2/#lv設定
if(N==4 && y01==y02 && y11==y21){h1=(y11-y01)/un;h1=h1*k;h1=rnd(h1)/k;
h=lv;ht=lyn h h1;print ht}
#+H1,H2
if(N==4 && 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==5 && 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}
###奥行き取得(垂直線)
#+H
if(N==1 && x01==x02){h1=(x11-x01)/un;h1=h1*k;h1=rnd(h1)/k;
h=lh;ht=lyn h h1;print ht}
#-H
if(N==2 && x01==x02){h1=(x11-x01)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1
h=lh;ht=lyn h h1;print ht}
#+H1,H2
if(N==4 && 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==5 && 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}
###奥行き取得(任意角度)
#+H
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;
h1=(y11-y00)*sin(ath)/un;h1=h1*k;h1=rnd(h1)/k;
h=lh;ht=lyn h h1;print ht}
#-H
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;
h1=(y11-y00)*sin(ath)/un;h1=h1*k;h1=rnd(h1)/k;h1=-h1;
h=lh;ht=lyn h h1;print ht}
#+H1,H2
if(N==4 && 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==5 && 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}
###レイヤG高さ
#LV
if(N==6){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)}}

|

« 2.5D環境設定 | トップページ | 2.5Dレイヤ間移動/複写(改) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/94529/40235047

この記事へのトラックバック一覧です: 2.5Dレイヤ名設定:

« 2.5D環境設定 | トップページ | 2.5Dレイヤ間移動/複写(改) »