« 2次元配列のソート2 | トップページ | 配列複写(ソリッド図形対応) »

2018年10月24日 (水)

配列複写

配列複写の外部変形です。

対象図形:点・線・曲線・円・円弧・楕円・楕円弧
XYの区切りは⇒::(コロン)
※複写数は、各方向50回まで

◇tmp.splice(1,2,x,y)
 ⇒配列 tmp の1,2列を、x,y で置換します。

10/25 誤記修正
@if(0==1) //配列複写
@echo off
REM #jww
REM #cd
REM #h1 範囲内のデータのみを選択
REM #hc 図形を範囲選択してください
REM #ht10 ブロック図形除外
REM #ht30 寸法図形除外
REM #ht40 ソリッド図形除外
REM #c 移動量(X:Y)を入力してください 例)25:35
REM #c 複写数(m:n)を入力してください 例)3:5 
REM #e
echo %1 >temp.txt
echo %2 >>temp.txt
type jwc_temp.txt>>temp.txt
cscript //nologo //e:jscript %0
del temp.txt
goto:eof
@end
//ファイルオープン
fs=new ActiveXObject("Scripting.FileSystemObject")
w=fs.CreateTextFile("jwc_temp.txt")
r=fs.OpenTextFile("temp.txt")
//初期設定
sp=" " //スペース
lmt=50 //複写数Max.
n=0;i=0;j=0
//各データ取得
while (!r.AtEndOfLine) {
data=r.ReadLine()
//移動量取得
if(/:/.test(data)){
dxy=data.split(":")
if(n==0){
dx=dxy[0];dy=dxy[1] //移動量
}else{
nx=dxy[0];ny=dxy[1] //複写数
//複写数制限
if(nx>lmt){nx=lmt}
if(ny>lmt){ny=lmt}
}n=n+1}
else if(/hq/.test(data)){} //"hq"スキップ
//線データ取得
else if(/^ /.test(data)){
tmp=data.split(/\s+/)
x0=tmp[0];y0=tmp[1];x1=tmp[2];y1=tmp[3]
//xy座標計算
for(i=0;i<nx;i++)for(j=0;j<ny;j++){
xs=parseFloat(x0)+dx*i
ys=parseFloat(y0)+dy*j
xe=parseFloat(x1)+dx*i
ye=parseFloat(y1)+dy*j
topt=[xs,ys,xe,ye]
opt=topt.join(sp)
if(i==0 && j==0){}else{
w.WriteLine(opt)
}}}
//円・データ取得
else if(/ci|pt/.test(data)){
tmp=data.split(/\s+/)
x0=tmp[1];y0=tmp[2]
//xy座標計算
for(i=0;i<nx;i++)for(j=0;j<ny;j++){
x=parseFloat(x0)+dx*i
y=parseFloat(y0)+dy*j
tmp.splice(1,2,x,y)
opt=tmp.join(sp)
if(i==0 && j==0){}else{
w.WriteLine(opt)
}}}else{
w.WriteLine(data)
}}
//ファイルクローズ
r.Close();w.Close()
//対象図形:点/線/曲線、円/円弧、楕円/楕円弧
//2018.10.24 by somem

|

« 2次元配列のソート2 | トップページ | 配列複写(ソリッド図形対応) »

コメント

2度とも結果は同じでした。
文章の一部が欠けます。

お手数ですが削除願います。

投稿: 通りすがり | 2018年10月25日 (木) 15時21分

通りすがりさん、こんばんは。

削除しました、ご了解ください。

投稿: somem | 2018年10月25日 (木) 19時08分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 配列複写:

« 2次元配列のソート2 | トップページ | 配列複写(ソリッド図形対応) »