Indexへ
(6209)//【6210】→(6213)
------------------------
【タイトル】線・弧の切断方法について
【記事番号】 6210 (*)
【 日時 】05/11/15 09:45
【 発言者 】寅

1. 線・弧を「指定長さごと」に切断する。

2. 線・弧を「指定数で等分」に切断する。

何か良い手はないでしょうか?
外変等も探索してみましたが見つけられませんでした。


Indexへ
(6210)←【6213】→(6221)
------------------------
【タイトル】Re(1):線・弧の切断方法について
【記事番号】 6213 (6210)
【 日時 】05/11/15 13:33
【 発言者 】siegel
【 リンク 】http://homepage2.nifty.com/siegel



▼寅さん:

>1. 線・弧を「指定長さごと」に切断する。

 その他−>距離指定点−>距離入力−>始点−>線指示−>連続

>2. 線・弧を「指定数で等分」に切断する。

 編集−>分割−>分割数入力−>始点−>終点−>線指示

上記にて、実点(仮点)をプロットできますので、点にて切断する。
(切断は、消去(伸縮)コマンド−>線指示−>実点にて2回右クリック)

※複数の線を交点又は線上点で分割する外部変形は、
 sugiさんの外部変形スクリプト集にあります。(弧は、不可)

ご参考まで。


Indexへ
(6213)←【6221】→(6222)
------------------------
【タイトル】Re(2):線・弧の切断方法について
【記事番号】 6221 (6213)
【 日時 】05/11/15 16:07
【 発言者 】寅

▼siegelさん:

明快なご回答ありがとうございます。良く解りました。
もしお許しいただければ 関連してお尋ねしたいのですが・・・

1a. <複数の直線>に「指定長さごと」実点をプロットする。

ご説明いただいた手順を繰り返すことで可能ですが限界も有り
 複数→多数に対応する秘策?は有りますでしょうか。


Indexへ
(6221)←【6222】→(6246)
------------------------
【タイトル】Re(3):線・弧の切断方法について
【記事番号】 6222 (6221)
【 日時 】05/11/15 16:22
【 発言者 】siegel
【 リンク 】http://homepage2.nifty.com/siegel



▼寅さん:

>1a. <複数の直線>に「指定長さごと」実点をプロットする。
>
>ご説明いただいた手順を繰り返すことで可能ですが限界も有り
> 複数→多数に対応する秘策?は有りますでしょうか。

複数の線とはいえ、始点は、そのたび指示しなければなりませんが。

拙宅に「円弧直線連続線分割」があります。
http://siegel.cocolog-nifty.com/siegels_blog/2005/10/_02a_a241.html

(トンボ、実点、図形などが、割付られます。)
 ご参考まで。


Indexへ
(6222)←【6246】→(6242)
------------------------
【タイトル】Re(4):線・弧の切断方法について
【記事番号】 6246 (6222)
【 日時 】05/11/16 04:26
【 発言者 】寅

▼siegelさん:

たびたびのご指導大変ありがとうございます。
「円弧直線連続線分割」大変強力です。
これで100歩前進です。感謝申し上げます。


Indexへ
(6246)←【6242】→(6247)
------------------------
【タイトル】Re(3):複数の単独直線?
【記事番号】 6242 (6221)
【 日時 】05/11/15 20:54
【 発言者 】コジマ

▼寅さん:
>1a. <複数の直線>に「指定長さごと」実点をプロットする。
>
>ご説明いただいた手順を繰り返すことで可能ですが限界も有り
> 複数→多数に対応する秘策?は有りますでしょうか。

複数の単独直線ならば、以下の外変で一括処理できますが、
どのような用途にお使いなのでしょうか?

mswin32 版 Ruby のインストールが必要。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html


◎バッチファイル(ファイル名 線分割.bat)

@REM 複数の単独線に点を等距離配置
@echo off
REM #jww
REM #cd
REM #c分割距離 無指定:100 /_/a
REM #h1
REM #hc線を範囲指定してください
REM #1各線の始点を指示してください
REM #99#
rem #c
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 線分割.rb temp.txt %1 > jwc_temp.txt


◎スクリプトファイル(ファイル名 線分割.rb)

include Math
kaisu=0;kyori=100;hp=[];w=0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            kyori=argument[2..-1].to_f
    end
