2009年10月13日 (火)

バルーン

2点を指定して、バルーンを作図する外部変形です。

1.円の半径は、書込み文字種の高さに対応 (3~5を推奨)                  2.線色・文字色は、書込み線色で作図                              3.引出線角度は、任意角/15°毎 (batファイルを編集)                       4.引出線先端は、矢印/点マーカ (awkファイルを編集)                     5.引出線矢印は、曲線属性化                                   6.番号入力時、スキップ(左 or 右クリック)で連番作図可               

Balloon

balloon.bat
--------------------
@REM バルーン
@echo off
REM
REM #jww
REM #cd
REM #1/ 始点を指定してください(15°毎)
REM REM #1- 始点を指定してください(任意角)
REM #2 円中心を指定してください
REM #c 番号(半角)を入力してください | 連番はスキップ |
REM #hr
REM #e
REM
copy jwc_temp.txt+nbr.txt
jgawk -vN=%1 -f balloon.awk jwc_temp.txt>temp.txt
rename nbr.txt t_nbr.txt
jgawk -vN=%1 'BEGIN{if(N+0!=0){print "stN",N;exit}}NR==1{N=$2;N=N+1;print "stN",N}' t_nbr.txt>nbr.txt
copy temp.txt jwc_temp.txt
del temp.txt
del t_nbr.txt
REM
REM 任意角度にする場合は、6行目と7行目の"REM"を変更してください。
--------------------

◇初回作図時に番号が作図できない不具合を修正 10/14                   ◇データ処理の不具合を修正 10/15                                   

balloon.awk
--------------------
####### バルーン #######
##### 初期設定 #####
BEGIN{
pi=atan2(0,-1);dq="\"";
#点マーカ倍率
ms=0.2;
#円半径補正
cl=2;
#文字間隔
sp=0;
#矢印/長さ・角度
arw=3;th=pi/12;
#入力番号取得
inbr=dq N
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#文字種
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1)}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1)}
/^cn"/{next}
/^cn/{cn=substr($1,3,2)
if(cn>=1){cw=CW[cn];ch=CH[cn];cd=sp}}
/^cn0/{cw=$2;ch=$3;cd=sp}
#線色取得
/^lc/{lc=substr($1,3,3)}
#座標取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
#連番処理
/^stN/{stnbr=$2}
{if(stnbr==""){cnbr=inbr;next}if(N+0==0){nbr=stnbr+1;cnbr=dq nbr}else{cnbr=inbr}}
##### 書出し ######
END{
#縮尺補正
al=sc*arw;
r=sc*(ch+cl)/2;
#指示線角度
anr=atan2((ye-ys),(xe-xs));
#矢印座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
#引出線終点位置
xte=xe-r*cos(anr);yte=ye-r*sin(anr);
#曲線属性
print "pl";
#引出線作図
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xte,yte;
#矢印作図
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl;
#点マーカー作図
#printf "%s %.15g %.15g %.15g %d %d\n","pt",xs,ys,ms,0,7;
#円作図
printf "%s %.15g %.15g %.15g\n","ci",xe,ye,r;
#ユーザー文字指定
printf "%s %.15g %.15g %.15g %d\n","cn0",cw,ch,cd,lc;
#文字基点指定(中心)
print "cc4";
#番号作図
printf "%s %.15g %.15g %d %d %s\n","ch",xe,ye,5,0,cnbr
}
##########
##引出線の始点を点マーカで使用する場合は、
##スプリクトを修正してご利用ください。

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

2009年1月12日 (月)

引出線(15°間隔)

引出角を15°間隔で使用したい場合は、                            外部変形用バッチファイルの #1- を #1/ に変更します。               AWKファイルは、そのまま使用できますので、                               ******.awk を、使用するAWKファイル名としてください。

Leader_15

◇引出線作図用バッチファイル
--------------------
@REM 引出線
@echo off
REM
REM #jww
REM #cd
REM #1/ 始点を指定してください
REM #2 終点を指定してください
REM v6.0~
REM #f 注記を入力してください /_$1"
REM #hr
REM #e
REM
jgawk  -vCC=%1 -f ******.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------

◇引出線修正用バッチファイル
--------------------
@REM 引出線修正
@echo off
REM
REM #jww
REM #cd
REM #h1 範囲選択
REM #hc 引出線/文字を選択してください
REM #1/ 新しい始点を指定してください
REM #2 新しい終点を指定してください
REM #hr
REM #e
REM
jgawk -f leader_mod.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------

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

2009年1月11日 (日)

引出線修正

引出線を修正する外部変形です。                            

当ブログで公開している、下記の外部変形で作図した引出線に利用できます。             引出線 引出線(文字種指定) 引出線(横)   

注)汎用性はありませんが、                                    右側引出線は、左から右、左側引出線は、右から左に点を指示している場合は、       利用できる可能性があります。但し、矢印は、長さ3/角度15°となります。

<修正手順>                                               1.引出線/注記を範囲選択 ⇒ 左AM0時「確定 基点(free)」                        文字を範囲選択⇒引出線(曲線属性)を(L)クリックで追加選択がおすすめ        2.新しい始点を指定 (L)/(R)クリック                                元の始点を(R)クリックすると、終点側を修正                          3.新しい終点を指定 (L)/(R)クリック                                元の終点を(R)クリックすると、先端側を修正                         ※  2.3で、新しい始点/終点を指定すると、全体移動になります。

緑表示(識別の為)の引出線を修正した例です。

Leader_mod

--------------------
@REM 引出線修正
@echo off
REM
REM #jww
REM #cd
REM #h1 範囲選択
REM #hc 引出線/文字を選択してください
REM #1- 新しい始点を指定してください
REM #2 新しい終点を指定してください
REM #hr
REM #e
REM
jgawk -f leader_mod.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------

<leader_mod.awk>
--------------------
##### 引出線修正 #####
BEGIN{
pi=atan2(0,-1);dq="\"";ns=0;
#誤差補正
k=10000;
#矢印長さ/角度
arw=3;th=pi/12;chk=(arw+0.5);
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg];chk=(sc*chk)^2}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
#引出線データ取得
/^#/,/NF==0/{
if(substr($1,1,2)=="ly"){ly=$1}
if(substr($1,1,2)=="lc"){lc=$1}
if(substr($1,1,2)=="lt"){lt=$1}
if(NF==4){
if($1!=$3 && $2==$4){xbp=$1;ybp=$2;xbj=xbp*k;xbj=rnd(xbj)/k;if($1<$3){dir="rgt";xl=$3-$1}else{dir="lft";xl=$1-$3}}
else{if((($1-$3)^2+($2-$4)^2)<chk){next}else{ax1=$1;ay1=$2;ax2=$3;ay2=$4;axj=ax2*k;axj=rnd(axj)/k}}}
if(substr($1,1,2)=="cn"){cn=$1}
if($1=="ch"){ns=ns+1;xc[ns]=$2;yc[ns]=$3;cc[ns]=$6}
}
###
END{
#未実行指定
if(xbj!=axj){print "hq";exit}
#選択図形消去
print "hd";
#縮尺補正
al=sc*arw;
#文字位置
{for(i=1;i<=ns;i++){dxc[i]=xc[i]-xbp;dyc[i]=yc[i]-ybp}}
#引出線(新)角度
anr=atan2((ye-ys),(xe-xs));
#矢印(新)終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
#データ書出し
print ly;
print lc;
print lt;
#曲線属性化
print "pl";
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl
if(dir=="rgt"){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+xl,ye;print cn
for(i=1;i<=ns;i++){printf "%s %.15g %.15g %d %d %s\n","ch",xe+dxc[i],ye+dyc[i],5,0,cc[i]}}
if(dir=="lft"){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-xl,ye;print cn
for(i=1;i<=ns;i++){printf "%s %.15g %.15g %d %d %s\n","ch",xe+dxc[i],ye+dyc[i],5,0,cc[i]}}
}
###定義関数
#四捨五入
function rnd(x){if(x>=0){return int(x+0.5)}else{return -int(-x+0.5)}}
#####
--------------------      

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

2009年1月10日 (土)

引出線(横)

引出線の横に注記を作図するスプリクトです。                            使い方は、引出線 と同じです。                                    バッチファイルのAWKファイル名を変更してお使いください。

Leade_3

<leader3.awk>
--------------------
##### 引出線3 #####
### 線色・線種・文字種指定
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置補正
cxu=1.5;cyu=0.1;cyl=0.3;
#水平線長さ
hl=3.5;
#矢印長さ・角度
arw=3;th=pi/12;
#線色
lc="lc1";
#線種
lt="lt1";
#文字種
cn="cn4";cnn=substr(cn,3,1);
#注記(総文字数 全角50文字まで)
cc=substr(CC,3,100);
split(cc,T,"¥");tu=T[1];tl=T[2];
ccu=dq tu;ccl=dq tl;
tnu=length(tu);tnl=length(tl)
if(tnu>tnl){tn=tnu/2}else{tn=tnl/2}
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#文字幅/高さ/間隔
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1);cw=CW[cnn]}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1);ch=CH[cnn]}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1);cd=CD[cnn]}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;hl=sc*hl;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
#文字位置補正(左側注記)
dx=sc*(tn*(cw+cd));
#引出線角度
anr=atan2((ye-ys),(xe-xs));
#矢印終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
###データ書出し
#線色/線種指定
print lc;print lt;
#曲線属性化
print "pl";
#引出線作図
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl;
#右側注記
if(xs<=xe){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+hl,ye;print cn;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye+cyu,5,0,ccu;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-cyl-ch,5,0,ccl}}
#左側注記
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-hl,ye;print cn;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye+cyu,5,0,ccu
printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------

