« 連番作図 | トップページ | 座標作図 »

2018年10月 9日 (火)

中心線作図

円に中心線を作図する外部変形です。
円弧、楕円、楕円弧は、除外しています。

◇var str=r.ReadLine()
 変数、配列には、"var"を付けて宣言した方が良いらしい。
◇var n=ci.length *.length(*は、配列名)で、配列数を返します。
 円は、n=5、円弧・楕円・円弧は、n=8 なので、条件 n>5で除外。
◇var x0=parseFloat(ci[1])
 *.split()メソッドは、文字列として分解する為、 文字列⇒数値の変換が必要。 

@if(0==1) //円中心線作図
@echo off
REM #jww
REM #cd
REM #h1
REM #hc 円を範囲選択してください
REM #hr
REM #e
cscript //nologo //e:jscript %0
copy temp.txt jwc_temp.txt
del temp.txt
goto:eof
@end
//ファイルオープン
fso=new ActiveXObject("Scripting.FileSystemObject")
w=fso.CreateTextFile("temp.txt")
r=fso.OpenTextFile("jwc_temp.txt")
//初期設定
ext=2.5 //延長長さ
sp=" " //スペース
wlt="lt5" //線種5
//
var hs=new Array(17)
var ci=new Array(7)
//
while (!r.AtEndOfLine) {
var str=r.ReadLine()
if(/hq/.test(str)){} //"hq"スキップ
//レイヤグループ縮尺
else if(/hs/.test(str)){ 
var hs=str.split(/\s+/)
for(i=0;i<=9;i++){hs[i]=hs[i+1]}
hs["a"]=hs[11];hs["b"]=hs[12];hs["c"]=hs[13]
hs["d"]=hs[14];hs["e"]=hs[15];hs["f"]=hs[16]
 }
//尺度取得
else if(/lg/.test(str)){
var lg=str.substr(2) //レイヤグループ名(0~9、a~f)
var s=hs[lg] //尺度(1/S)
var ext=ext*s
 }
//線種指定
else if(/lt/.test(str)){
var lt=str.substr(2)
if(lt==5){}
else{
w.WriteLine(wlt)}
 }
//円データ取得
else if(/ci/.test(str)){
var ci=str.split(/\s+/) 
var n=ci.length //配列数
//円弧、楕円、楕円弧除外
if(n>5){}else{ 
//文字列⇒数値変換 //中心座標、半径
var x0=parseFloat(ci[1]) //X座標
var y0=parseFloat(ci[2]) //Y座標
var ra=parseFloat(ci[3]) //半径
//始点、終点座標計算
var xs=x0-ra-ext;xe=x0+ra+ext
var ys=y0-ra-ext;ye=y0+ra+ext
//中心線データ書込み
var hrl=xs+sp+y0+sp+xe+sp+y0 //中心線(水平)
var vtl=x0+sp+ys+sp+x0+sp+ye //中心線(垂直)
w.WriteLine(hrl)
w.WriteLine(vtl)
 }
 }
else{
w.WriteLine(str)
 }
 }
//ファイルクローズ
r.Close()
w.Close()
//2018.10.9 by somem

|

« 連番作図 | トップページ | 座標作図 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 中心線作図:

« 連番作図 | トップページ | 座標作図 »