Indexへ
(9386)//【9390】→(9394)
------------------------
【タイトル】三斜の数字に一括で文字を追加する方法について
【記事番号】 9390 (*)
【 日時 】06/03/08 09:23
【 発言者 】art modanart@hotmail.com

 お世話になります。
 三斜にて求積し図面を作成した場合に連番の数字が2桁までは、○の中に収まるのに3桁になると○の中の文字が窮屈に見える時があります。
 そこで文字種の変更を行うわけですが、文字種の変更を行わずに"^"を使用した均等伸縮で対応したい場合が出てきました。この場合には、"^1"のように数字の後に書き込むわけですが、数が多くなると結構大変です。
 そこでこのような場合に一括で文字列に指定された文字を書き込むような方法は無いでしょうか。
 よろしくお願いいたします。


Indexへ
(9390)←【9394】→(9400)
------------------------
【タイトル】Re(1):三斜の数字に一括で文字を追加する方法について
【記事番号】 9394 (9390)
【 日時 】06/03/08 09:44
【 発言者 】スター

▼artさん:
> お世話になります。
> 三斜にて求積し図面を作成した場合に連番の数字が2桁までは、○の中に収まるのに3桁になると○の中の文字が窮屈に見える時があります。
> そこで文字種の変更を行うわけですが、文字種の変更を行わずに"^"を使用した均等伸縮で対応したい場合が出てきました。この場合には、"^1"のように数字の後に書き込むわけですが、数が多くなると結構大変です。
> そこでこのような場合に一括で文字列に指定された文字を書き込むような方法は無いでしょうか。
> よろしくお願いいたします。

文字で変更したい文字を範囲選択し、外部エディタでまとめて変更する。
旧文字を改行文字
新文字を^xプラス改行文字 (xは数字)
で置換し保存終了します。


Indexへ
(9394)←【9400】→(9404)
------------------------
【タイトル】Re(2):三斜の数字に一括で文字を追加する方法について
【記事番号】 9400 (9394)
【 日時 】06/03/08 10:47
【 発言者 】art modanart@hotmail.com

▼スターさん:
いつもお世話になります。今回もおつきあいよろしくお願いいたします。
わからない箇所があります。

>文字で変更したい文字を範囲選択し、外部エディタでまとめて変更する。
分かります。

>旧文字を改行文字
改行文字ってなんでしょうか。

>新文字を^xプラス改行文字 (xは数字)
^xプラス改行文字 とは、具体的どのように入力すればいいのでしょうか。

よろしくお願いいたします。


Indexへ
(9400)←【9404】→(9405)
------------------------
【タイトル】Re(3):三斜の数字に一括で文字を追加する方法について
【記事番号】 9404 (9400)
【 日時 】06/03/08 10:56
【 発言者 】スター

▼artさん:
>▼スターさん:
>いつもお世話になります。今回もおつきあいよろしくお願いいたします。
>わからない箇所があります。
>
>>文字で変更したい文字を範囲選択し、外部エディタでまとめて変更する。
>分かります。
>
>>旧文字を改行文字
>改行文字ってなんでしょうか。
>
>>新文字を^xプラス改行文字 (xは数字)
>^xプラス改行文字 とは、具体的どのように入力すればいいのでしょうか。
>
>よろしくお願いいたします。

使っている外部エディタにより置換機能が異なるためわかりませんが
文字を範囲選択し外部エディタを起動すると
外部エディタに以下のように表示されます。
111
112
113
114
各数値の後にEnterキーのような文字(絵)です。

私が使っているエディタはMIFESでその場合改行記号は\nで入力します。
旧文字列
\n
新文字列
^1\n
として実行しました。
ひょっとしたら\nは同じ可能性があります。


Indexへ
(9404)←【9405】→(9439)
------------------------
【タイトル】Re(4):三斜の数字に一括で文字を追加する方法について
【記事番号】 9405 (9404)
【 日時 】06/03/08 12:05
【 発言者 】art modanart@hotmail.com

▼スターさん:
お手数かけます。
外部エディタをTeraPadに変更し巧くいきました。
ありがとうございました。

ところで、このような文字列に文字列を追加するような外部変形をご存じないでしょうか。寸法値に文字列を追加する外部変形は、コジマさんが作られていますのでこれを利用しています。(コジマ様 感謝!)
文字列に追加する外部変形は、分かりませんでした。
よろしくお願いいたします。