◇書込文字種で作図する場合のスプリクトです。  09.1.12 追記                      --------------------
##### 引出線(横)#####
### 書込文字種 ###
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置補正
cxu=1.5;cyu=0.1;cyl=0.3;
#水平線長さ
hl=3.5;
#矢印長さ・角度
arw=3;th=pi/12;
#線色
lc="lc1";
#線種
lt="lt1";
#注記(総文字数 全角50文字まで)
cc=substr(CC,3,100);
split(cc,T,"¥");tu=T[1];tl=T[2];
ccu=dq tu;ccl=dq tl;
tnu=length(tu);tnl=length(tl)
if(tnu>tnl){tn=tnu/2}else{tn=tnl/2}
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#>文字種(書込文字種用)
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1)}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1)}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1)}
/^cn/{if(NF==1){cn=substr($1,3,1);cw=CW[cn];ch=CH[cn];cd=CD[cn]}
if(NF==5){cw=$2;ch=$3;cd=$4}}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;hl=sc*hl;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
#文字位置補正(左側注記)
dx=sc*(tn*(cw+cd));
#引出線角度
anr=atan2((ye-ys),(xe-xs));
#矢印終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
###データ書出し
#線色/線種指定
print lc;print lt;
#曲線属性化
print "pl";
#引出線作図
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl;
#右側注記
if(xs<=xe){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+hl,ye;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye+cyu,5,0,ccu;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+hl+cxu,ye-cyl-ch,5,0,ccl}}
#左側注記
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-hl,ye;
if(tl==""){printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-ch/2-cyu,5,0,ccu}
else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye+cyu,5,0,ccu
printf "%s %.15g %.15g %d %d %s\n","ch",xe-hl-cxu-dx,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------

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

2009年1月 7日 (水)

引出線(文字種指定)

引出線で、線色/線種/文字種を指定するスプリクトです。                  バッチファイルは、AWKファイル名を変更して使用してください。                

◇線色/線種/文字種を変更する場合は、茶文字の記述を変更してください。

<leader2.awk>
--------------------
##### 引出線2 #####
### 線色・線種・文字種指定
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置・水平線補正
cxu=1.0;cyu=0.3;cyl=0.5;adl=0.5;
#矢印長さ・角度
arw=3;th=pi/12;
#線色
lc="lc1";
#線種
lt="lt1";
#文字種
cn="cn4";cnn=substr(cn,3,1);
#注記(総文字数 全角50文字まで)
cc=substr(CC,3,100);
split(cc,T,"¥");tu=T[1];tl=T[2];
ccu=dq tu;ccl=dq tl;
tnu=length(tu);tnl=length(tl)
if(tnu>tnl){tn=tnu/2}else{tn=tnl/2}
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#文字幅/高さ/間隔
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1);cw=CW[cnn]}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1);ch=CH[cnn]}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1);cd=CD[cnn]}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
dx=cxu+sc*(tn*(cw+cd)+adl);
#引出線角度
anr=atan2((ye-ys),(xe-xs));
#矢印終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
###データ書出し
#線色/線種指定
print lc;print lt;
#曲線属性化
print "pl";
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl;
if(xs<=xe){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+dx,ye;print cn;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye-cyl-ch,5,0,ccl}}
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-dx,ye;print cn;
printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------                

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

2009年1月 6日 (火)

引出線

任意角度の引出線を作図する外部変形です。

作図手順は、始点⇒終点⇒文字入力です。

◇文字間に全角で "¥"を入力すると、2行で作図します。                   例) 注記(上側)¥注記(下側)                                  ◇線・文字は、書込み線色・線種・文字種で作図されます。                   ◇引出線は、曲線属性になります。

Leader

--------------------
@REM 引出線
@echo off
REM
REM #jww
REM #cd
REM #1- 始点を指定してください
REM #2 終点を指定してください
REM v6.0~
REM #f 注記を入力してください /_$1"
REM #hr
REM #e
REM
jgawk  -vCC=%1 -f leader.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------

<leader.awk>
--------------------
##### 引出線 #####
BEGIN{
pi=atan2(0,-1);dq="\"";
#文字位置・水平線補正
cxu=1.0;cyu=0.3;cyl=0.5;adl=0.5;
#矢印長さ・角度
arw=3;th=pi/12;
#注記(総文字数 全角50文字まで)
cc=substr(CC,3,100);
split(cc,T,"¥");tu=T[1];tl=T[2];
ccu=dq tu;ccl=dq tl;
tnu=length(tu);tnl=length(tl)
if(tnu>tnl){tn=tnu/2}else{tn=tnl/2}
}
###データ取得
#縮尺
/^hs/{for(i=0;i<=9;i++)S[i]=$(i+2);
S["a"]=$12;S["b"]=$13;S["c"]=$14;
S["d"]=$15;S["e"]=$16;S["f"]=$17}
/^lg/{lg=substr($1,3);sc=S[lg]}
#文字種
/^hcw/{for(i=1;i<=10;i++)CW[i]=$(i+1)}
/^hch/{for(i=1;i<=10;i++)CH[i]=$(i+1)}
/^hcd/{for(i=1;i<=10;i++)CD[i]=$(i+1)}
/^cn/{if(NF==1){cn=substr($1,3,1);cw=CW[cn];ch=CH[cn];cd=CD[cn]}
if(NF==5){cw=$2;ch=$3;cd=$4}}
#座標値取得
/^hp1/{xs=$2;ys=$3}
/^hp2/{xe=$2;ye=$3}
###
END{
#縮尺補正
al=sc*arw;ch=sc*ch;cxu=sc*cxu;cyu=sc*cyu;cyl=sc*cyl;
dx=cxu+sc*(tn*(cw+cd)+adl);
#引出線角度
anr=atan2((ye-ys),(xe-xs));
#矢印終点座標
xwu=xs+al*cos(anr+th);ywu=ys+al*sin(anr+th);
xwl=xs+al*cos(anr-th);ywl=ys+al*sin(anr-th);
#データ書出し
#曲線属性化
print "pl";
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xe,ye;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwu,ywu;
printf "%.15g %.15g %.15g %.15g\n",xs,ys,xwl,ywl
if(xs<=xe){printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe+dx,ye;
printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe+cxu,ye-cyl-ch,5,0,ccl}}
else{printf "%.15g %.15g %.15g %.15g\n",xe,ye,xe-dx,ye
printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye+cyu,5,0,ccu
if(tl==""){print ""}else{printf "%s %.15g %.15g %d %d %s\n","ch",xe-dx+cxu,ye-cyl-ch,5,0,ccl}}
}
#####
--------------------

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

2008年12月28日 (日)

実点の数

JW_WIN専用掲示板からです。                                   実点の数を表示させる外部変形を作成してみました。                      

外部変形からバッチファイルを実行して、表示位置を指定すると、               "レイヤ0"に、同一レイヤグループ内の実点数を表示します。                                数が多くなると検証が難しいので、各点の番号を"レイヤf"に作図しています。

P_count

注)、"レイヤf"の点番号が不要の場合、茶色部分は削除できます。

--------------------
@REM 実点数表示
@echo off
REM
REM #jww
REM #cd
REM #h4  全選択
REM #0 表示位置を指定してください
REM #e
REM
jgawk 'BEGIN{dq="\\"";N=0;tp="実点/";print "lyf";print "cn3"}/^^pt/{N=N+1;nr=dq N;xp=$2;yp=$3;print "ch",xp,yp,5,0,nr}END{su=dq tp N;print "ly0";print "cn4";print "ch",0,0,5,0,su}' "jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------                  

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

2008年12月20日 (土)

線種変更

直線上の2点で、線を分割し線種を変更する外部変形です。                  画像のような板金図面の線種変更にどうぞ。

Lchange

Select

◇2点間                                                  直線を選択し、線上の2つの交点(順不問)を右クリックすると、                  交点間 ⇒ 実線(lt1) 両側 ⇒ 点線(lt3)に線種変更します。

◇実線/点線/一点鎖線                                      直線をクリックすると、指定した線種に変更します。

注)線種を変更したい場合は、バッチファイルを修正してください。                 設定は、実線(lt1)/点線(lt3)/一点鎖線(lt6)になっています。                                                   

--------------------
@REM 線種変更
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|2点間(L)|点線(R)|実線(3)|一点鎖線(4)|
REM
REM #:1
REM #1ln 直線を指定してください
REM #2 交点を指定してください
REM #3 交点を指定してください
REM #hr
REM #e
REM
REM #:2
REM #:3
REM #:4
REM #1ln 直線を指定してください
REM #hr
REM #e
REM
REM 部分変更
:1
jgawk -f lchange.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
REM 点線変更
:2
:3
:4
jgawk -vN=%1 'BEGIN{print "hd"}/^^#/,/NF==0/{if(substr($1,1,2)=="lg"){lg=$1}if(substr($1,1,2)=="ly"){ly=$1}if(substr($1,1,2)=="lc"){lc=$1}if(NF==4){x1=$1;y1=$2;x2=$3;y2=$4}}END{print lg;print ly;;print lc;if(N==2){print "lt3"}if(N==3){print "lt1"}if(N==4){print "lt6"};printf "%%.15g %%.15g %%.15g %%.15g\n",x1,y1,x2,y2}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:end
--------------------