end
while ARGF.gets
    xy=split
    if xy[0]=~/^hp/
        hp<<[xy[1].to_f,xy[2].to_f]
    end
    if xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[0],xy[2],xy[1],xy[3]=xy[2],xy[0],xy[3],xy[1]
        elsif xy[0]==xy[2]
            if xy[1]>xy[3]
                xy[1],xy[3]=xy[3],xy[1]
            end
        end
        x=xy[2]-xy[0]
        y=xy[3]-xy[1]
        l=sqrt(x**2+y**2)
        arg=atan2(y,x)
        ruikei=kyori
        n=(l/kyori).to_i
        bunkatu_x=[]
        bunkatu_y=[]

        siten1=hp.find{|item|item==[xy[0],xy[1]]}
        siten2=hp.find{|item|item==[xy[2],xy[3]]}

        if siten1 && siten2 == nil
            n.times{x1=xy[0]+(ruikei)*cos(arg)
                bunkatu_x<                y1=xy[1]+(ruikei)*sin(arg)
                bunkatu_y<                ruikei += kyori
            }
            kaisu +=n

        elsif siten2 && siten1 == nil
            n.times{x1=xy[2]-(ruikei)*cos(arg)
                bunkatu_x<                y1=xy[3]-(ruikei)*sin(arg)
                bunkatu_y<                ruikei += kyori
            }
            bunkatu_x.reverse!;bunkatu_y.reverse!
            kaisu +=n
        end
        if (siten2 && siten1) or (siten2==nil && siten1==nil)

        else
            0.upto(bunkatu_x.size-1){|i|
                printf("pt %.10f %.10f\n",
                bunkatu_x[i],bunkatu_y[i]) if n>1
            }
        end

    end
end
if w > 0
    printf("h#始点指示さていない線、又は両端に始点指示された線は処理されません\n")
else
    printf("h##{kaisu}個の実点を記入しました\n")
end


Indexへ
(6242)←【6247】→(6249)
------------------------
【タイトル】Re(4):複数の単独直線?
【記事番号】 6247 (6242)
【 日時 】05/11/16 06:19
【 発言者 】寅

▼コジマさん:

大変恐縮してます。

実行させていただきました。
又100歩前進です。ありがとうございます。

>どのような用途にお使いなのでしょうか?

想定しているのは「等高線(地形)」の2.5D(3D)化にあたり
「指定長さごと」に高さ数値を配置させることです。
(「指定長さごと」は高さ数値の配置間隔を保つ目的です。)
その前段処理として線分割をしたいと・・・・・。
従って選択した直線群が「指定長さごと」にさえ分割できれば良く
<始点>を特定する必要はないので<各線の始点を指示>が無くて
分割距離指定→範囲指定→実行 となればベスト!なんですが。

 すみませんついつい勝手なことを・・・。


Indexへ
(6247)←【6249】→(6255)
------------------------
【タイトル】Re(5):始点の指示がないのなら
【記事番号】 6249 (6247)
【 日時 】05/11/16 09:24
【 発言者 】コジマ

始点の指示がないのなら、連続線・曲線・単独線を問わず、全ての線を切断できますが、切断方向は不規則になります。

以下の外変は、線を直接切断します。

▼寅さん:
>従って選択した直線群が「指定長さごと」にさえ分割できれば良く
><始点>を特定する必要はないので<各線の始点を指示>が無くて
>分割距離指定→範囲指定→実行 となればベスト!なんですが。


◎バッチファイル(ファイル名 線切断.bat)

@REM 線を一括して等距離分割(切断)する
@echo off
REM #jww
REM #cd
REM #ht10
REM #ht30
REM #ht40
REM #zz
REM #zc
REM #zw
REM #c切断距離 無指定:100 /_/a
REM #c切断間隔(図寸) 無指定:0/_/b
REM #h1
REM #hc線を範囲指定してください
rem #c
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 線切断.rb temp.txt %1 %2 > jwc_temp.txt


◎スクリプトファイル(ファイル名 線切断.rb)

include Math
puts "hd"
kankaku=0;kaisu=0;kyori=100;hp=[];by=[];w=0;k=0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            kyori=argument[2..-1].to_f
        when /\/b/
            kankaku=argument[2..-1].to_f
    end