Indexへ
(9405)←【9439】→(9441)
------------------------
【タイトル】Re(5):三斜の数字に一括で文字を追加する方法について
【記事番号】 9439 (9405)
【 日時 】06/03/09 09:43
【 発言者 】コジマ

▼artさん:
>ところで、このような文字列に文字列を追加するような外部変形をご存じないでしょうか。寸法値に文字列を追加する外部変形は、コジマさんが作られていますのでこれを利用しています。(コジマ様 感謝!)
>文字列に追加する外部変形は、分かりませんでした。
>よろしくお願いいたします。

スクリプトを以下のように修正すれば、寸法以外の文字にも対応します。


date=["hd"];hcw=[];hcd=[]
puts "追加文字を入力してください。 日本語入力は、「Alt」+「半角/全角」"
tuika_moji=gets;tuika_moji.chomp!
begin
    puts "追加文字の位置を入力してください。 前付:1 後付:2"
    iti=gets;iti.chomp!
    puts "入力が不適当です。再入力してください\n" if iti.chomp !="1" && iti.chomp !="2"
end while(iti !="1" && iti.chomp !="2")
open("temp.txt","r"){|f|
    while line=f.gets
        xy =line.split
        if xy[0] =~ /^hq/
        elsif xy[0] =~ /^hcw/
            xy.each{|item|hcw<            date<        elsif xy[0] =~ /^hcd/
            xy.each{|item|hcd<            date<        elsif xy[0] =~ /^cn\d+$/
            cn=xy
            date<        elsif xy[0] =~ /^msg|^\#/
            msg=xy[0]
            date<        elsif xy[0] =~ /^z/
            zno=f.lineno
            date<        elsif xy[0] =~ /^ch|^cs/
            if cn[0]=="cn0"
                moji_w=cn[1].to_f
                moji_d=cn[3].to_f
            else
                moji_w=hcw[cn[0][2,1].to_i]
                moji_d=hcd[cn[0][2,1].to_i]
            end
            if $_=~/\"/
                moji=$'.chomp
            end
            chno=f.lineno

            if msg=="msg"
                x=xy[3].to_f
                y=xy[4].to_f
                moji_l=Math.sqrt(x**2+y**2)
                moji_arg=Math.atan2(y,x)
                tuika_moji_a=tuika_moji.split('')

                if tuika_moji_a[0].size==1
                    tuika_moji_l=(moji_w/2+moji_d/2)*tuika_moji_a.size
                elsif tuika_moji_a[0].size==2
                    tuika_moji_l=(moji_w+moji_d)*tuika_moji_a.size
                end

                xy[1]=(xy[1].to_f-(tuika_moji_l/2)*Math.cos(moji_arg)).to_s
                xy[2]=(xy[2].to_f-(tuika_moji_l/2)*Math.sin(moji_arg)).to_s

                date<< xy[0,5].join("\s")+"\""+tuika_moji+moji if iti=="1"
                date<< xy[0,5].join("\s")+"\""+moji+tuika_moji if iti=="2"

            else
                date<< $`+$&+tuika_moji+moji if iti=="1"
                date<< $`+$&+moji+tuika_moji if iti=="2"
            end
        else
            date<< line.chomp
        end
    end
}
open("jwc_temp.txt","w"){|f|date.each{|item|f.puts item};}


Indexへ
(9439)←【9441】→(9446)
------------------------
【タイトル】Re(6):三斜の数字に一括で文字を追加する方法について
【記事番号】 9441 (9439)
【 日時 】06/03/09 11:12
【 発言者 】art modanart@hotmail.com

▼コジマさん:
 いつもお世話になります。
 いつもながらの素早い対応大変ありがとうございました。
 おかげさまで考えていた事が出来るようになりました。
 コジマさんに作って頂いた外部変形たちは、会社の中で大活躍しています。
 いままでJWWに否定的だった人たちも外部変形を使用した場合での作業効率を見るに付けやっとJWWを認知したような事です。社内でJWWの説明をするときには、必ず外部変形を見せてのつかみから始めています。
 本当にいつもありがとうございます。

 ところで、先日、この掲示板に質問を書き込みました。というのも道路の平面計画を行った際に盛土、切土の法面の表現を行うのですが、いつもは、Cabaさんの"地図用連続記号 CHRwinを使用しているのですが(Cabaさん。感謝!)曲線部は、未対応との事で通常のコマンドを使用して編集をしています。ところが、平面計画の案を多数立案する場合には、この作業が結構暇の掛かる作業となるのです。どうかすると計画は、半日で出来るのにこの編集に2日かかったりするのです。
 そこでこの作業を効率よく行う方法や外部変形の作成が可能であるか、コジマさんに伺いたいのです。突然の質問で申し訳ないのですがよろしくお願いいたします。
----- 前回の投稿内容です ------
縮尺を1/500とします。
適当な角度で線分を2本引きます。
その線分をl=50.0mで丸面取りします。
面取りされて出来た円弧に対して複線をl=10.00mで引きます。
この複線にさらにl=10.5mの複線を引きます。
この複線の端部を線分で引きます。(結果、扇子の紙の部分の形になります。)
これを先ほど引いた線分の間にて分割します。(分割数又は、距離)
この際に分割された線分は、上と下の円弧に伸縮されています
分割された線分の左側から一つおきに線分の長さが半分になります。
扇子を開いた状態の紙の部分がで左端から円弧と円弧の長さ、次の線分が円弧と円弧との線分の長さの半分、次の線分が円弧と円弧との長さというように連続します。
このような事が出来るような外部変形はないでしょうか。部分的に出来るようなものでもいいのですがよろしくお願い致します。


Indexへ
(9441)←【9446】→(9453)
------------------------
【タイトル】Re(7):文章だけでは、作図イメージが?
【記事番号】 9446 (9441)
【 日時 】06/03/09 13:49
【 発言者 】コジマ

▼artさん:
>----- 前回の投稿内容です ------
>縮尺を1/500とします。
>適当な角度で線分を2本引きます。
>その線分をl=50.0mで丸面取りします。
>面取りされて出来た円弧に対して複線をl=10.00mで引きます。
>この複線にさらにl=10.5mの複線を引きます。
>この複線の端部を線分で引きます。(結果、扇子の紙の部分の形になります。)

外部変形で可能です。(というよりイメージできます。)


>これを先ほど引いた線分の間にて分割します。(分割数又は、距離)

この部分が、イメージできません。
(円弧の端部に引いた線分どうしを等角度分割ではなく等距離分割?)

>この際に分割された線分は、上と下の円弧に伸縮されています

上記でイメージが遮断されているので、この部分もイメージできません。
(上と下の円弧に伸縮=上と下の円弧に接している?)


>分割された線分の左側から一つおきに線分の長さが半分になります。

同上
(線分の長さが半分→中心振分け? 上寄り? 下寄り?)


>扇子を開いた状態の紙の部分がで左端から円弧と円弧の長さ、次の線分が円弧と円弧との線分の長さの半分、次の線分が円弧と円弧との長さというように連続します。

同上


Indexへ
(9446)←【9453】→(9455)
------------------------
【タイトル】Re(8):文章だけでは、作図イメージが?
【記事番号】 9453 (9446)
【 日時 】06/03/09 15:24
【 発言者 】art modanart@hotmail.com

▼コジマさん:
文章力が無くてすいません。
図面を見て頂くと分かるのですが言葉にするのは難しいですね。

>>これを先ほど引いた線分の間にて分割します。(分割数又は、距離)

 これは、分割-等距離分割-分割数指定としていました。この場合に分割された線分は、円弧を跨いで作画されます。そこで円弧を基準線として跨いだ線の伸縮を行う必要があります。線分を伸縮すると扇子の紙の部分のような形となります。(分割した線は、扇子の中骨に当たります。)
 ですが今気がついたのですが 分割-等角度分割-分割数指定 だと円弧を跨いだ作画はされませんので線分の伸縮の必要はないみたいです。初めて知りました。でも、等距離分割のように距離指定での作画もあるので等角度分割だけでは、だめかなとも思っています。

>>分割された線分の左側から一つおきに線分の長さが半分になります。

円弧同士を結んだ線分の端から一つおきに線分の長さを半分にします。これは、斜面を平面で表すときの表現でして、半分に伸縮された線分の円弧に接している方を法肩といって斜面の上を表し、これと反対に円弧と接していない方を法尻といって斜面の下の方を表します。直線の場合は、以下の通りです。
上を斜面の上としますと下記のようになります。

------------------------------------ 斜面の上の方(法肩)
|  |  |  |  |  │  │         
|  |  |  |  |  │  │  
|     |     |     │
|     |     |     │
------------------------------------- 斜面の下の方(法尻)

平面図で斜面を表現する時には、このような表示が連続します。法肩又は、法尻が直線の場合もありますし曲線の場合もあります。(今回の質問は、曲線の場合です。)
巧く表現が出来ませんでしたが以上のような質問でした。
よろしくお願いいたします。


Indexへ
(9453)←【9455】→(9466)
------------------------
【タイトル】Re(9):文章だけでは、作図イメージが?
【記事番号】 9455 (9453)
【 日時 】06/03/09 17:30
【 発言者 】スター

▼コジマさん:

>------------------------------------ 斜面の上の方(法肩)
>|  |  |  |  |  │  │         
>|  |  |  |  |  │  │  
>|     |     |     │
>|     |     |     │
>------------------------------------- 斜面の下の方(法尻)
>
もし作って頂けるなら、以下の方が良いのでは
・実際の法面で法肩と法尻が平行な事はほとんどありません。
・円弧の始点と終点で法の長さを作図し、分割に応じて法長を変化させる。
・例えば法肩が道路側で法尻が現地盤とした場合、この外変で出来た法の端点をスプラインで作画して法尻線とする方が現実的と思います。
・始点・終点の長さを同一にすれば初期の機能は得られます。

参考まで


Indexへ
(9455)←【9466】→(9470)
------------------------
【タイトル】Re(10):こんなイメージ
【記事番号】 9466 (9455)
【 日時 】06/03/09 22:54
【 発言者 】コジマ

▼スターさん:
>もし作って頂けるなら、以下の方が良いのでは
>・実際の法面で法肩と法尻が平行な事はほとんどありません。
>・円弧の始点と終点で法の長さを作図し、分割に応じて法長を変化させる。
>・例えば法肩が道路側で法尻が現地盤とした場合、この外変で出来た法の端点をスプラインで作画して法尻線とする方が現実的と思います。
>・始点・終点の長さを同一にすれば初期の機能は得られます。
>
専門外なので、よく理解できませんが、こんなイメージでしょうか?

◎バッチファイル(法面分割.bat)

@REM 法面を分割する
@echo off
REM #jww
REM #cd
REM #1ci法肩の円弧を指示
REM #2ci法尻の円弧を指示
REM #c分割数 無指定:10/_/a
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 法面分割.rb temp.txt %1 > jwc_temp.txt

◎バッチファイル(法面分割.rb)

include Math
puts"hd"
$n=10
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            $n=argument[2..-1].to_f
    end
end

def main
    date=[];enko=[]
    while ARGF.gets
        xy =split
        if xy[0]=~/^hq/
        elsif xy[0]=~/^ci/
            puts "pl"
            xyt=xy.collect{|item|item.to_f}
            x=xyt[1]
            y=xyt[2]
            zahyo=[]
            if xy.size==8 && xyt[4] != xyt[5]
                ziku=xyt[7]*2*PI/360
                if xyt[4]>xyt[5]
                    xyt[4] -=360
                end

                bunkaku=((xyt[5]-xyt[4])/$n)*2*PI/360

                kakudo=xyt[4]*2*PI/360
                r=xyt[3]

                while (kakudo < xyt[5]*2*PI/360)
                    x1=r*cos(kakudo)
                    y1=r*sin(kakudo)*xyt[6]
                    xyl=sqrt(x1**2+y1**2)
                    arg=atan2(y1,x1)
                    zahyo<<[x+xyl*cos(arg+ziku),y+xyl*sin(arg+ziku)]
                    kakudo += bunkaku
                end
                x1=xyt[3]*cos(xyt[5]*2*PI/360)
                y1=xyt[3]*sin(xyt[5]*2*PI/360)*xyt[6]
                arg=atan2(y1,x1)
                xyl=sqrt(x1**2+y1**2)

                zahyo<<[x+xyl*cos(arg+ziku),y+xyl*sin(arg+ziku)]
                0.upto(zahyo.size-2){|i|
                puts [zahyo[i][0],zahyo[i][1],zahyo[i+1][0],zahyo[i+1][1]].join("\s")}
                enko<            else
                print $_
            end
            puts "\#"
        else
            print $_
        end
    end

    printf("%.11f %.11f %.11f %.11f\n",enko[0][0][0],enko[0][0][1],enko[1][0][0],enko[1][0][1])

    printf("%.11f %.11f %.11f %.11f\n",enko[0][-1][0],enko[0][-1][1],enko[1][-1][0],enko[1][-1][1])


2.step(enko[0].size-3,2){|i|
    printf("%.11f %.11f %.11f %.11f\n",enko[0][i][0],enko[0][i][1],enko[1][i][0],enko[1][i][1])

}

1.step(enko[0].size-2,2){|i|
    x1=enko[0][i][0];y1=enko[0][i][1]
    x2=enko[1][i][0];y2=enko[1][i][1]
    x=(x1+x2)/2;y=(y1+y2)/2
    printf("%.11f %.11f %.11f %.11f\n",x1,y1,x,y)
}

end
main()


Indexへ
(9466)←【9470】→(9472)
------------------------
【タイトル】Re(11):こんなイメージ
【記事番号】 9470 (9466)
【 日時 】06/03/10 00:42
【 発言者 】スター

▼コジマさん:
>専門外なので、よく理解できませんが、こんなイメージでしょうか?
>
artさんの要求はこのとおりです。
ただし、法肩、法尻の線はいりません、円弧をそのまま残す形です。

円弧を残すなら、分割や回転コピーで対処できるのでこのような外変がなかったと思います。
前のスレでCabaさんの外変を使用していると記述されていましたが、これは法肩線と法尻線が平行で無い場合も作図でき、それなりに重宝します。

それで平行で無い場合の場合に使い道があがると思い前述のスレを書きました。


Indexへ
(9470)←【9472】→(9476)
------------------------
【タイトル】Re(11):こんなイメージ
【記事番号】 9472 (9466)
【 日時 】06/03/10 09:10
【 発言者 】art modanart@hotmail.com

▼コジマさん:
毎度毎度ありがとうございます。
私が思い描いていた通りの作画が出来るようになりました。
本当にありがとうございます。
一つ質問があります。
円弧の線分と分割線の線分の線種が違う場合があるのですが、分割線の線種を選択する又は、書き込み線色で作画する事は出来ないでしょうか。
よろしくお願いいたします。


Indexへ
(9472)←【9476】→(9484)
------------------------
【タイトル】Re(12):書き込み線色、線種で作図
【記事番号】 9476 (9472)
【 日時 】06/03/10 10:00
【 発言者 】コジマ

▼artさん:
>円弧の線分と分割線の線分の線種が違う場合があるのですが、分割線の線種を選択する又は、書き込み線色で作画する事は出来ないでしょうか。

書き込み線色、線種で作図です。


include Math
puts"hd"
$n=10
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            $n=argument[2..-1].to_f
    end
end

def main
    date=[];enko=[];lc=[];lt=[]
    while ARGF.gets
        xy =split
        if xy[0]=~/^hq/
        elsif xy[0]=~/^ci/
            puts "pl"
            xyt=xy.collect{|item|item.to_f}
            x=xyt[1]
            y=xyt[2]
            zahyo=[]
            if xy.size==8 && xyt[4] != xyt[5]
                ziku=xyt[7]*2*PI/360
                if xyt[4]>xyt[5]
                    xyt[4] -=360
                end

                bunkaku=((xyt[5]-xyt[4])/$n)*2*PI/360

                kakudo=xyt[4]*2*PI/360
                r=xyt[3]

                while (kakudo < xyt[5]*2*PI/360)
                    x1=r*cos(kakudo)
                    y1=r*sin(kakudo)*xyt[6]
                    xyl=sqrt(x1**2+y1**2)
                    arg=atan2(y1,x1)
                    zahyo<<[x+xyl*cos(arg+ziku),y+xyl*sin(arg+ziku)]
                    kakudo += bunkaku
                end
                x1=xyt[3]*cos(xyt[5]*2*PI/360)
                y1=xyt[3]*sin(xyt[5]*2*PI/360)*xyt[6]
                arg=atan2(y1,x1)
                xyl=sqrt(x1**2+y1**2)

                zahyo<<[x+xyl*cos(arg+ziku),y+xyl*sin(arg+ziku)]
                0.upto(zahyo.size-2){|i|
                puts [zahyo[i][0],zahyo[i][1],zahyo[i+1][0],zahyo[i+1][1]].join("\s")}
                enko<            else
                print $_
            end
            puts "\#"
        elsif xy[0]=~/^lc/
            print $_
            lc<        elsif xy[0]=~/^lt/
            print $_
            lt<        else
            print $_
        end
    end
puts(lc[0],lt[0])

    printf("%.11f %.11f %.11f %.11f\n",enko[0][0][0],enko[0][0][1],enko[1][0][0],enko[1][0][1])

    printf("%.11f %.11f %.11f %.11f\n",enko[0][-1][0],enko[0][-1][1],enko[1][-1][0],enko[1][-1][1])

2.step(enko[0].size-3,2){|i|
    printf("%.11f %.11f %.11f %.11f\n",enko[0][i][0],enko[0][i][1],enko[1][i][0],enko[1][i][1])

}

1.step(enko[0].size-2,2){|i|
    x1=enko[0][i][0];y1=enko[0][i][1]
    x2=enko[1][i][0];y2=enko[1][i][1]
    x=(x1+x2)/2;y=(y1+y2)/2
    printf("%.11f %.11f %.11f %.11f\n",x1,y1,x,y)
}

end
main()


Indexへ
(9476)←【9484】→(9485)
------------------------
【タイトル】Re(13):書き込み線色、線種で作図
【記事番号】 9484 (9476)
【 日時 】06/03/10 11:16
【 発言者 】art modanart@hotmail.com

▼コジマさん:
ありがとうございました。
巧くいきました。
ところで今気がついたのですが、元の法肩及び法尻の円弧が消えて法肩及び法尻の曲線が別途かかれているのでしょうか。
スターさんが言われていたのは、この部分ですね。
元の円弧を残したいのです。法肩、法尻の円弧を残した状態で分割線だけはいるようにはならないでしょうか。
よろしくお願いいたします。


Indexへ
(9484)←【9485】→(9486)
------------------------
【タイトル】Re(14):書き込み線色、線種で作図
【記事番号】 9485 (9484)
【 日時 】06/03/10 12:17
【 発言者 】コジマ

▼artさん:
円弧をのこします。
(楕円弧には対応しませn)


include Math

#円弧の始点座標を返す
def daenko_siten(zahyo)
    if zahyo.size==8
        x=zahyo[1]
        y=zahyo[2]
        r=zahyo[3]
        siten=zahyo[4]
        hen=zahyo[6]
        ziku=zahyo[7]

        rajian=siten*(2*PI)/360
        ziku_arg=ziku*(2*PI)/360

        zahyo_x=r*cos(rajian)
        zahyo_y=r*sin(rajian)*hen
        zahyo_xy=sqrt(zahyo_y**2+zahyo_x**2)
        zahyo_arg=atan2(zahyo_y,zahyo_x)

        zahyo_xt=x+zahyo_xy*cos(zahyo_arg+ziku_arg)
        zahyo_yt=y+zahyo_xy*sin(zahyo_arg+ziku_arg)

        return [zahyo_xt,zahyo_yt]
    end
end
##################################################
#円弧の終点座標を返す
def daenko_syuten(zahyo)
    if zahyo.size==8
        x=zahyo[1]
        y=zahyo[2]
        r=zahyo[3]
        syuten=zahyo[5]
        hen=zahyo[6]
        ziku=zahyo[7]

        rajian=syuten*(2*PI)/360
        ziku_arg=ziku*(2*PI)/360

        zahyo_x=r*cos(rajian)
        zahyo_y=r*sin(rajian)*hen
        zahyo_xy=sqrt(zahyo_y**2+zahyo_x**2)
        zahyo_arg=atan2(zahyo_y,zahyo_x)

        zahyo_xt=x+zahyo_xy*cos(zahyo_arg+ziku_arg)
        zahyo_yt=y+zahyo_xy*sin(zahyo_arg+ziku_arg)

        return [zahyo_xt,zahyo_yt]
    end
end
##################################################

n=10
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            n=argument[2..-1].to_f
    end
end

enko=[];zahyo1=[];zahyo2=[]
while ARGF.gets
    xy=split

    if xy[0]=~/^ci/
        if xy.size==8
            xy.collect!{|item|item.to_f}
            if xy[4]>xy[5]
                xy[4] -=360
            end
            enko<        end
    end
end
x1_1=daenko_siten(enko[0])[0]
y1_1=daenko_siten(enko[0])[1]

x1_2=daenko_siten(enko[1])[0]
y1_2=daenko_siten(enko[1])[1]

x2_1=daenko_syuten(enko[0])[0]
y2_1=daenko_syuten(enko[0])[1]

x2_2=daenko_syuten(enko[1])[0]
y2_2=daenko_syuten(enko[1])[1]

printf("%.11f %.11f %.11f %.11f\n",x1_1,y1_1,x1_2,y1_2)
printf("%.11f %.11f %.11f %.11f\n",x2_1,y2_1,x2_2,y2_2)


tanni_kakudo=enko[0][5]-enko[0][4]
bunkaku1=tanni_kakudo/(n)
m=1
while m<(n)
    x=enko[0][1]+enko[0][3]*cos((enko[0][5]+enko[0][7]-bunkaku1*m)*2*PI/360)
    y=enko[0][2]+enko[0][3]*sin((enko[0][5]+enko[0][7]-bunkaku1*m)*2*PI/360)
    zahyo1<<[x,y];m+=1
end

tanni_kakudo=enko[1][5]-enko[1][4]
bunkaku2=tanni_kakudo/(n)

m=1
while m<(n)
    if m%2==0
        x=enko[1][1]+enko[1][3]*
                    cos((enko[1][5]+enko[1][7]-bunkaku2*m)*2*PI/360)
        y=enko[1][2]+enko[1][3]*
                    sin((enko[1][5]+enko[1][7]-bunkaku2*m)*2*PI/360)
    else
        x1=enko[0][1]+enko[0][3]*cos((enko[0][5]+enko[0][7]-bunkaku1*m)*2*PI/360)    
        y1=enko[0][2]+enko[0][3]*sin((enko[0][5]+enko[0][7]-bunkaku1*m)*2*PI/360)
        x2=enko[1][1]+enko[1][3]*
                cos((enko[1][5]+enko[1][7]-bunkaku2*m)*2*PI/360)
        y2=enko[1][2]+enko[1][3]*
                sin((enko[1][5]+enko[1][7]-bunkaku2*m)*2*PI/360)
        x=(x1+x2)/2
        y=(y1+y2)/2
    end
    zahyo2<<[x,y];m+=1
end

0.upto(zahyo1.size-1){|i|puts [zahyo1[i][0],zahyo1[i][1],zahyo2[i][0],zahyo2[i][1]].join("\s")}


Indexへ
(9485)←【9486】→(9457)
------------------------
【タイトル】Re(15):書き込み線色、線種で作図
【記事番号】 9486 (9485)
【 日時 】06/03/10 12:49
【 発言者 】art modanart@hotmail.com

▼コジマさん:
重ね重ねありがとうございます。
社内のみんなが又さらに驚いています。
これで作画も効率化が進みそうです。
ありがとうございました。


Indexへ
(9486)←【9457】//(9395)
------------------------
【タイトル】Re(9):文章だけでは、作図イメージが?
【記事番号】 9457 (9453)
【 日時 】06/03/09 18:08
【 発言者 】コジマ

▼artさん:
> ですが今気がついたのですが 分割-等角度分割-分割数指定 だと円弧を跨いだ作画はされませんので線分の伸縮の必要はないみたいです。初めて知りました。でも、等距離分割のように距離指定での作画もあるので等角度分割だけでは、だめかなとも思っています。

分割コマンドの「等距離」は、両端の線分の上下を一直線に結んだ距離を分割します。
円弧上の距離指定ではありません。

等角度分割ならば、「分割」「中心線」コマンドと組合せると効率的だと思います。

1、分割数を半分にして、両端の線分を「等角度分割」。
2、「中心線」コマンドで左端の線とその右側の線を指示して半分の長さの線を引く。
3、同様に、右端の線とその左側の線を指示して半分の長さの線を引く。
4、その線を 分割数を 半分−1 にして、「等角度分割」。

円弧上の等距離分割ならば、外部変形で可能だと思います。
(計算が、メンドーですが・・・rubyは計算を多用すると遅くなる)