<lchange.awk>
--------------------
### 線種変更 ###
#交点座標
/^hp2/{xa=$2;ya=$3}
/^hp3/{xb=$2;yb=$3;
if(xb<xa || xa==xb && yb>ya){x2=xb;y2=yb;x3=xa;y3=ya}else{x2=xa;y2=ya;x3=xb;y3=yb}}
#線属性取得
/^#/,/NF==0/{
#レイヤグループ取得
if(substr($1,1,2)=="lg"){lg=$1}
#レイヤ取得
if(substr($1,1,2)=="ly"){ly=$1}
#線色取得
if(substr($1,1,2)=="lc"){lc=$1}
#線座標
if(NF==4){
if($3<$1 || $1==$3 && $4>$2){x1=$3;y1=$4;x4=$1;y4=$2}else{x1=$1;y1=$2;x4=$3;y4=$4}}}
###
END{
#選択データ消去
print "hd";
#レイヤグループ/レイヤ指定
print lg;
print ly;
#線色指定
print lc;
#再作図
#2点間
if(x1==x2 && x3==x4 && y1==y2 && y3==y4){print " "}
#水平(片側変更)
if(x1==x2 && x3!=x4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
if(x1!=x2 && x3==x4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2}
#垂直(片側変更)
if(x1==x4 && y1==y2 && y3!=y4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
if(x1==x4 && y3==y4 && y1!=y2){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2}
#両側変更
if(x1!=x2 && x3!=x4 || x1==x4 && y1!=y2 && y3!=y4){print "lt3";printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2;
printf "%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4}
#実線作図
print "lt1";
printf "%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3}
### END ###
--------------------

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

2008年9月21日 (日)

2.5D高さ入力

線の交点に2.5Dの高さ/奥行きを与える外部変形です。                    同一高さ/奥行きを指定する場合にどうぞ。 

Fig_2

高さ入力 ⇒ 交点(複数可) を右クリック、                           交点の指定が終了したら、コントロールバーの 「点指示終了」 ボタンをクリック。                  2.5Dデータが作図されます。

ファイル名は、任意名 *****.bat でOKです。                                    一行スクリプトですので、 jgawk ~ >temp.txt まで改行は入れないでください。

--------------------
@REM 2.5D高さ入力
@echo off
REM
REM #jww
REM #cd
REM #c 高さhを入力してください
REM #1%d 交点をクリックしてください
REM #99#
REM #hr
REM #e
REM
jgawk -vH=%1 'BEGIN{dq="\\"";ch=dq H}/^^hq/,/^^#/{if(substr($1,1,2)=="hp"){print "c2",$2,$3,10,0,ch}}' "jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------  

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

2008年9月18日 (木)

2.5D属性

文字属性"ch"を2.5D属性"c2"に変更する外部変形です。                                     すでに、Jw_cad相談室でRuby版が公開されていますが・・・・・。                せっかく作ったので、公開します。                                 使う方がいらっしゃるかどうかわかりませんが。

2.5Dデータをレイヤ名で付加できない場合に、ご利用ください。               

Fig

使い方は、外部変形から、バッチファイルをダブルクリックするだけです。          画面上は、何も変化しません。

◇表示されている全レイヤグループの文字属性が対象です。                ◇2.5D属性の文字データが含まれていても問題ありません。、                               ◇文字コマンドで作図する場合は、文字基点を、必ず"左下"にしてください。        ◇文字コマンドで、任意の文字色を使用することができます。                                     ◇外部変形を実行すると、ブロック図形は消去されます。                   ブロック図形のあるレイヤは非表示にして実行してください。 

ファイル名は、任意名 *****.bat でOKです。                                    一行スクリプトですので、 jgawk ~ >temp.txt まで改行は入れないでください。

--------------------
@REM 2.5D属性付加
@echo off
REM
REM #jww
REM #cd
REM #h4 読取可能データ選択
REM #e
REM
jgawk 'BEGIN{print "hd"}/^^#/,/NF==0/{if($1=="ch"){$(1)="c2";print $(0)}else{print $(0)}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------             

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

2008年4月15日 (火)

R面取り(3辺)

2本の平行線と直交線の3辺をR面取りする外部変形です。

080414_cnr 

平行線1 ⇒ 平行線2 ⇒ 直交線 の順に(L)クリックしてください。

平行線1の指示点から直交線側がトリムされ、平行線1の線色で作図されます。       平行線でない場合、直交線でない場合は、未実行になります。

--------------------
@REM R面取り(3辺)
@echo off
REM
REM #jww
REM #cd
REM #1ln 平行線1を指示してください
REM #2ln 平行線2を指示してください
REm #3ln 直交線を指示してください
REM #hr
REM #e
REM
jgawk -f corner.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------------

<corner_awk>
--------------------
### R面取り(3辺)
###
###初期設定
BEGIN{pi=atan2(0,-1);k=10000}
###座標/角度取得
#指示点座標
/^hp1/{xx=$2;yy=$3}
#線色(平行線1)
/^#/,/^hhp1ln/{if(substr($1,1,2)=="lc"){lc=$1}}
#座標/角度(平行線1)
/^hhp1ln/,/^hhp2ln/{
if(NF==4){if($1>$3){x11=$3;y11=$4;x12=$1;y12=$2}else{x11=$1;y11=$2;x12=$3;y12=$4}}
if(x11==x12){if(y11>y12){y11=$4;y12=$2;ang1=90}else{ang1=90}}
if(y11==y12){ang1=0}
if(x11!=x12 && y11!=y12){a1=(y12-y11)/(x12-x11);b1=y11-a1*x11;an1=atan2(y12-y11,x12-x11);
ang1=an1*180/pi;ang1=ang1*k;ang1=rnd(ang1)/k}
}
#座標/角度(平行線2)
/^hhp2ln/,/^hhp3ln/{
if(NF==4){if($1>$3){x21=$3;y21=$4;x22=$1;y22=$2}else{x21=$1;y21=$2;x22=$3;y22=$4}}
if(x21==x22){if(y21>y22){y21=$4;y22=$2;ang2=90}else{ang2=90}}
if(y21==y22){ang2=0}
if(x21!=x22 && y21!=y22){a2=(y22-y21)/(x22-x21);b2=y21-a2*x21;an2=atan2(y22-y21,x22-x21);
ang2=an2*180/pi;ang2=ang2*k;ang2=rnd(ang2)/k}
}
#座標/角度(直交線)
/^hhp3ln/,/NF==0/{
if(NF==4){if($1>$3){x31=$3;y31=$4;x32=$1;y32=$2}else{x31=$1;y31=$2;x32=$3;y32=$4}}
if(x31==x32){if(y31>y32){y31=$4;y32=$2;ang3=90}else{ang3=90}}
if(y31==y32){ang3=180}
if(x31!=x32 && y31!=y32){a3=(y32-y31)/(x32-x31);b3=y31-a3*x31;an3=atan2(y32-y31,x32-x31);
ang3=an3*180/pi;ang3=ang3*k;ang3=rnd(ang3)/k}
}
#水平方向
{if(x31==x32){xc=x31;yc1=y11;yc2=y21;yc=(yc1+yc2)/2;r=abs(yc1-yc2)/2}
if(xx>xc){x0=xc+r;y0=yc;
xs1=x0;ys1=y11;xe1=x12;ye1=y11;
xs2=x0;ys2=y21;xe2=x22;ye2=y21;
ths=90;the=270}
if(xx<xc){x0=xc-r;y0=yc;
xs1=x0;ys1=y11;xe1=x11;ye1=y11;
xs2=x0;ys2=y21;xe2=x21;ye2=y21;
ths=270;the=90}
}
#垂直方向
{if(y31==y32){yc=y31;xc1=x11;xc2=x21;xc=(xc1+xc2)/2;r=abs(xc1-xc2)/2}
if(y31==y32 && yy>yc){x0=xc;y0=yc+r;
xs1=x11;ys1=y0;xe1=x11;ye1=y12;
xs2=x21;ys2=y0;xe2=x21;ye2=y22;
ths=180;the=0}
if(y31==y32 && yy<yc){x0=xc;y0=yc-r;
xs1=x11;ys1=y0;xe1=x11;ye1=y11;
xs2=x21;ys2=y0;xe2=x21;ye2=y21;
ths=0;the=180}
}
#任意角度
{if(x31!=x32 && y31!=y32){
xc1=(b3-b1)/(a1-a3);yc1=a1*xc1+b1;
xc2=(b3-b2)/(a2-a3);yc2=a2*xc2+b2;
D2=(xc1-xc2)^2+(yc1-yc2)^2;D=sqrt(D2);r=D/2;
xc=(xc1+xc2)/2;yc=(yc1+yc2)/2;
dx=r*cos(an1);dy=r*sin(an1)}
if(x31!=x32 && y31!=y32 && xx>xc1){x0=xc+dx;y0=yc+dy;
xs1=xc1+dx;ys1=yc1+dy;xe1=x12;ye1=y12;
xs2=xc2+dx;ys2=yc2+dy;xe2=x22;ye2=y22;
ths=ang1+90;the=ang1+270}
if(x31!=x32 && y31!=y32 && xx<xc1){x0=xc-dx;y0=yc-dy;
xs1=xc1-dx;ys1=yc1-dy;xe1=x11;ye1=y11;
xs2=xc2-dx;ys2=yc2-dy;xe2=x21;ye2=y21;
ths=ang1+270;the=ang1+90}
}
###作図
END{
dth=abs(ang3-ang1);
if(ang1!=ang2 || dth!=90){print "hq";exit};
print "hd";
print lc;
printf "%.15g %.15g %.15g %.15g\n",xs1,ys1,xe1,ye1;
printf "%s %.15g %.15g %.15g %.15g %.15g %d %d\n","ci",x0,y0,r,ths,the,1,0;
printf "%.15g %.15g %.15g %.15g\n",xs2,ys2,xe2,ye2
}
###定義関数
#絶対値
function abs(x){if(x<0){return -x}{return x}}
#四捨五入
function rnd(x){if(x>=0){return int(x+0.5)}else{return -int(-x+0.5)}}

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

2008年4月 8日 (火)

2.5D実点/補助線消去

2.5Dデータの実点/補助線を消去する外部変形用バッチファイルです。          消去対象は、線色5実点/線色5補助線種/線色6実点です。

範囲選択から左AM0時「確定 基点(free)」を実行します。 

注)                                                   1.消去対象のレイヤ以外は、非表示または、表示のみにして実行してください。      2.消去対象以外の線色5及び補助線種の図形は、選択から除外してください。                 

Erase

--------------------
@REM 実点/補助線消去
@echo off
REM
REM #jww
REM #cd
REM #h1 範囲選択
REM #hc 実点と補助線を選択してください
REM #hr
REM #e
REM
jgawk 'BEGIN{print "hd"}/^^#/,/NF==0/{if($1=="#"){next}if($1=="lc5"){next}if($1=="lt9"){n=NR;next}if(NR==n+1){next}if($1=="pn6" ^|^| $1=="pn5"){next}if($1=="pt"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

レイヤ間移動/複写 に分岐コマンドとして追加しました。

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

2008年4月 5日 (土)

2.5D角度補助線

2.5Dデータで、側面(立面)に、線色6の補助線種で                      角度補助線を作図する外部変形用バッチファイルです。

作図方法は、                                             傾斜面の下側の点をクリックし、傾斜角を示す線を(L)クリックします。

Tilt

--------------------
@REM 角度補助線作図
@echo off
REM
REM #jww
REM #cd
REM #0 始点を指定してください。(R)
REM #1ln 角度線を指定してください(L)
REM #hr
REM #e
REM
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
pause
del temp.txt                                               --------------------

レイヤ間移動/複写レイヤ名設定 に分岐コマンドとして追加しました。

| | コメント (0) | トラックバック (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月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]
}}

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

2008年3月 9日 (日)

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月 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月23日 (土)

2.5Dレイヤ間移動/複写(改)

2.5Dの側面(立面)作図では、レイヤを分けた後、基点と方向の指定が必要なので、          レイヤ間移動/複写に実点/補助線作図を外変用バッチファイルにまとめました。

それぞれの使い方は、レイヤ間移動/複写実点/補助線作図を見てください。

分岐コマンドに 角度補助線 を追加しました。 08/04/05

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

分岐コマンドに 実点/補助線消去 を追加しました。                              外変移動後に「未実行」を表示しないようにしました。 08/04/08

Layer_ch_e

< layer_ch_n.bat >                                                     --------------------
@REM レイヤ間移動/複写
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|移動 (L)|複写 (R)|基点設定 (3)|角度補助線(4)|消去 (5)|Next (6)|
REM
REM #:1
REM #:2
REM #h1 範囲選択
REM #hc 図形を矩形選択してください
REM #hr
REM #e
REM
REM #:3
REM #1 線色6実点位置を指定してください
REM #2 線色5実点位置を指定してください
REM #3 線色5補助線種の方向を指定してください
REM #hr
REM #e
REM
REM #:4
REM #0 始点を指定してください(R)
REM #1ln 角度線を指定してください(L)
REM #hr
REM #e
REM
REM #:5
REM #h1 範囲選択
REM #hc 実点と補助線を選択してください
REM #hr
REM #e
REM
REM #:6
REM #h/lyr_set_3l_n.bat
REM #e
REM
REM 移動
:1
jgawk 'BEGIN{print "hd"};/^^#/,/NF==0/{if(substr($1,1,2)=="ly"){next}if(substr($1,1,2)=="lg"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
REM 複写
:2
jgawk '/^^#/,/NF==0/{if(substr($1,1,2)=="ly"){next}if(substr($1,1,2)=="lg"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
REM 基点設定
: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
REM 角度補助線
:4
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
REM 消去
:5
jgawk 'BEGIN{print "hd"}/^^#/,/NF==0/{if($1=="#"){next}if($1=="lc5"){next}if($1=="lt9"){n=NR;next}if(NR==n+1){next}if($1=="pn6" ^|^| $1=="pn5"){next}if($1=="pt"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:6
echo #>jwc_temp.txt
:end

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

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)}}

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

