Page 450 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼建具個数拾い外部変形の難しさ 外注図面屋 18/5/26(土) 12:06 ┣Re:建具個数拾い外部変形の難しさ Fu〜 18/5/26(土) 14:17 ┃ ┗Re:建具個数拾い外部変形の難しさ 外注図面屋 18/5/26(土) 17:33 ┣Re:建具個数拾い外部変形の難しさ 牛渡 18/7/10(火) 11:27 ┣図形の検索・置換 kojima 18/7/21(土) 11:22 ┗Re:建具個数拾い外部変形の難しさ マッチンのパパ 18/8/3(金) 15:43 ┗こんな外部変形? kojima 18/8/4(土) 18:05 ┣[投稿者削除] ┃ ┣Re:こんな外部変形? kojima 18/8/4(土) 19:53 ┃ ┗Re:こんな外部変形? kojima 18/8/6(月) 21:17 ┗表記に変更 kojima 18/8/4(土) 22:13 ─────────────────────────────────────── ■題名 : 建具個数拾い外部変形の難しさ ■名前 : 外注図面屋 ■日付 : 18/5/26(土) 12:06 -------------------------------------------------------------------------
建具表を作ってくれとの依頼を受けたんですが(こんな依頼は普通無い)、 面倒なのが個数拾い。 外部変形で何かないかな?と検索すると、 mm38さん作のものがヒットしたのですが、hp閉鎖されてdl不可。 さらに探すと無精者さんの文字集計がそれらしいので試して見ると、 AW-1のように一連の文字列になっていると、見事に数を拾ってくれます。 しかし、AW-と1が別の文字列になってるとアウト、 または、○の上下にAWと1が描かれている建具符号でもアウト。 理由は一連の文字列になっていないから。 AWの文字の数と数字の数を拾ってしまうので。 今回の依頼の書式はAW-1の一連の文字列になっているので使えますが、 上記書式だと使えません。 あるいは、自分で建具符号をブロック図形にするかですが、 そんな手間かけるのなら同じ手間で数も拾えるわけで、無意味。 施工図だと必ず一連の文字列になっているので使えますが、 意匠図だと符号の書式が色々あって、なかなか難しいですね。 |
▼外注図面屋さん: 私は Jw_cadにも文字集計がありますので 自分で書く時は、おっしゃる通り文字集計しやすいようにしてます 集計ができない人の書いたものは、大きい物件では数えるたびに数が違います(^^) 変更があるたびに確認するのも大変です ですので、拾い漏れがないように、1つずつ建具の近くに補助文字をかいて文字集計をしてます 他にはどんな方法があるんでしょうかね? |
おー、JWの基本機能であったとは気がつかなかったです。 一連の文字列になっていない建具符合は補助文字で、ですか。 拾うよりこっちの方が楽そうだし、間違いがないですね。 アドバイスに感謝です。 |
建具記号をブロック図形化してブロック名をカウントするとか? 私なら、レイヤを決めて、数字だけカウントしちゃいます。 ▼外注図面屋さん: >建具表を作ってくれとの依頼を受けたんですが(こんな依頼は普通無い)、 >面倒なのが個数拾い。 > >外部変形で何かないかな?と検索すると、 >mm38さん作のものがヒットしたのですが、hp閉鎖されてdl不可。 > >さらに探すと無精者さんの文字集計がそれらしいので試して見ると、 >AW-1のように一連の文字列になっていると、見事に数を拾ってくれます。 > >しかし、AW-と1が別の文字列になってるとアウト、 >または、○の上下にAWと1が描かれている建具符号でもアウト。 >理由は一連の文字列になっていないから。 >AWの文字の数と数字の数を拾ってしまうので。 > >今回の依頼の書式はAW-1の一連の文字列になっているので使えますが、 >上記書式だと使えません。 > >あるいは、自分で建具符号をブロック図形にするかですが、 >そんな手間かけるのなら同じ手間で数も拾えるわけで、無意味。 > >施工図だと必ず一連の文字列になっているので使えますが、 >意匠図だと符号の書式が色々あって、なかなか難しいですね。 |
図形の検索・置換 http://www.farchi.jp/filemgmt/index.php?id=1866 ▼外注図面屋さん: >建具表を作ってくれとの依頼を受けたんですが(こんな依頼は普通無い)、 >面倒なのが個数拾い。 > >外部変形で何かないかな?と検索すると、 >mm38さん作のものがヒットしたのですが、hp閉鎖されてdl不可。 > >さらに探すと無精者さんの文字集計がそれらしいので試して見ると、 >AW-1のように一連の文字列になっていると、見事に数を拾ってくれます。 > >しかし、AW-と1が別の文字列になってるとアウト、 >または、○の上下にAWと1が描かれている建具符号でもアウト。 >理由は一連の文字列になっていないから。 >AWの文字の数と数字の数を拾ってしまうので。 それぞれの文字の位置関係が寸分違わないのであれば 上記の外変で可能ですね。(ただし、図形単位の検索) >あるいは、自分で建具符号をブロック図形にするかですが、 >そんな手間かけるのなら同じ手間で数も拾えるわけで、無意味。 上記の外変は、ブロック図形にする必要はありません。 >施工図だと必ず一連の文字列になっているので使えますが、 >意匠図だと符号の書式が色々あって、なかなか難しいですね。 書式が統一されていれば、上記の外変で可能。。(ただし、図形単位の検索) |
▼外注図面屋さん: >建具表を作ってくれとの依頼を受けたんですが(こんな依頼は普通無い)、 >面倒なのが個数拾い。 > >外部変形で何かないかな?と検索すると、 >mm38さん作のものがヒットしたのですが、hp閉鎖されてdl不可。 > >さらに探すと無精者さんの文字集計がそれらしいので試して見ると、 >AW-1のように一連の文字列になっていると、見事に数を拾ってくれます。 > >しかし、AW-と1が別の文字列になってるとアウト、 >または、○の上下にAWと1が描かれている建具符号でもアウト。 >理由は一連の文字列になっていないから。 >AWの文字の数と数字の数を拾ってしまうので。 > >今回の依頼の書式はAW-1の一連の文字列になっているので使えますが、 >上記書式だと使えません。 > >あるいは、自分で建具符号をブロック図形にするかですが、 >そんな手間かけるのなら同じ手間で数も拾えるわけで、無意味。 > >施工図だと必ず一連の文字列になっているので使えますが、 >意匠図だと符号の書式が色々あって、なかなか難しいですね。 2005年頃にchi建築設計室さんが造られた建具集計という外変があっていまだに便利に使わさせてもらっています。 丸の中の横線の上に番号の数字下にAWとかSDとかの記号を入れたものを キープランと言いますか?簡略平面図に所在箇所に書き込みその数を図上に文 字で落とせるもので、プリントしてから検証してみてもバッチリです。 念のために今日、外変でやってみましたが、見事に成功でしたが、chiさん のサイトが閉鎖されていてダウンロードできません。著作権のことは解りませんが皆さんが利用できるといいのですが!! うまがらせかな? |
▼マッチンのパパさん: >2005年頃にchi建築設計室さんが造られた建具集計という外変があっていまだに便利に使わさせてもらっています。 > >丸の中の横線の上に番号の数字下にAWとかSDとかの記号を入れたものを >キープランと言いますか?簡略平面図に所在箇所に書き込みその数を図上に文 > >字で落とせるもので、プリントしてから検証してみてもバッチリです。 >念のために今日、外変でやってみましたが、見事に成功でしたが、chiさん > >のサイトが閉鎖されていてダウンロードできません。著作権のことは解りませんが皆さんが利用できるといいのですが!! > >うまがらせかな? こんな外部変形かな? @REM 円内毎の文字の集計 @echo off REM #jww REM #cd REM #bz REM #h1 REM #1集計値記入点を指示してください REM #e copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt > jwc_temp.txt pause goto end #!ruby -Ks include Math puts "bz" en_a=[];hch=[];cn_a=[];n=0 while ARGF.gets xy=$_.split if xy[0]=~/^hp1/ hpx,hpy=xy[1].to_f,xy[2].to_f end if xy[0]=~/^hch/ xy.each{|item|hch<<item.to_f} end if xy[0]=~/^cn(\d+)$/ n += 1 cn=$1.to_i if cn==0 moji_h=xy[2].to_f if n==1 else moji_h=hch[cn] if n==1 end end if xy[0]=~/^ci/ xy.collect!{|item|item.to_f} en_a<<[xy[1],xy[2],xy[3]] if xy.size==4 or xy[4]==xy[5] end end ch_a=[] open("temp.txt","r"){|f| while f.gets xy=$_.split if xy[0]=~/^ch/ moji=$'.chomp if $_ =~/\"/ ch_a<<[xy[1].to_f,xy[2].to_f,moji] end end } moji_a=[] en_a.each{|item| x,y,r=item ch_a2=ch_a.select{|item2| x2,y2,moji=item2 x-r<x2 && x+r>x2 && y-r<y2 && y+r>y2 } if ch_a2 && ch_a2.size>0 ch_a2.sort!{|a,b|b[1]<=>a[1]} ar=[] ch_a2.each{|item2|ar<<item2[2]} moji_a<<ar.join("/") end ch_a -= ch_a2 } moji_a.sort! moji_a2=moji_a.uniq array=[] moji_a2.each{|item| n=0 moji_a.each{|item2| n +=1 if item==item2 } array<<[item,n] } x=hpx;y=hpy array.each{|a,b| printf("ch %.11f %.11f 1 0 \"%s:%d\n",x,y,a,b) y -= moji_h+1 } if array.size==0 printf("h#円内の文字はありません\n") end __END__ :end |
この書き込みは投稿者によって削除されました。(20/4/5(日) 11:38) |
▼R.Nさん: >▼kojimaさん: > >こんばんは、 > >この、chiさんの外変、「建具集計_2」は、 >円の中の文字列2つを判断(大文字・小文字も区別)して、集計し書き出すようです。 掲載した外部変形は、円内の全ての文字を / で接続し、一つの文字列として集計します。 1行でも2行でも3行でも可。 >また、部分出力して、その出力データを再度選択し、合算・集計することもできます。 >(後で、データ再確認も、"楽"かもです) この部分は、意味がよく分かりません。 |
>また、部分出力して、その出力データを再度選択し、合算・集計することもできます。 >(後で、データ再確認も、"楽"かもです) 部分出力? エリア単位の小集計のこと? エリア1の少集計とエリア2の少集計を選択して、エリア1とエリア2の合計を書き出す ということならば、以下の外変で可能。 1、最初に掲載した外変でエリアごとに集計結果を書き出す。(書式例 AW/1:5) 2、1の集計結果を以下の外変で集計結果を全て選択して合計を書き出す。 個人的には必要? と思いますが。 REM 円内毎の文字の集計の合計 @echo off REM #jww REM #cd REM #bz REM #h3 REM #1集計値記入点を指示してください REM #k|1)計算式無(L)|2)計算式有(R)|/_/a REM #e copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt %1> jwc_temp.txt pause goto end #!ruby -Ks while ARGV.size>1 case argument=ARGV.pop when /\/a/ siki=argument[2..-1].to_i end end puts "bz" en_a=[];hch=[];cn_a=[];n=0;ch_a=[] while ARGF.gets xy=$_.split if xy[0]=~/^hp1/ hpx,hpy=xy[1].to_f,xy[2].to_f end if xy[0]=~/^hch/ xy.each{|item|hch<<item.to_f} end if xy[0]=~/^cn(\d+)$/ n += 1 cn=$1.to_i if cn==0 moji_h=xy[2].to_f if n==1 else moji_h=hch[cn] if n==1 end end if xy[0]=~/^ch/ moji=$'.chomp if $_=~/\"/ if moji=~/\:(\d+)$/ ch_a<<[$`,$1 .to_i] end end end ch_a.sort!{|a,b|a[0]<=>b[0]} if ch_a.size==0 printf("h#該当する文字はありません") exit end hash={} ch_a.each{|a,b| if hash.key?(a) hash[a] += b else hash[a]=b end } x=hpx;y=hpy hash2={} ch_a.each{|a,b| if hash2.key?(a) hash2[a] << "+#{b}" else hash2[a]= "#{a}:計#{hash[a]}=#{b}" end } array=[] if siki==1 hash.each{|a,b|array<<sprintf("%s:計%d\n",a,b)} else hash2.each{|a,b|array<<sprintf("%s\n",b)} end array.sort! array.each{|item| printf("ch %.11f %.11f 1 0 \"%s\n",x,y,item) y -= moji_h+1 } __END__ :end |
集計を表記入に変更しました。 @REM 円内毎の文字の集計 @echo off REM #jww REM #cd REM #bz REM #h1 REM #1集計値記入点を指示してください REM #e copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt > jwc_temp.txt pause goto end #!ruby -Ks include Math def size(str) if RUBY_VERSION=~/^1.9|^2/ return str.bytesize else return str.size end end def str_l(str,moji_w,moji_d) str_a=str.split('') if size(str_a[0])==1 l=moji_w/2 else l=moji_w end if str_a.size>1 1.upto(str_a.size-1){|i| if size(str_a[i-1])==1 l += moji_d/2 else l += moji_d end if size(str_a[i])==1 l += moji_w/2 else l += moji_w end } end return l end puts "bz" en_a=[];hcw=[];hch=[];hcd=[];cn_a=[];n=0 while ARGF.gets xy=$_.split hpx,hpy=xy[1].to_f,xy[2].to_f if xy[0]=~/^hp1/ xy.each{|item|hcw<<item.to_f} if xy[0]=~/^hcw/ xy.each{|item|hch<<item.to_f} if xy[0]=~/^hch/ xy.each{|item|hcd<<item.to_f} if xy[0]=~/^hcd/ if xy[0]=~/^cn(\d+)$/ n += 1 cn=$1.to_i if cn==0 moji_w=xy[1].to_f if n==1 moji_h=xy[2].to_f if n==1 moji_d=xy[3].to_f if n==1 else moji_w=hcw[cn] if n==1 moji_h=hch[cn] if n==1 moji_d=hcd[cn] if n==1 end end if xy[0]=~/^ci/ xy.collect!{|item|item.to_f} en_a<<[xy[1],xy[2],xy[3]] if xy.size==4 or xy[4]==xy[5] end end ch_a=[] open("temp.txt","r"){|f| while f.gets xy=$_.split if xy[0]=~/^ch/ moji=$'.chomp if $_ =~/\"/ ch_a<<[xy[1].to_f,xy[2].to_f,moji] end end } moji_a=[] en_a.each{|item| x,y,r=item ch_a2=ch_a.select{|item2| x2,y2,moji=item2 x-r<x2 && x+r>x2 && y-r<y2 && y+r>y2 } if ch_a2 && ch_a2.size>0 ch_a2.sort!{|a,b|b[1]<=>a[1]} ar=[] ch_a2.each{|item2|ar<<item2[2]} moji_a<<ar.join("/") end ch_a -= ch_a2 } moji_a.sort! moji_a2=moji_a.uniq array=[] moji_a2.each{|item| n=0 moji_a.each{|item2| n +=1 if item==item2 } array<<[item,n] } if array.size==0 printf("h#円内の文字はありません\n") exit end moji_l=0 array.each{|a,b|moji_l=str_l(a,moji_w,moji_d) if moji_l<str_l(a,moji_w,moji_d)} y=hpy array.each{|a,b| x=hpx printf("ch %.11f %.11f 1 0 \"%s\n",x,y,a) printf("ch %.11f %.11f 1 0 \"%d\n",x+moji_l+moji_w*2,y,b) y -= moji_h+2 } puts "cc1" printf("ch %.11f %.11f 1 0 \"記号\n",hpx+(moji_l+moji_w)/2,hpy+moji_h+2) l=moji_w/2*4+moji_d/2*3 printf("ch %.11f %.11f 1 0 \"数量\n",hpx+moji_l+moji_w*2+l/2,hpy+moji_h+2) y=hpy+moji_h*2+3 printf(" %.11f %.11f %.11f %.11f\n",hpx-1,y,hpx+moji_l+moji_w*2+l+1,y) y -= moji_h+2 (array.size+1).times{ printf(" %.11f %.11f %.11f %.11f\n",hpx-1,y,hpx+moji_l+moji_w*2+l+1,y) y -= moji_h+2 } y1=hpy+moji_h*2+3;y2=y+moji_h+2 printf(" %.11f %.11f %.11f %.11f\n",hpx-1,y1,hpx-1,y2) x=hpx+moji_l+moji_w*2+l+1 printf(" %.11f %.11f %.11f %.11f\n",x,y1,x,y2) x=hpx+moji_l+moji_w*2-2 printf(" %.11f %.11f %.11f %.11f\n",x,y1,x,y2) __END__ :end |