end
while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^hs/
        xy[1..-1].each{|item|by<    elsif xy[0]=~/^lg/
        print $_
        zusun=by[xy[0][2,1].hex]

    elsif xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[0],xy[2],xy[1],xy[3]=xy[2],xy[0],xy[3],xy[1]
        elsif xy[0]==xy[2]
            if xy[1]>xy[3]
                xy[1],xy[3]=xy[3],xy[1]
            end
        end
        x=xy[2]-xy[0]
        y=xy[3]-xy[1]
        l=sqrt(x**2+y**2)
        arg=atan2(y,x)
        ruikei=kyori
        n=(l/kyori).to_i
        bunkatu_x=[]
        bunkatu_y=[]

        if n>0 && kankaku*zusun*2            n.times{x1=xy[0]+(ruikei-kankaku*zusun)*cos(arg)
                x2=xy[0]+(ruikei+kankaku*zusun)*cos(arg)
                bunkatu_x<                y1=xy[1]+(ruikei-kankaku*zusun)*sin(arg)
                y2=xy[1]+(ruikei+kankaku*zusun)*sin(arg)
                bunkatu_y<                ruikei += kyori
            }
            printf("%.10f %.10f %.10f %.10f\n",
                xy[0],xy[1],bunkatu_x[0],bunkatu_y[0])
            printf("%.10f %.10f %.10f %.10f\n",
                bunkatu_x[-1],bunkatu_y[-1],xy[2],xy[3])
            1.step(bunkatu_x.size-2,2){|i|
                printf("%.10f %.10f %.10f %.10f\n",
                bunkatu_x[i],bunkatu_y[i],bunkatu_x[i+1],bunkatu_y[i+1]) if n>1
            }
            kaisu +=n+1
        elsif kankaku*zusun*2>kyori
            print $_
            k +=1
        elsif n==0
            print $_
            w +=1
        end
    else
        print $_
    end
end
if k>0 or w>0
    printf("h#切断間隔が切断距離より長い線、又は切断距離より短い線は処理されません\n")
else
    if kaisu>0
        printf("h##{kaisu}本に切断しました\n")
    else
        printf("h#処理できる線はありません\n")
    end
end


Indexへ
(6249)←【6255】→(6256)
------------------------
【タイトル】Re(6):始点の指示がないのなら
【記事番号】 6255 (6249)
【 日時 】05/11/16 11:28
【 発言者 】寅

▼コジマさん:

ありがとうございます。

貴重な時間をたびたびすみません。
当方にとりまして完璧この上ない内容にしていただきました。

>線を直接切断します。
 願ってもない事です。

>切断方向は不規則になります。
 全く問題ありません。

>連続線・曲線・単独線を問わず・・・
 これ又願ってもない事です。
只 連続線・単独線はOKですが
 曲線は<処理できる線はありません>と
冷たくされます。
せっかくの機会ですので対処法を教えていただけたら
大変ありがたく存じます。


Indexへ
(6255)←【6256】→(6261)
------------------------
【タイトル】Re(7):この外変では微小直線は無理
【記事番号】 6256 (6255)
【 日時 】05/11/16 11:56
【 発言者 】コジマ

▼寅さん:
> 曲線は<処理できる線はありません>と
>冷たくされます。
>せっかくの機会ですので対処法を教えていただけたら
>大変ありがたく存じます。

この外変では微小直線は無理です。
曲線属性の連続線は可能です。

この外変は、連続線であっても、1本1本の線を分割距離で切断します。

微小直線の集合の曲線は、分割距離よりも短い線の集合なので処理できません。
これ以上短く切断できません。(すでに短い線なので)

連続線分割のように、始点から分割距離で実点を割り当てることは可能です。


Indexへ
(6256)←【6261】→(6502)
------------------------
【タイトル】Re(8):この外変では微小直線は無理
【記事番号】 6261 (6256)
【 日時 】05/11/16 13:25
【 発言者 】寅

▼コジマさん:

>微小直線の集合の曲線は、分割距離よりも短い線の集合なので処理できません。
>これ以上短く切断できません。(すでに短い線なので)
でしたね。 失礼しました!

ご親切にいろいろとありがとうございました。
末永く愛用させていただきます。


Indexへ
(6261)←【6502】→(6507)
------------------------
【タイトル】Re(9):曲線・連続線の距離割付切断用外変の登録
【記事番号】 6502 (6261)
【 日時 】05/11/25 20:34
【 発言者 】コジマ

曲線・連続線の距離割付切断用外変を登録しました。
以下でDL出来ます。

http://forum.nifty.com/farchi/download/cad/jw/l-pl_del.htm


Indexへ
(6502)←【6507】→(6257)
------------------------
【タイトル】Re(10):曲線・連続線の距離割付切断用外変の登録
【記事番号】 6507 (6502)
【 日時 】05/11/26 04:52
【 発言者 】寅

▼コジマさん:

>曲線・連続線の距離割付切断用外変を登録しました。
>以下でDL出来ます。
>
>http://forum.nifty.com/farchi/download/cad/jw/l-pl_del.htm

再々お世話になってます。
またまた便利なツールをありがとうございます。

先の「円線切断」と併せ 
当初の目的以外での活用も大いに期待できます。

ご配慮 深く感謝申し上げます。


Indexへ
(6507)←【6257】→(6263)
------------------------
【タイトル】Re(1):線・弧切断用外変の登録
【記事番号】 6257 (6210)
【 日時 】05/11/16 12:01
【 発言者 】コジマ

▼寅さん:
>1. 線・弧を「指定長さごと」に切断する。
>
>2. 線・弧を「指定数で等分」に切断する。
>
>何か良い手はないでしょうか?
> 外変等も探索してみましたが見つけられませんでした。


以下に 1、2、に使えそうな外変を登録しました。
http://forum.nifty.com/farchi/download/cad/jw/cl_cut.htm


Indexへ
(6257)←【6263】→(6259)
------------------------
【タイトル】Re(2):線・弧切断用外変の登録
【記事番号】 6263 (6257)
【 日時 】05/11/16 13:37
【 発言者 】寅

▼コジマさん:

>以下に 1、2、に使えそうな外変を登録しました。
>http://forum.nifty.com/farchi/download/cad/jw/cl_cut.htm

本日は大安吉日!!
重ね重ねありがとうございます。


Indexへ
(6263)←【6259】→(6266)
------------------------
【タイトル】Re(1):線・弧の切断方法について
【記事番号】 6259 (6210)
【 日時 】05/11/16 12:26
【 発言者 】スター

▼寅さん:
>1. 線・弧を「指定長さごと」に切断する。
>
>2. 線・弧を「指定数で等分」に切断する。
>
>何か良い手はないでしょうか?
> 外変等も探索してみましたが見つけられませんでした。

かんちがいなら聞き流してください。
等高線の途中を切断しそこに高さの数値を書くのですか?
先に文字を配置し、snapkinさんの文字周辺消去で線を消去してはどうでしょうか?
http://fox.zero.ad.jp/~zap01296/jww/


Indexへ
(6259)←【6266】→(6269)
------------------------
【タイトル】Re(2):線・弧の切断方法について
【記事番号】 6266 (6259)
【 日時 】05/11/16 14:39
【 発言者 】寅

▼スターさん:

(半年ほど前には「start /w」でお世話になりました。)

>等高線の途中を切断しそこに高さの数値を書くのですか?

設問にやや不備があったかと反省してますが
記事no.6247 後段に記載した部分がこのたびの主眼とするところです。
高さの数値を「等高線」上で間が空き過ぎないように配置するのが
ネライです。又この数値は Z座標値としてX,Y座標値と併せ
地形の3D化データにするのが最終目的です。

ご配慮ありがとうございました。


Indexへ
(6266)←【6269】→(6289)
------------------------
【タイトル】Re(3):線・弧の切断方法について
【記事番号】 6269 (6266)
【 日時 】05/11/16 14:59
【 発言者 】卯之介

等高線なら切断しなくてもいいような気がしますが。
円弧の場合、2.5D文字は中心点に記入するので分割してもしなくても一緒ですし。

円弧の折線化(角度指定で適当に)、高さ文字の一括記入など、なんか使えるかも知れないものを置いてますので見てみてください。
http://www.kct.ne.jp/~unosuke/gaihen.html
http://www.kct.ne.jp/~unosuke/line2pl.html


Indexへ
(6269)←【6289】//(6211)
------------------------
【タイトル】Re(4):線・弧の切断方法について
【記事番号】 6289 (6269)
【 日時 】05/11/17 04:21
【 発言者 】寅

▼卯之介さん:

ありがとうございます。

>等高線なら切断しなくてもいいような気がしますが。
>円弧の場合、2.5D文字は中心点に記入するので分割してもしなくても一緒ですし。

2.5Dではご指摘いただいたことになるかと。
今回「切断」についてご相談させていただいたのは
< z値の配置間隔を一定以内に保つため>がそもそもなのですが
それは jwで x,y,z座標値のランダムデータを作成し
3D化ソフトへ渡した際 z値配置間隔の空きが大きいと
隣接標高との接続部分が不自然になることに由来してます。

>円弧の折線化(角度指定で適当に)、高さ文字の一括記入など、なんか使えるかも知れないものを置いてますので見てみてください。
>http://www.kct.ne.jp/~unosuke/gaihen.html
>http://www.kct.ne.jp/~unosuke/line2pl.html

ご親切にありがとうございます。

「高さ文字一括記入」
いつもお世話になっています。
とってもありがたい必須愛用のツールです。