2008年2月13日 (水)

レイヤ間移動/複写

図形を別レイヤに移動/複写する外変用バッチファイルです。

2.5Dデータを作成する時のレイヤ分け等にご利用ください。                    同一縮尺のレイヤグループであれば、基点を設定せずに移動/複写が可能。                                       

<操作手順>                                               1.移動/複写する図形を矩形選択                                                                     ・同一レイヤグループ内の図形のみ選択が可能です。                       ・範囲選択のコントロールバーから、線色/線種を指定することが可能です。                                2.レイヤグループバー/レイヤバーから移動先レイヤを書込みレイヤに指定します。                      ・選択図形を含むレイヤグループと異なるレイヤグループを指定することも可能                      3.左AM 0 時「確定 基点(free)」を実行                           

--------------------
@REM レイヤ間移動/複写
@echo off
goto %1
REM
REM #jww
REM #cd
REM #hm|移動 (L)|複写 (R)|
REM
REM #:1
REM #:2
REM #h1 範囲選択してください
REM #hr
REM #e
REM

REM 移動
:1
jgawk 'BEGIN{print "hd"};/^^#/,/NF==0/{if(substr($1,1,2)=="ly"){next}if(substr($1,1,2)=="lg"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

REM 複写
:2
jgawk '/^^#/,/NF==0/{if(substr($1,1,2)=="ly"){next}if(substr($1,1,2)=="lg"){next}else{print $0}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:end

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

2008年2月11日 (月)

外部変形-zP25D06

siegel さんのブログ『精進寺』で、                                 金桜さん作 「外部変形-zP25D06」が公開されました。(作者様、ありがとうございます)

*マウス指示した直線のグループレイヤ/レイヤ高さを                  2.5D用のレイヤグループ名/レイヤ名に設定することができます。

その他詳細は、siegel's BLOG 『精進寺』でどうぞ

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

2.5D実点/補助線作図

2.5D用の実点/補助線を作図する外変用バッチファイルです。

080211

操作手順は、次の通りです。                                              1.線色6実点位置を指定                                         2.線色5実点位置を指定                                       3.線色5補助線種の方向を指定

--------------------
@REM 実点/補助線作図
@echo off
REM
REM #jww
REM #cd
REM #1 線色6実点位置を指定してください
REM #2 線色5実点位置を指定してください
REM #3 線色5補助線種の方向を指定してください
REM #hr
REM #e
REM
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

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

2008年1月22日 (火)

正多角形に変換

円/円弧を正多角形/正多角形の一部に変換する外部変形です。

注)1.円弧変換の不具合を修正しました。    2/2                         2.軸角を含む円弧データに対応しました。 2/5 管理人     

2.5Dから3D-dxf を利用する場合にどうぞ。                        

作図方法は、範囲選択から 左AM 0 時「確定 基点(free)」です。              同一レイヤグループのレイヤは、同時に実行可能。                       変換した図形は、曲線属性化されます。                                                                辺の数を変更したい場合は、スプリクト"polygon.awk "の N=90を修正してください。

<polygon.bat>
--------------------
@REM 正多角形変換
@echo off
REM
REM #jww
REM #cd
REM #h1 矩形選択
REM #hr
REM #e
REM
jgawk -f polygon.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

<polygon.awk>
--------------------
#正多角形変換
#初期設定
BEGIN{N=90;pi=atan2(0,-1);thd=360/N;thr=2*pi/N;print "hd"}
#
#円/正多角形
/^#/,/NF==0/{
if($1=="#"){next}
if($1!="ci"){print $0;next}
if($1=="ci" && NF==4){
xc=$2;yc=$3;R=$4;
print "pl";
for(i=0;i<=N;i++){ang=i*thr;x[i]=xc+R*cos(ang);y[i]=yc+R*sin(ang)}
for(j=0;j<=N-1;j++){printf "%.15g %.15g %.15g %.15g\n",x[j],y[j],x[j+1],y[j+1]}
next}
#円弧/線分割
if($1=="ci" && $7==1 && NF==8){
xc=$2;yc=$3;R=$4;an1=$5;an2=$6;hk=$8*pi/180;th1=an1*pi/180;th2=an2*pi/180+hk;
print "pl";
if(an2<an1){thw=360-an1+an2;th1=th1-2*pi}else{thw=an2-an1}
}
nf=thw/thd;n=rndup(nf);
for(i=0;i<=n-1;i++){ang=i*thr+th1+hk;xa[i]=xc+R*cos(ang);
ya[i]=yc+R*sin(ang);xa[n]=xc+R*cos(th2);ya[n]=yc+R*sin(th2)}
for(j=0;j<=n-1;j++){printf "%.15g %.15g %.15g %.15g\n",xa[j],ya[j],xa[j+1],ya[j+1]}
next}
#END
#ユーザー定義関数
function rndup(x){if(x-int(x)>0){return int(x)+1}else{return int(x)}}

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

2008年1月17日 (木)

円中心補助線

円・円弧の中心位置を補助線色で作図する外部変形です。

円・円弧を含む2.5Dデータから3D-dxf を利用する時にどうぞ。                      一般の作図では、使い道はないと思います。

080117  

作図方法は、範囲選択から 左AM 0 時「確定 基点(free)」です。              同一レイヤグループのレイヤは、同時に作図可能。

注)一行スクリプトをなので、jgawk ~ >temp.txt まで、改行はありません。

REM --------------------
@REM 円中心補助線(2.5D用)
@echo off
REM
REM #jww
REM #cd
REM #h1 矩形選択
REM #hr
REM #e
REM
jgawk 'BEGIN{s=3};/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="ly"){print}if($1=="ci" )if(NF==4){print "lc9";printf "%%.15g %%.15g %%.15g %%.15g\n",$2,$3,$2+$4,$3;printf "%%.15g %%.15g %%.15g %%.15g\n",$2,$3,$2,$3+s}if(NF==8){print "lc9";printf "%%.15g %%.15g %%.15g %%.15g\n",$2,$3,$2+s,$3;printf "%%.15g %%.15g %%.15g %%.15g\n",$2,$3,$2,$3+s}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt 

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

2007年11月24日 (土)

長穴の作図

円弧の中心点と、幅を指定して長穴を作図する外部変形です。

071124

・書込み線色/線種で作図                                     ・任意角度で作図が可能  

<l_hole.bat>
--------------------
@REM 長穴の作図
@echo off
REM
REM #jww
REM #cd
REM #c 幅を入力してください |前回値/スキップ|
REM #0 始点を指示してください (L)/(R)
REM #1 終点を指示してください (L)/(R)
REM #hr
REM #e
REM
copy jwc_temp.txt+vw.txt
jgawk -vVW=%1 -f l_hole.awk jwc_temp.txt>temp.txt
rename vw.txt vvw.txt
jgawk -vVW=%1 'BEGIN{if(VW+0!=0){print "vw",VW;exit}};NR==1{print $0}' vvw.txt>vw.txt
copy temp.txt jwc_temp.txt
del temp.txt
del vvw.txt
--------------------

<l_hole.awk>
--------------------
#長穴の作図(中心点)
#πの設定
BEGIN{pi=atan2(0,-1)}
#終点座標の取得・角度計算
/^hp1/{x1=$2;y1=$3;{if(x1==0){an=pi/2;ang=180;ane=0}
{an=atan2(y1,x1);ang=an*180/pi;ans=ang+90;ane=ang+270}}}
#幅の取得
/^vw/{vw=$2}
{if(VW+0==0){VW=vw};r=VW/2}
#座標計算
{xan=r*sin(an);yan=r*cos(an);x01=xan;y01=-yan;x02=-xan;y02=yan;
x11=x1+xan;y11=y1-yan;x12=x1-xan;y12=y1+yan}
#作図
END{printf ("%s %d %d %.15g %.15g %.15g %d %d\n","ci",0,0,r,ans,ane,1,0);
printf ("%s %.15g %.15g %.15g %.15g %.15g %d %d\n","ci",x1,y1,r,ane,ans,1,0);
printf ("%.15g %.15g %.15g %.15g\n",x01,y01,x11,y11);
printf ("%.15g %.15g %.15g %.15g\n",x02,y02,x12,y12)}                                                                         

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

