配列複写(矩形)
矩形配列複写の外部変形です。
・ソリッド図形、曲線/寸法/建具/ハッチ属性に対応
・横文字を対象図形に追加
※複写後、円/円弧は、曲線属性から除外されます。
※移動量/複写回数を誤入力すると、"未実行"になります。
@if(0==1) //配列複写(矩形)
@echo off
REM #jww
REM #cd
REM #zz 線幅の設定・変更の書込み・読込みを指定
REM #h1 範囲内のデータのみを選択
REM #hc 図形を範囲選択してください
REM #ht10 ブロック図形除外
REM #c 移動量(X:Y)を入力してください 例)25:35
REM #c 複写数(m:n)を入力してください 例)3:5
REM #e
cscript //nologo //e:jscript %0 %1 %2
copy temp.txt jwc_temp.txt
del temp.txt
goto:eof
@end
//対象図形:同一レイヤグループ
// 線/曲線、点/円/円弧/楕円/楕円弧/横文字、ソリッド図形
//移動量、複写回数を誤入力すると"未実行"
//複写回数は、各方向50回に制限
/////
//コマンドライン引数
arg=WScript.Arguments
tdxy=arg(0) //移動量
tnxy=arg(1) //複写回数
//ファイルオープン
fso=new ActiveXObject("Scripting.FileSystemObject")
w=fso.CreateTextFile("temp.txt")
r=fso.OpenTextFile("jwc_temp.txt")
//初期設定
sp=" " //スペース
lmt=50 //複写数Max.
n=0;i=0;j=0;k=0;u=0
cu_l=[],data=[],arry=[],cp_xy=[]
//移動量、複写回数
dxy=tdxy.split(":");dx=dxy[0];dy=dxy[1]
nxy=tnxy.split(":");nx=nxy[0];ny=nxy[1]
//複写回数制限
if(nx>lmt){nx=lmt}
if(ny>lmt){ny=lmt}
/////
//"jwc_temp.txt"の読込み
while (!r.AtEndOfLine){
line=r.ReadLine()
//図形情報の書出し(hk~#まで)
if(n<1){
if(/hq/.test(line)){} //"hq"スキップ
else{
w.WriteLine(line)
if(/l[yct]/.test(line)){
cu_l.push(line)}
if(/#/.test(line)){
n=n+1}
}
} //if(n<1)
//選択図形データを配列に格納(#以降)
else{
data.push(line)
}
}
//配列複写の計算
for(i=0;i<nx;i++)for(j=0;j<ny;j++){
if(i==0 && j==0){}
else{
//現在レイヤ/線色/線種を書出し
for(m=0;m<cu_l.length;m++){
w.WriteLine(cu_l[m])
}
//各移動量計算、複写データ書出し
for(k=0;k<data.length;k++){
arry=data[k]
//線
if(/^ /.test(arry)){
cp_xy=arry.split(/\s+/)
for(u=0;u<3;u+=2){
cp_xy[u]=parseFloat(cp_xy[u])+i*dx
cp_xy[u+1]=parseFloat(cp_xy[u+1])+j*dy
}
w.WriteLine(cp_xy.join(sp))
}
//円・点・円ソリッド・横文字
else if(/c[ihs]|pt|s[ceog]/.test(arry)){
cp_xy=arry.split(/\s+/)
cp_xy[1]=parseFloat(cp_xy[1])+i*dx
cp_xy[2]=parseFloat(cp_xy[2])+j*dy
w.WriteLine(cp_xy.join(sp))
}
//ソリッドデータ
else if(/sl/.test(arry)){
cp_xy=arry.split(/\s+/)
for(u=1;u<cp_xy.length-1;u+=2){
cp_xy[u]=parseFloat(cp_xy[u])+i*dx
cp_xy[u+1]=parseFloat(cp_xy[u+1])+j*dy
}
w.WriteLine(cp_xy.join(sp))
}
//各種属性情報書出し
else{
w.WriteLine(arry)
}
} //for k
} //else
} //for i,j
//ファイルクローズ
r.Close();w.Close()
/////
//2018.12.15 by somem
| 固定リンク
コメント