« 配列複写(ソリッド図形対応) | トップページ | JScriptで外変 »

2018年10月30日 (火)

配列複写(曲線属性)

曲線属性図形を配列複写する外部変形です。
スプリクト確認用ですので、実用的には使えません。
※直線と1種類の曲線属性図形のみに適用。

外部変形を実行すると、曲線属性は、"jwc_temp.txt"に、
pl~#で区切られて書出しされますが、円/円弧は除外されます。
従って、中間ファイルを利用した外部変形で、
曲線属性を維持できるのは、直線の場合だけです。

12/16  配列複写(矩形) を公開
          ソリッド図形、各種属性に対応

@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.
pl=0 //曲線属性フラグ
m=0;n=0 
i=0;j=0;s=0 //カウンタ
//配列宣言
arry=new Array()
//データ取得
while (!r.AtEndOfLine) {
data=r.ReadLine()
//移動量取得
if(/:/.test(data)){
dxy=data.split(":")
if(m==0){
dx=dxy[0];dy=dxy[1] //移動量
}else{
nx=dxy[0];ny=dxy[1] //複写数
//複写数制限
if(nx>lmt){nx=lmt}
if(ny>lmt){ny=lmt}
}m=m+1}
else if(/hq/.test(data)){} //"hq"スキップ
//曲線属性
else if(/pl/.test(data)){
pl=1} //指定
else if(/#/.test(data)){
if(n==0){
w.WriteLine("#")
n=n+1}
else{pl=0} //解除
}
//線データ取得
else if(/^ /.test(data)){
//曲線属性
if(pl==1){
arry[s]=data.split(/\s+/)
s=s+1
}
//単独
else{
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{
w.WriteLine(data)
}}
//曲線属性
for(i=0;i<nx;i++)for(j=0;j<ny;j++){
w.WriteLine("pl")
for(k=0;k<=s-1;k++){
xx0=arry[k][0];yy0=arry[k][1]
xx1=arry[k][2];yy1=arry[k][3]
xs=parseFloat(xx0)+dx*i
ys=parseFloat(yy0)+dy*j
xe=parseFloat(xx1)+dx*i
ye=parseFloat(yy1)+dy*j
topt=[xs,ys,xe,ye]
opt=topt.join(sp)
if(i==0 && j==0){}else{
w.WriteLine(opt)
}}
w.WriteLine("#")
}
//ファイルクローズ
r.Close();w.Close()

|

« 配列複写(ソリッド図形対応) | トップページ | JScriptで外変 »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 配列複写(曲線属性):

« 配列複写(ソリッド図形対応) | トップページ | JScriptで外変 »