2007年10月28日 (日)

円の分割

円を通る直線の交点で2つの円弧に分割する外部変形です。                 例)円の一部を破線に変更する前に使用した場合

071028_1

<divide.bat>
--------------------
@REM 円分割
@echo off
REM
REM #jww
REM #cd
REM #1ci 円を指示してください
REM #2ln 線を指示してください
REM #hr
REM #e
REM
jgawk -f divide.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

<divide.awk>
--------------------
#円分割
BEGIN{pi=atan2(0,-1);hn=1;ax=0}
#
#線種/線色情報の取得
/^#/,/^hhp2/{ck1=substr($1,1,2);if(ck1=="lc"){lcl=$1}}
/^#/,/^hhp2/{ck2=substr($1,1,2);if(ck2=="lt"){ltl=$1}}
/^hhp2/,/^hhp1/{ck3=substr($1,1,2);if(ck3=="lc"){lcc=$1}}
/^hhp2/,/^hhp1/{ck4=substr($1,1,2);if(ck4=="lt"){ltc=$1}}
#円/線の座標取得
NF==4{if($1=="ci"){j=$2;k=$3;r=$4}else{x1=$1;y1=$2;x2=$3;y2=$4}}
END{
#垂直線で分割
if(x1==x2){x3=x1;x4=x1;
e=x1-j;R=r^2-e^2;Y=sqrt(R);y3=Y+k;y4=-Y+k}
#任意角度線で分割
else{p=(y2-y1)/(x2-x1);q=y1-p*x1;
a=p^2+1;b=2*(p*q-j-k*p);c=j^2+q^2-2*k*q+k^2-r^2;
M=b^2-4*a*c;m=sqrt(M);
x3=(-b+m)/2/a;x4=(-b-m)/2/a;
y3=p*x3+q;y4=p*x4+q;}
#
#円弧角の計算
dx1=x4-j;dy1=y4-k;th1=atan2(dy1,dx1);th1=th1*180/pi;
dx2=x3-j;dy2=y3-k;th2=atan2(dy2,dx2);th2=th2*180/pi;
#再作図
print "hd";print lcl;print ltl;
printf "%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2;
print lcc;print ltc;
printf "%s %.15g %.15g %.15g %.15g %.15g %d %d\n","ci",j,k,r,th1,th2,hn,ax;
printf "%s %.15g %.15g %.15g %.15g %.15g %d %d\n","ci",j,k,r,th2,th1,hn,ax}

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

2007年10月21日 (日)

延長線の作図

R面取りされた角部に延長線を作図する外部変形です。

コーナーRをクリックすると延長線が作図されます。

071020

<ext.bat>
-------------------
@REM 延長線
@echo off
REM
REM #jww
REM #cd
REM #1ci コーナーRを指示してください
REM #hr
REM #e
REM
jgawk -f ext.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

2007.11.25 始点座標の計算で、不要なprint文を削除しました。

<ext.awk>
--------------------
#延長線の作図
#
BEGIN{pi=atan2(0,-1)}
#円弧データの取得
/^ci/{x0=$2;y0=$3;R=$4;th1=$5;th2=$6;
#始点座標の計算
th1=th1*pi/180;th2=th2*pi/180;
x1=x0+R*cos(th1);y1=y0+R*sin(th1);
x2=x0+R*cos(th2);y2=y0+R*sin(th2);
#傾き/定数の計算
a1=sin(th1+pi/2)/cos(th1+pi/2);a2=sin(th2+pi/2)/cos(th2+pi/2);
b1=y1-a1*x1;b2=y2-a2*x2;
#交点座標の計算
x3=(b2-b1)/(a1-a2);
y3=(a2*b1-a1*b2)/(a2-a1)}
#
END{print "lc1";
printf "%.15g %.15g %.15g %.15g\n",x1,y1,x3,y3;
printf "%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3}

延長線の交点を作図する場合、ext.awkのEND文に2行追加します。

END{print "pn1";
printf "%s %.15g %.15g\n","pt",x3,y3;
print "lc1";
printf "%.15g %.15g %.15g %.15g\n",x1,y1,x3,y3;
printf "%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3}

071021

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

2007年8月15日 (水)

楕円の作図

長径/短径を指定して楕円を作図する外変です。

作図方法は、中心点指示⇒長径(短径)を指示⇒短径(長径)を指示

070815_5  

070815_2_3

<ellipse.bat>
--------------------
@REM 楕円の作図
@echo off
REM
REM #jww
REM #cd
REM #0 中心位置を指定してください
REM #1 長径(短径)を指示してください
REM #2 短径(長径)を指示してください
REM #hr
REM #e
REM
jgawk -f ellipse.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

<ellipse.awk>
--------------------
#楕円の作図
#初期設定
BEGIN{pi=atan2(0,-1)}
#半径/軸角の取得
/^hp1/{xh=$2;yh=$3;rh=sqrt(xh^2+yh^2);
angh=atan2(yh,xh);angh=angh*180/pi}
/^hp2/{xv=$2;yv=$3;rv=sqrt(xv^2+yv^2)}
END{r=rh;k=rv/rh;ang=angh;
#楕円データの書出し
printf "%s %d %d %.15g %d %d %.15g %.15g\n","ci",0,0,r,0,360,k,ang}

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

2007年8月14日 (火)

円弧長

円弧長を測定する外変です。半径/円弧角/円弧長を同時に表記します。          作図方法は、円弧選択(Lクリック)⇒作図位置を指示。                    円の場合は、円弧角360°で円周長を表記します。                              楕円/楕円弧には対応していません。

注)使用する場合は、自己責任でお願いします。m(__)m                           

070814_2

<arc.bat>
--------------------
@REM 円弧長測定
@echo off
REM
REM #jww
REM #cd
REM #1ci 円弧を指定してください
REM #0 表示位置を指定してください
REM #hr
REM #e
REM
jgawk -f arc.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

<arc.awk>
-------------------------
#円弧長の測定
#初期設定
BEGIN{pi=atan2(0,-1);dq="\"";k2=100;k3=1000;sp=5}
#円弧データの読込み
/^ci/{if(NF==8 && $7==1){x0=$2;y0=$2;r0=$4;th1=$5;th2=$6}
{if(th1>th2){ang0=360-th1+th2}if(th2>th1){ang0=th2-th1}}
{if(NF==4){r0=$4;ang0=360}}
{if(NF==8 && $7!=1){el=1}}}
#測定結果の出力
END{if(el==1){print "ch",0,0,1,0,dq,"楕円です"}
else{r=r0*k3;r=rnd(r)/k3;
ang=ang0*k2;ang=rnd(ang)/k2;
arc=r0*ang0*pi/180;arc=arc*k3;arc=rnd(arc)/k3;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,0,1,0,dq,"r=",r;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,-sp,1,0,dq,"ang=",ang;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,-2*sp,1,0,dq,"rθ=",arc}}
#ユーザー定義関数
#四捨五入
function rnd(x){if(x>0) return int(x+0.5)}

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

2007年7月30日 (月)

イラスト風に間取図

Jw_cadで間取図の一部をイラスト風に作図すると・・・・・。                    趣味で作った外変ですが、興味のある方はお試しください。 

 070730

作図は、水平/垂直方向だけに対応。                                         

--------------------
@REM 間取図
@echo off
goto %1
REM #jww
REM #cd
REM #hm|壁(L)|窓(R)|左ドア(3)|右ドア(4)|柱(5)|
REM
REM #:1
REM #:2
REM #:3
REM #:4
REM #0 1点目を指定してください
REM #1 2点目を指定してください
REM #hr
REM #e
REM #:5
REM #0 中心点を指定してください。
REM #hr
REM #e
:1
:2
:3
:4
jgawk -vN=%1 -f layout.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:5
jgawk -vN=%1 -f layout.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end
:end
--------------------

<layout.awk>
--------------------
#間取り図
###
BEGIN{wt=120;dt=wt/2;ds=50}
###
#終点座標
/^hp1/{xe=$2;ye=$3}
#壁
{if(N==1 && xe>0 && ye==0)
{x1=dt;y1=-dt;x2=x1;y2=dt;x3=xe-dt;y3=y2;x4=xe-dt;y4=y1}}
{if(N==1 && xe<0 && ye==0)
{x1=-dt;y1=-dt;x2=x1;y2=dt;x3=xe+dt;y3=y2;x4=xe+dt;y4=y1}}
{if(N==1 && xe==0 && ye>0)
{x1=-dt;y1=dt;x2=x1;y2=ye-dt;x3=dt;y3=y2;x4=x3;y4=y1}}
{if(N==1 && xe==0 && ye<0)
{x1=-dt;y1=-dt;x2=x1;y2=ye+dt;x3=dt;y3=y2;x4=dt;y4=y1}}
#引違い戸
{if(N==2 && xe>0 && ye==0)
{x1=dt;y1=-dt;x2=xe-dt;y2=y1;x3=x1;y3=dt;x4=x2;y4=y3;
x5=xe/2-ds;y5=-wt/6;x6=x2;y6=y5;x7=x1;y7=wt/6;x8=xe/2+ds;y8=y7;
x9=xe/2;y9=-dt-ds;x10=x9;y10=dt+ds}}
{if(N==2 && xe<0 && ye==0)
{x1=xe+dt;y1=-dt;x2=-dt;y2=y1;x3=x1;y3=dt;x4=x2;y4=y3;
x5=xe/2-ds;y5=-wt/6;x6=x2;y6=y5;x7=x1;y7=wt/6;x8=xe/2+ds;y8=y7;
x9=xe/2;y9=-dt-ds;x10=x9;y10=dt+ds}}
{if(N==2 && xe==0 && ye>0)
{x1=dt;y1=dt;x2=x1;y2=ye-dt;x3=-dt;y3=y1;x4=x3;y4=y2
x5=wt/6;y5=ye/2-ds;x6=x5;y6=y2;x7=-wt/6;y7=y1;x8=x7;y8=ye/2+ds;
x9=-dt-ds;y9=ye/2;x10=dt+ds;y10=y9}}
{if(N==2 && xe==0 && ye<0)
{x1=dt;y1=ye+dt;x2=x1;y2=-dt;x3=-dt;y3=ye+dt;x4=x3;y4=y2
x5=wt/6;y5=ye/2-ds;x6=x5;y6=y2;x7=-wt/6;y7=y1;x8=x7;y8=ye/2+ds;
x9=-dt-ds;y9=ye/2;x10=dt+ds;y10=y9}}
#左ドア
{if(N==3 && xe>0 && ye==0)
{x1=dt;y1=-dt;x2=xe-dt;y2=y1;x3=x1;y3=dt;x4=x2;y4=y3;
x5=dt+ds;y5=y1;r=xe-wt-ds;x6=x5;y6=y5-r;th0=270;th1=0}}
{if(N==3 && xe<0 && ye==0)
{x1=-dt;y1=dt;x2=xe+dt;y2=y1;x3=x1;y3=-dt;x4=x2;y4=y3;
x5=-dt-ds;y5=y1;r=-xe-wt-ds;x6=x5;y6=y5+r;th0=90;th1=180}}
{if(N==3 && xe==0 && ye>0)
{x1=dt;y1=dt;x2=x1;y2=ye-dt;x3=-dt;y3=y1;x4=x3;y4=y2
x5=x1;y5=dt+ds;r=ye-wt-ds;x6=x5+r;y6=y5;th0=0;th1=90}}
{if(N==3 && xe==0 && ye<0)
{x1=-dt;y1=-dt;x2=x1;y2=ye+dt;x3=dt;y3=y1;x4=x3;y4=y2
x5=x1;y5=-dt-ds;r=-ye-wt-ds;x6=x5-r;y6=y5;th0=180;th1=270}}
#右ドア
{if(N==4 && xe>0 && ye==0)
{x1=dt;y1=dt;x2=xe-dt;y2=y1;x3=x1;y3=-dt;x4=x2;y4=y3;
x5=dt+ds;y5=y1;r=xe-wt-ds;x6=x5;y6=y5+r;th0=0;th1=90}}
{if(N==4 && xe<0 && ye==0)
{x1=-dt;y1=-dt;x2=xe+dt;y2=y1;x3=x1;y3=dt;x4=x2;y4=y3;
x5=-dt-ds;y5=y1;r=-xe-wt-ds;x6=x5;y6=y5-r;th0=180;th1=270}}
{if(N==4 && xe==0 && ye>0)
{x1=-dt;y1=dt;x2=x1;y2=ye-dt;x3=dt;y3=y1;x4=x3;y4=y2
x5=x1;y5=dt+ds;r=ye-wt-ds;x6=x5-r;y6=y5;th0=90;th1=180}}
{if(N==4 && xe==0 && ye<0)
{x1=dt;y1=-dt;x2=x1;y2=ye+dt;x3=-dt;y3=y1;x4=x3;y4=y2
x5=x1;y5=-dt-ds;r=-ye-wt-ds;x6=x5+r;y6=y5;th0=270;th1=0}}
#柱
{if(N==5){x1=-dt;y1=-dt;x2=-dt;y2=dt;x3=dt;y3=y2;x4=x3;y4=y1}}
###
END{
if(N==1 || N==5){printf "%s %.15g %.15g %.15g %.15g %.15g %.15g %.15g %.15g\n","sl",x1,y1,x2,y2,x3,y3,x4,y4}
if(N==2){printf"%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2;
printf"%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4;
printf"%.15g %.15g %.15g %.15g\n",x5,y5,x6,y6;
printf"%.15g %.15g %.15g %.15g\n",x7,y7,x8,y8;
print"lt5";printf"%.15g %.15g %.15g %.15g\n",x9,y9,x10,y10}
if(N==3 || N==4){printf"%.15g %.15g %.15g %.15g\n",x1,y1,x2,y2;
printf"%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4;
printf"%.15g %.15g %.15g %.15g\n",x5,y5,x6,y6;
print"lt5";printf"%s %.15g %.15g %.15g %.15g %.15g %.15g %.15g","ci",x5,y5,r,th0,th1,1,0}}
 

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

2007年7月15日 (日)

線色変更

選択図形から、「指定線色」図形を「書込線色」に変更する外変用バッチファイルです。           

注)                                                   1.ブロック図形は、選択図形から除外して実行してください。                  2線色変更しないレイヤは、非表示または表示のみレイヤにしてください。

