Page 1550 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼円図形に番号をふる外部変形を作ろうとしています 高槻 21/11/9(火) 12:15 ┗Re:円図形に番号をふる外部変形を作ろうとしています kojima 21/11/9(火) 15:03 ┣Re:円図形に番号をふる外部変形を作ろうとしています kojima 21/11/9(火) 15:45 ┗Re:円図形に番号をふる外部変形を作ろうとしています 高槻 21/11/9(火) 16:22 ─────────────────────────────────────── ■題名 : 円図形に番号をふる外部変形を作ろうとしています ■名前 : 高槻 ■日付 : 21/11/9(火) 12:15 -------------------------------------------------------------------------
円図形に番号をふる外部変形を作ろうとしています 単純にciの行をchに変え、番号を追加するだけのものですが 番号をふる順番がうまくいきません 2×3の円では 1.2.3. 4.5.6. と左上から右下へと番号が振りたいですが、 たとえば円を1.→5.→3.→4.→2.→6.の順で作成して外部変形を実行すると 1.5.3. 4.2.6. と作成順で番号が振られてしまいます 範囲選択して取得したデータのci行をみると、作成順で並んでるから、この結果になるのですが データ取得時に左上から取得する方法 または、取得時にできなければ、取得後にデータをソートする方法 などがありましたら、教えていただけませんでしょうか |
▼高槻さん: >円図形に番号をふる外部変形を作ろうとしています >単純にciの行をchに変え、番号を追加するだけのものですが >番号をふる順番がうまくいきません >2×3の円では >1.2.3. >4.5.6. >と左上から右下へと番号が振りたいですが、 >たとえば円を1.→5.→3.→4.→2.→6.の順で作成して外部変形を実行すると >1.5.3. >4.2.6. >と作成順で番号が振られてしまいます > >範囲選択して取得したデータのci行をみると、作成順で並んでるから、この結果になるのですが > >データ取得時に左上から取得する方法 >または、取得時にできなければ、取得後にデータをソートする方法 >などがありましたら、教えていただけませんでしょうか 使用言語が分かりませんが Rubyなら以下のようになります。 (単純にciの行をchに変えたのでは、うまくいきません) @REM 円内に通し番号を描く @echo off REM #jww REM #cd REM #h1 REM #e copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt> jwc_temp.txt pause goto end #!ruby -Ks puts "cc4" en_zahyo_a=[]#円のXY座標の配列 while ARGF.gets xy=$_.split if xy[0]=~/^ci/ en_zahyo_a<<[xy[1].to_f,xy[2].to_f]#円のXY座標を配列に格納 end end #円のXY座標の並べ替え en_zahyo_a.sort!{|a,b| if a[1]==b[1] a[0]<=>b[0] else b[1]<=>a[1] end } i=1 en_zahyo_a.each{|x,y| printf("ch %.11f %.11f 1 0 \"%d\n",x,y,i) i += 1 } __END__ :end |
前回のものは、高さ順ですが 高さ判定に幅を持たせたい時は、以下のようになります。 @REM 円内に通し番号を描く(高低差の許容値有) @echo off REM #jww REM #cd REM #bz REM #h1 REM #c高低差の許容値(図寸) 無指定:5/_/a REM #e copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt %1 > jwc_temp.txt pause goto end #!ruby -Ks puts "bz","cc4" cl=5.0#高低差の許容値 while ARGV.size>1 case argument=ARGV.pop when /\/a/ cl=argument[2..-1].to_f end end en_zahyo_a=[]#円のXY座標の配列 while ARGF.gets xy=$_.split if xy[0]=~/^ci/ en_zahyo_a<<[xy[1].to_f,xy[2].to_f]#円のXY座標を配列に格納 end end #円のXY座標の並べ替え en_zahyo_a.sort!{|a,b| if (a[1]-b[1]).abs<cl a[0]<=>b[0] else b[1]<=>a[1] end } i=1 en_zahyo_a.each{|x,y| printf("ch %.11f %.11f 1 0 \"%d\n",x,y,i) i += 1 } __END__ :end |
▼kojimaさん: 早々の返答ありがとうございます。 思ったとおりの挙動となっており、大変勉強になりました。 これをベースに整えていこうかと思います。 ありがとうございました。 |