<操作手順>                                             外変起動⇒書込線色指定⇒変更する線色番号を入力⇒範囲選択⇒確定(左AM0時)                 

--------------------
@REM 線色変更
@echo off
REM
REM #jww
REM #cd
REM #c 線色番号を指定してください
REM #h1 範囲選択
REM #hr
REM #e
REM
jgawk -vN=%1 'BEGIN{print "hd";n=N;lcn="lc" n};/^^hq/,/^^#/{if(substr($1,1,2)=="lc"){lc=$1}};/^^#/,/NF==0/{if($1=="#"){next}if($1==lcn){print lc}else{print}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------- 

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

2007年7月14日 (土)

線属性変更

選択図形の「線属性」を書込線色/書込線種に変更する外変用バッチファイルです。       変更する「線属性」は、範囲選択前に「線属性設定」で設定してください。                   既作図図形がある場合は、左AM6時「属性取得」が使用できます。

--------------------
@REM 線属性変更
@echo off
REM
REM #jww
REM #cd
REM #h2 範囲選択
REM #hr
REM #e
REM
jgawk 'BEGIN{print "hd"};/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="lc"){next}if(substr($1,1,2)=="lt"){next}else{print}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------

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

2007年7月 7日 (土)

曲線属性(拡張版)

「同一レイヤ内」の「複数の閉鎖図形」を「個別に曲線属性化」に対応しました。      「閉鎖図形」は、線色または、線種を分けて作図することが必要です。

1.直線以外の図形を選択した場合、再作図されないので注意                            2.作図線色/書込み線種で「曲線属性化」                                             3.単独の「閉鎖図形」も対応                                      4.書込みレイヤグループの図形も対応                              5.同一線色/同一線種の図形は、閉鎖図形でない場合でも、                同じグループで「曲線属性化」されます。                                                                                                                                    

REM --------------------
@REM 曲線属性化(作図線色)
@echo off
REM
REM #jww
REM #cd
REM #h1 矩形選択
REM #hr
REM #e
REM
jgawk 'BEGIN{print "hd";print "pl"};/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="ly"){print;print "pl"}if(substr($1,1,2)=="lc"){print;print "pl"}if(substr($1,1,2)=="lt"){print "pl"}if(NF==4){printf "%%.15g %%.15g %%.15g %%.15g\n",$1,$2,$3,$4}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
REM --------------------

書込み線色/書込み線種で「曲線属性化」する場合のスクリプトは、

jgawk 'BEGIN{print "hd";print "pl"};/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="ly"){print;print "pl"}if(substr($1,1,2)=="lc"){print "pl"}if(substr($1,1,2)=="lt"){print "pl"}if(NF==4){printf "%%.15g %%.15g %%.15g %%.15g\n",$1,$2,$3,$4}}' jwc_temp.txt>temp.txt

注) jwc_temp.txtに書出された"pl"は、線データの直前だけが有効です。

| | コメント (3) | トラックバック (1)

2007年6月30日 (土)

曲線属性

複数のレイヤに作図された閉鎖図形を同時に曲線属性にするバッチファイルです。     Jwwで日本地図作成中の方のご要望で作成してみました。(^o^)     

操作は、矩形選択から左AM0時「確定 基点(free)」です。

1.書込みレイヤグループのレイヤのみ有効、図形はレイヤ毎に作図してください。    2.線以外の図形を選択すると、"hd"コマンドで消去されるので注意。                              3.書込み線種/線色で実行してください。

--------------------
@REM 曲線属性化
@echo off
REM
REM #jww
REM #cd
REM #h1 矩形選択
REM #hr
REM #e
REM
jgawk 'BEGIN{print "hd";print "pl"};/^^#/,/NF==0/{if($1=="#"){next}if(substr($1,1,2)=="ly"){print;print "pl"}if(NF==4){printf "%%.15g %%.15g %%.15g %%.15g\n",$1,$2,$3,$4}}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

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

2007年6月12日 (火)

六角形の作図

中心点と対辺の間隔を指定して六角形を作図する外変です。                   外変用バッチファイルとスクリプトファイルの他に、前回値を保存するテキストファイル wd.txt が必要になります。wd.txt 内には、何も記述しなくてOKです。 

<hex.bat>
---------------
@REM 六角形の作図
@echo off
goto %1

REM #jww
REM #cd
REM #hm|縦(L)|横(R)|
REM
REM #:1
REM #:2
REM #0 中心点を指示してください
REM #c 対辺の間隔を入力してください|前回値/スキップ|
REM #hr
REM #e
:1
:2
jgawk -vN=%1 -vWD=%2 -f hex.awk jwc_temp.txt wd.txt>jwc_temp.txt
rename wd.txt wwd.txt
jgawk -vWD=%2 'BEGIN{if(WD+0!=0){print "wd",WD;exit}};NR==1{print}' wwd.txt>wd.txt
del wwd.txt
goto end
:end

<hex.awk>
---------------
#六角形
BEGIN{rt3=sqrt(3)}
#座標計算
/^wd/{wd=$2}{if(WD+0==0)WD=wd}{x=WD/2;y=rt3*x/3;yt=2*rt3*x/3}
#作図
END{
#縦方向
{if(N==1)
{printf "%.15g %.15g %.15g %.15g\n",x,-y,x,y
printf "%.15g %.15g %.15g %.15g\n",x,y,0,yt
printf "%.15g %.15g %.15g %.15g\n",0,yt,-x,y
printf "%.15g %.15g %.15g %.15g\n",-x,y,-x,-y
printf "%.15g %.15g %.15g %.15g\n",-x,-y,0,-yt
printf "%.15g %.15g %.15g %.15g\n",0,-yt,x,-y}}
#横方向
{if(N==2)
{printf "%.15g %.15g %.15g %.15g\n",yt,0,y,x
printf "%.15g %.15g %.15g %.15g\n",y,x,-y,x
printf "%.15g %.15g %.15g %.15g\n",-y,x,-yt,0
printf "%.15g %.15g %.15g %.15g\n",-yt,0,-y,-x
printf "%.15g %.15g %.15g %.15g\n",-y,-x,y,-x
printf "%.15g %.15g %.15g %.15g\n",y,-x,yt,0}}
}

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

2007年5月19日 (土)

有限構築線

無限線ではありませんが、水平/垂直/角度に対応した有限の構築線を作図する   外変です。定規とコンパスで作図してた時代は、こんな感じだったかな。

設計に使用する場合は、自己責任でお願いします。

070519_3

作図方向の切換えは、キーボードの 1~9 が使用できます。                    水平/垂直は、読取範囲外で L または、Rクリックで可能。                  作図方法は、コントロールバーに表示されます。

2007.11.23 前回値の取得に問題があった為、一部修正しました。

<eline.bat>
--------------------
@REM 有限構築線
@echo off
goto %1

REM #jww
REM #cd
REM #hm|水平 (L)|垂直 (R)|角度 (3)|2点 (4)|2点間 (5)|平行 (6)|直交 (7)|円 (8)|トリム (9)|

REM #:1
REM #:2
REM #0 基点を指示してください (L/R)
REM #hr
REM #e

REM #:3
REM #0 基点を指示してください (L/R)
REM #c 角度を入力してください |前回値/スキップ|
REM #hr
REM #e

REM #:4
REM #:5
REM #0 始点を指示してください (L/R)
REM #1 終点を指定してください (L/R)
REM #hr
REM #e

REM #:6
REM #:7
REM #0 基点を指示してください (L/R)
REM #1ln 基準線を指定してください (L)
REM #hr
REM #e

REM #:8
REM #0 中心点を指示してください (L/R)
REM #c 半径を入力してください |前回値/スキップ|
REM #hr
REM #e

REM #:9
REM #1ln トリムする線を指示してください(L)
REM #2 トリムする側を指示してください(L)
REM #3 線上の交点を指示してください(R)
REM #hr
REM #e

:1
:2
:4
:5
:6
:7
:9
jgawk  -vN=%1 -f eline.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:3
copy jwc_temp.txt+ve.txt
jgawk  -vN=%1 -vVE=%2 -f eline.awk jwc_temp.txt>temp.txt
rename ve.txt vve.txt
jgawk -vVE=%2 'BEGIN{if(VE+0 !=0){print "ve",VE;exit}};NR==1{print $0}' vve.txt>ve.txt
copy temp.txt jwc_temp.txt
del temp.txt
del vve.txt
goto end

:8
copy jwc_temp.txt+vc.txt
jgawk  -vN=%1 -vVC=%2 -f eline.awk jwc_temp.txt>temp.txt
rename vc.txt vvc.txt
jgawk -vVC=%2 'BEGIN{if(VC+0 !=0){print "vc",VC;exit}};NR==1{print $0}' vvc.txt>vc.txt
copy temp.txt jwc_temp.txt
del temp.txt
del vvc.txt
goto end

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

<eline.awk>
--------------------
#有限構築線
BEGIN{pi=atan2(0,-1);ed=10000;h=-1}
#1-----水平線-----
{if(N==1){xb=-ed;yb=0;xe=ed;ye=0}}
#2-----垂直線-----
{if(N==2){xb=0;yb=-ed;xe=0;ye=ed}}
#3-----角度線-----
/^ve/{ve=$2}
{if(VE+0 == 0){VE=ve}}
{if(N==3){an=pi*VE/180;x1=h*cos(an);y1=h*sin(an);
xb=ed*x1;yb=ed*y1;xe=-xb;ye=-yb}}
#4-----2点指示-----
/^hp1/{x1=$2;y1=$3;an=atan2(y1,x1)}
{if(N==4){xb=ed*h*cos(an);yb=ed*h*sin(an);xe=-xb;ye=-yb}}
#5-----2点間線-----
{if(N==5){xb=0;yb=0;xe=x1;ye=y1}}
#6-----平行線-----
NF==4{x1=$1;y1=$2;x2=$3;y2=$4;an=atan2((y2-y1),(x2-x1))}
{if(N==6){xb=ed*h*cos(an);yb=ed*h*sin(an);xe=-xb;ye=-yb}}
#7-----直交線-----
{if(N==7){xb=ed*h*cos(an+pi/2);yb=ed*h*sin(an+pi/2);xe=-xb;ye=-yb}}
#8-----円-----
/^vc/{vc=$2}
{if(VC+0 == 0){VC=vc}}
{if(N==8){xr=0;yr=0;r=VC}}

#9-----トリム-----
/^hp2/{xc=$2}
/^hp3/{xe=$2;ye=$3}
{xs=x1;ys=y1;xt=x2;yt=y2}
{if(xt<=xs){xs=x2;ys=y2;xt=x1;yt=y1}}
{if(N==9 && xc>=xe){xb=xs;yb=ys}}
{if(N==9 && xc<=xe){xb=xt;yb=yt}}
END{
{if(N==8){printf("%s %g %g %.15g\n","ci",xr,yr,r);exit}}
{if(N==9){print "hd"}}
printf("%.15g %.15g %.15g %.15g\n",xb,yb,xe,ye)}

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

2007年5月12日 (土)

破断線の作図(改)

破断線作図のスクリプトファイルを変更しました。

水平/垂直方向に作図する終点の位置を角度で範囲設定しています。               設定は、X軸/Y軸に対して±3°以内。

-----< brk_line.awk >-----

#破断線の作図
#定数の設定
BEGIN{
   pi=atan2(0,-1);
   th=15;ang=th*pi/180;sc=1;w=1.1;h=2;
   x0=0;y0=0;pth=3;
   an1=pth*pi/180;an2=(180-pth)*pi/180;an3=(90-pth)*pi/180;
   an4=(90+pth)*pi/180;an5=(-90+pth)*pi/180;an6=(-90-pth)*pi/180;

   lt="lt1" ;lc="lc1"
}
#終点座標の読取り
   /^hp1/{x1=$2;y1=$3}
#縮尺
   /^hs/{for(i=0;i<=9;i++) S[i]=$(i+2);
    S["a"]=$12;S["b"]=$13;S["c"]=$14;
    S["d"]=$15;S["e"]=$16;S["f"]=$17
}
   /^lg/{lg=substr($1,3);sc=S[lg]
}
#破断記号の座標計算
{
   an=atan2(y1,x1)}
{
   if(an>=-an1 && an<=an1){an=0;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{
   if(an>=an2 && an<=pi){an=pi;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}

}
{
   if(an>=-pi && an<=-an2){an=pi;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{

   if(an>=an3 && an<=an4){an=pi/2;x1=0;x2=0;x5=0; 
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)}
}
{
   if(an>=an6 && an<=an5){an=-pi/2;x1=0;x2=0;x5=0; 
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)}

}

   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an);
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
{
   x3=x1/2-sc*h*cos(pi/2-an-ang);y3=y1/2+sc*h*sin(pi/2-an-ang);
   x4=x1/2+sc*h*cos(pi/2-an-ang);y4=y1/2-sc*h*sin(pi/2-an-ang);
}
#各座標の出力
END{
  print lt;print lc;
  printf ("%.15g %.15g %.15g %.15g\n",x0,y0,x2,y2);
  printf ("%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3);
  printf ("%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4);
  printf ("%.15g %.15g %.15g %.15g\n",x4,y4,x5,y5);
  printf ("%.15g %.15g %.15g %.15g\n",x5,y5,x1,y1);
}
#----- 注記 -----
#1.線色は、"lc1"で線色1に設定しています。例)線色2にする場合は"lc2"に変更。
#2.pthを変更すると、水平/垂直方向に作図する角度範囲が変わります。

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

2007年5月 9日 (水)

破断線の作図

任意の2点を指定して、破断線を作図する外部変形です。                   始点と終点を通る線が、水平/垂直に近い場合は、水平/垂直方向に作図します。    

07/5/10  wdの設定値を5から2に変更しました。                          設定は、終点位置とX軸/Y軸からの距離が ±2(図寸)以内。

右AM9時「線上点・交点」が使用できます。但し、水平/垂直方向に作図する場合、    指示線は、水平線/垂直線を使用してください。

-----< 破断線.bat >-----

@REM 破断線の作図
@echo off

REM #jww
REM #cd
REM #0 始点を指示してください。(L)/(R)
REM #1 終点を指示してください。(L)/(R)
REM #hr
REM #e

jgawk -f brk_line.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
--------------

-----< brk_line.awk >-----

#破断線の作図
#定数の設定
BEGIN{
  pi=atan2(0,-1);
  ang=15*pi/180;sc=1;w=1.1;h=2;
  x0=0;y0=0;wd=2
  lt="lt1" ;lc="lc1"
}
#終点座標の読取り
  /^hp1/{x1=$2;y1=$3}
#縮尺
  /^hs/{for(i=0;i<=9;i++) S[i]=$(i+2);
   S["a"]=$12;S["b"]=$13;S["c"]=$14;
   S["d"]=$15;S["e"]=$16;S["f"]=$17
}
  /^lg/{lg=substr($1,3);sc=S[lg]
}
#破断記号の座標計算
{
  if(x1>=-wd*sc && x1<=wd*sc){an=pi/2;x1=0;x2=0;x5=0;
  y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
  {an=atan2(y1,x1);
  x2=x1/2-sc*w*cos(an);
  x5=x1/2+sc*w*cos(an);
  y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
  if(y1>=-wd*sc && y1<=wd*sc){an=0;y1=0;y2=0;y5=0;
  x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{
  x3=x1/2-sc*h*cos(pi/2-an-ang);y3=y1/2+sc*h*sin(pi/2-an-ang);
  x4=x1/2+sc*h*cos(pi/2-an-ang);y4=y1/2-sc*h*sin(pi/2-an-ang);
}
#各座標の出力
END{
  print lt;print lc;
  printf ("%.15g %.15g %.15g %.15g\n",x0,y0,x2,y2);
  printf ("%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3);
  printf ("%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4);
  printf ("%.15g %.15g %.15g %.15g\n",x4,y4,x5,y5);
  printf ("%.15g %.15g %.15g %.15g\n",x5,y5,x1,y1);
}
#----- 注記 -----
#1.線色は、"lc1"で線色1に設定しています。#線色2にする場合は"lc2"に変更。
#2.wdを変更すると、水平/垂直方向に作図する指示点範囲が変わります。

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

2007年4月30日 (月)

中心線の再作図

外形から、複線で円の中心線を作図する場合がよくあります。                  円を作図後、中心線を一点鎖線に再作図する外変を考えてみました。            

作図方法は、矩形選択⇒左AM0時「確定 基点(free)」                       

注)1.円だけの場合でも、中心線は作図されます。                           2.円/中心線以外の選択図形は、実行後消去されるので注意。

070430_1

---------------

@REM 中心線再作図
@echo off
goto %1

REM #jww
REM #cd
REM #hm|垂直(L)|水平(R)|

REM #:1
REM #h2 範囲を指定してください。(矩形)
REM #hr
REM #e

REM #:2
REM #h2 範囲を指定してください。(矩形)
REM #hr
REM #e

:1
:2
echo hd>temp.txt
jgawk '/^^ci/{print}' jwc_temp.txt>>temp.txt
goto %1

:1
echo lt5 線種5>>temp.txt
echo lc1 線色1>>temp.txt
jgawk '/^^ci/{S=2.5;print $2 " " $3-$4-S " " $2 " " $3+$4+S}' jwc_temp.txt>>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:2
echo lt5 線種5>>temp.txt
echo lc1 線色1>>temp.txt
jgawk '/^^ci/{S=2.5;print $2-$4-S " " $3 " " $2+$4+S " " $3}' jwc_temp.txt>>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:end

---------------

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

2007年4月28日 (土)

円中心線

円の中心線を作図する外部変形です。単独で円を選択することもできます。         軸角/楕円には対応していません。                                 原寸以外で作図する場合は、円の外側の長さS=2.5を変更してください。

<単独で円を選択する場合>                                                                         読取範囲外でLクリック⇒円をLクリック

<複数の円を選択する場合>                                       読取範囲外でRクリック⇒矩形範囲を指定⇒左AM0時「確定 基点(free)」                                                                                

----------------

@REM 円中心線
@echo off
goto %1

REM #jww
REM #cd
REM #hm|単 (L)|範囲 (R)|

REM #:1
REM #2ci 円を選択してください。(L)
REM #hr
REM #e

REM #:2
REM #h1 範囲を指定してください。(矩形)
REM #hr
REM #e

:1
:2
echo lt5 線種5>temp.txt
echo lc1 線色1>>temp.txt
jgawk /^^ci/'{S=2.5;print $2-$4-S " " $3 " " $2+$4+S " " $3;print $2 " " $3-$4-S " " $2 " " $3+$4+S}' jwc_temp.txt>>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:END

---------------

スクリプトは、円データ  ci X Y R を選択し、                              水平線の始点/終点座標(X-R-S,Y)/(X+R+S,Y)                        垂直線の始点/終点座標(X,Y-R-S)/(X,Y+R+S)に変換しています。            Sは、円外側の中心線長さです。

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

2007年4月25日 (水)

円の移動/複写

円の移動/複写が選択可能なバッチファイルを作成しました。                     選択に関わる部分は、赤字で表記しています。参考にしてください。              選択方法は、読取範囲外でLクリックが移動/Rクリックが複写になります。              

移動量を数値で入力したい場合は、                               円上で右AM6時「オフセット」 ⇒ オフセット値入力 が可能です。               移動/複写の際、円をシングルクリックで選択したい方は、お試しください。          

尚、外変については、まだまだ勉強中の身ですので、                        利用される場合は、自己責任でお願いします。m(__)m

--------------------                                                                               @REM 円の移動/複写
@echo off
goto %1

REM #jww
REM #cd
REM #hm |移 動 (L)|複 写 (R)|

REM #:1
REM #2ci 円を選択してください。(L)
REM #0 移動する位置を指示してください。(L)/(R)
REM #hr
REM #e

REM #:2
REM #2ci 円を選択してください。(L)
REM #0 複写する位置を指示してください。(L)/(R)
REM #hr
REM #e

#:1
echo hd>temp.txt
jgawk /^^ci/'{print $1 " " 0 " " 0 " " $4}' jwc_temp.txt>>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

#:2
jgawk /^^ci/'{print $1 " " 0 " " 0 " " $4}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
goto end

:END              

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

2007年4月23日 (月)

円の移動

円の複写に一行追加しました。選択図形が消去されるので円の移動になります。

---------------                                        @REM 円の移動
@echo off

REM #jww
REM #cd
REM #2ci 円を選択してください。(L)
REM #0 移動する位置を指示してください。(L)/(R)
REM #hr
REM #e

gawk /^^ci/'{print $1 " " 0 " " 0 " " $4}' jwc_temp.txt>temp.txt
echo hd>>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt                                               ---------------

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

2007年4月22日 (日)

円の複写

awkスプリクトを利用した初めての外変です。                          動作確認用ですので、実用には向いていません。

円を選択⇒任意の位置を指定すると円が複写されます。

--------------------                                                                               @REM 円の複写
@echo off

REM #jww
REM #cd
REM #2ci 円を選択してください。(L)
REM #0 複写する位置を指示してください。(L)/(R)
REM #hr
REM #e

gawk /^^ci/'{print $1 " " 0 " " 0 " " $4}' jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt                                                                                                       ---------------                                 
                                                   

スクリプトは、Jwwが書出した円データ ci X Y R を ci 0 0 R に書換えています。     ci ⇒ 円 X⇒X座標 Y⇒Y座標 R⇒半径                                 

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

2007年4月21日 (土)

「書換え」

外部変形を利用して、十字線と円を作図するバッチファイルを作成しました。        DOSコマンドを利用して、jwc_temp.txtの内容を「書換え」ます。

---------------
@rem 外変テスト2
rem #jww

rem jwc_temp.txtの書換え
echo ci 0 0 25 #円の作図>jwc_temp.txt
echo lt5 #線種5>>jwc_temp.txt
echo lc1 #線色1>>jwc_temp.txt
echo -30 0 30 0 #中心線(水平)>>jwc_temp.txt
echo 0 -30 0 30 #中心線(垂直)>>jwc_temp.txt

type jwc_temp.txt
pause
---------------

前回と同様にして、c:\jwwに保存後、外部変形から外変テスト2を実行します。        Jwwが「読込み」を行う直前のjwc_temp.txtの内容は、次の様に書換えらます。  

ci 0 0 25 #円の作図
lt5 #線種5
lc1 #線色1
-30 0 30 0 #中心線(水平)
0 -30 0 30 #中心線(垂直)

Jwwが入出力に使用するデータ形式の詳細については、Jwwフォルダ内のJWW_SMPL.BATに記載されています。

今回、jwc_temp.txtの「書換え」にDOSコマンドを使用しましたが、                      通常、外部変形用バッチファイルにはスプリクト言語が使用されます。                             

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

2007年4月19日 (木)

「書出し」/「読込み」

外変変形の動作を確認するバッチファイルを作成してみました。
バッチファイルに「rem #jww」を記述すると、
Jwwは、jwc_temp.txtの「書出し」/「読込み」を自動的に実行します。
バッチファイルは、c:\jww に保存します。

---------------
rem 外変テスト1
rem #jww
type jwc_temp.txt
pause
---------------

外部変形のファイル選択画面から、「外変テスト1」を実行します。

File_select_3

コマンドプロンプトが起動し、jwc_temp.txtの内容が表示されます。               Jwwが、jwc_temp.txtを書出した結果です。                           すでに、Jwwフォルダ内にjwc_temp.txtがある場合は、「上書き」します。                           

Cmdexe

任意のキーを押すと、Jwwの画面左上に「未実行」が表示されます。         jwc_temp.txtの先頭行に「hq」が記述されていると、Jwwは「読込み」を中止します。                                    

N_execute

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

2007年4月17日 (火)

バッチファイル

DOSコマンドは、バッチファイルにすると、操作を連続して実行することが可能。

----------                                               REM バッチファイル
md sample
cd sample

REM ファイルの新規作成
echo testfile>test.txt
echo test>>test.txt
echo test/test>>test.txt

REM 一行追記
echo test/test/test>>test.txt

REM ファイルのコピー
copy test.txt temp.txt

REM ファイルの削除
del test.txt                                                ----------

「copy con」は、キーボード入力が必要なので
新規ファイルの作成には「echo」を使用します。

バッチファイルは、メモ帳で編集⇒拡張子 batで保存  例)test.bat

例)「マイドキュメント」フォルダにバッチファイルを保存して実行する場合           

Batch

注)「上書き」されない様に、フォルダ名/ファイル名には注意!       

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

2007年4月15日 (日)

DOSコマンド

外変のバッチファイルを作成するには、DOSコマンドを知っておいた方が良いようです。  MS-DOS時代を振り返って、ちょっとコマンドの使い方を復習してみます。

コマンドプロンプトの起動は、
スタート⇒ファイル名を指定して実行(R)⇒cmd ↓                        (住職さんよりアドバイスいただきました)  

スタート⇒すべてのプログラム⇒アクセサリ⇒コマンドプロンプトでもOKです             

注)DOSコマンド を実行する場合、「上書き」の注意メッセージは表示されません。                              (オプションが指定できるコマンドを除く)                             試される場合は、フォルダ名/ファイル名に注意してください。                                                            

Cmd_pmt_1

注)"username"には、PCに登録しているユーザー名が表示されます。

それでは、いくつかのコマンドを実行してみます。      

cd (chdir) コマンドを使って、ディレクトリをマイドキュメントに移動                      >cd my documents  ↓(Enter)

dirコマンドを使ってディレクトリの内容を確認                                                           > dir ↓

Dir_mydoc_2

md (mkdir) コマンドで新規ディレクトリ(フォルダ)sample を作成
>md sample

マイドキュメントのフォルダに sampleフォルダが追加されます。

Mydocument_1

cdコマンドでディレクトリをsampleフォルダに移動                          >cd sample

フォルダ内をウインドウで確認

Sample_2

copyコマンドでsampleフォルダtest.txtを新規作成⇒テキストを記入                      >copy con test.txt ↓                                         textfile                                                                                                       test                                                                                                     test/test

Ctrl+Zでコマンドを終了                                       ^Z ↓

Copy_test_1

typeコマンドでファイル内容を確認
>type test.txt

Type_test1_1

Type_test2_1

echoコマンドでテキストを追記します。                                     >echo test/test/test >>test.txt

Echo_ex_1

copyコマンドで別名ファイルにコピー                               >copy test.txt temp.txt

Copy_temp_1

del コマンドでtest.txtを削除                                      >del test.txt

Del_ex_1

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