Indexへ
(4020)//【4022】→(4023)
------------------------
【タイトル】緊急です(T_T)
【記事番号】 4022 (*)
【 日時 】05/08/22 13:25
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

どなたか教えて下さい(>_<)
長ーーい直線、緩やかなカーブの曲線に等間隔(1750)で○を付けたいのですが複線で1個1個補助線をひいて書く以外に一括で入力できる方法などありませんでしょうか?


Indexへ
(4022)←【4023】→(4025)
------------------------
【タイトル】Re(1):緊急です(T_T)
【記事番号】 4023 (4022)
【 日時 】05/08/22 14:14
【 発言者 】poaro

▼りこさん:
>どなたか教えて下さい(>_<)
>長ーーい直線、緩やかなカーブの曲線に等間隔(1750)で○を付けたいのですが複線で1個1個補助線をひいて書く以外に一括で入力できる方法などありませんでしょうか?
■分割のコマンドで仮点→等距離分割→割付→距離1750で出来ないでしょうか?


Indexへ
(4023)←【4025】→(4029)
------------------------
【タイトル】Re(2):緊急です(T_T)
【記事番号】 4025 (4023)
【 日時 】05/08/22 16:07
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

▼poaroさん:
ありがとうございます!こんな私でも出来ました!!感謝いたします!
それと・・・二重質問申し訳ないのですが、この方法で打った点の数(仕切ったスパンといいますか・・・)は計算する以外にすぐわかる方法なんてありますか??


Indexへ
(4025)←【4029】→(4041)
------------------------
【タイトル】Re(3):点の数
【記事番号】 4029 (4025)
【 日時 】05/08/22 16:41
【 発言者 】おーた

▼りこさん:
わたしは、こういった場合はその点または円以外を
全て削除したのち設定→基本設定でダイヤログの一番下にある
円または点の要素数で数えます。
実際はそれのみ単独のレイヤに作図してから、そのレイヤのみ非表示→
全選択→消去の手順です。
もちろん、作業を行う前には保存を忘れずに!。また確認後は
上書き保存はしてはいけません。

場合によってはブロック化して集計したほが良いかもしれません。
<<<<< おーた / from 信州 MATSUMOTO >>>>>


Indexへ
(4029)←【4041】→(4048)
------------------------
【タイトル】Re(4):点の数
【記事番号】 4041 (4029)
【 日時 】05/08/22 18:45
【 発言者 】コジマ

▼おーたさん:
>▼りこさん:
>わたしは、こういった場合はその点または円以外を
>全て削除したのち設定→基本設定でダイヤログの一番下にある
>円または点の要素数で数えます。
>実際はそれのみ単独のレイヤに作図してから、そのレイヤのみ非表示→
>全選択→消去の手順です。
>もちろん、作業を行う前には保存を忘れずに!。また確認後は
>上書き保存はしてはいけません。
>
>場合によってはブロック化して集計したほが良いかもしれません。
><<<<< おーた / from 信州 MATSUMOTO >>>>>

範囲選択した円数や点数を積算する外変は、多数公開されています。
以下は、オリジナルです。
単に、数の積算だけなら、簡単なスクリプトですむます。

◎バッチファイル(ファイル名 円数.bat)

@REM 範囲内の点数・円数を記入する
@echo off
REM #jww
REM #cd
REM #h1
REM #0記入点を指示してください
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 円数.rb temp.txt > jwc_temp.txt

◎スクリプトファイル(ファイル名 円数.rb)

en=0;tn=0
while ARGF.gets
    xy=split
    if xy[0] =~ /^ci/
        en+=1
    end
    if xy[0] =~ /^pt/
        tn+=1
    end
end
printf("ch %e %e %e %e \"円数%d 点数%d\n",0,0,1,0,en,tn)
printf("h#円数#{en}個、点数#{tn}個\n")


Indexへ
(4041)←【4048】→(4047)
------------------------
【タイトル】Re(5):点の数
【記事番号】 4048 (4041)
【 日時 】05/08/23 09:51
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

▼コジマさん:
すごく丁寧な回答ありがとうございます。
まだかなりの初心者なので今は理解できませんが保存してみていつかチャレンジしてみます!!


Indexへ
(4048)←【4047】→(4024)
------------------------
【タイトル】Re(4):点の数
【記事番号】 4047 (4029)
【 日時 】05/08/23 09:38
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

▼おーたさん:
回答ありがとうございます!
なるほどです(T_T)一回消してしまうのでドキドキしながらやってみます★


Indexへ
(4047)←【4024】→(4026)
------------------------
【タイトル】Re(1):緊急です(T_T)
【記事番号】 4024 (4022)
【 日時 】05/08/22 15:10
【 発言者 】牛渡
【 リンク 】http://www61.tok2.com/home2/gravelroad/



私は[その他] > [距離指定点] で 1750 を入力して、あとは[連続]ボタン
クリックです。


Indexへ
(4024)←【4026】→(4032)
------------------------
【タイトル】Re(2):緊急です(T_T)
【記事番号】 4026 (4024)
【 日時 】05/08/22 16:09
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

▼牛渡さん:
ありがとうございます!いろいろな方法があるんですね!!
皆さん工夫して勉強なさっているのに自分は質問ばかりで反省です。。。


Indexへ
(4026)←【4032】→(4049)
------------------------
【タイトル】Re(3):緊急です(T_T)
【記事番号】 4032 (4026)
【 日時 】05/08/22 16:50
【 発言者 】kaz

▼りこさん:

他に点を使っていなければ基本設定:一般(1)の
点数でOKですが・・・。

レイヤを分けて点を作図してJWdatVなどのツールで
そのレイヤの点数つかめますよ。


Indexへ
(4032)←【4049】→(4028)
------------------------
【タイトル】Re(4):緊急です(T_T)
【記事番号】 4049 (4032)
【 日時 】05/08/23 09:52
【 発言者 】りこ hokuto-k@topaz.plala.or.jp

▼kazさん:
回答ありがとうございます!
他に点使ってません!こんなに簡単に・・・ありがとうございます(>_<)


Indexへ
(4049)←【4028】→(4035)
------------------------
【タイトル】Reスプライン曲線上の点
【記事番号】 4028 (4024)
【 日時 】05/08/22 16:35
【 発言者 】鈴木 sanc@po.mcci.or.jp

▼牛渡さん:
>私は[その他] > [距離指定点] で 1750 を入力して、あとは[連続]ボタン
>クリックです。

●相乗りの質問です。
実際の設計では曲線を描くときフリーハンドで描いても再現されませんから
半径で数値を与えます。
したがって直線と曲線の組み合わせて出来ている図を線上で分割することが出来ますね?
(座標軸方向の分割ではない)
それではスプライン曲線などの曲線上を、指定した数値で分割していく方法はご存知
でしょうか?
宜しくお願いします。


Indexへ
(4028)←【4035】→(4037)
------------------------
【タイトル】Re(1):Reスプライン曲線上の点
【記事番号】 4035 (4028)
【 日時 】05/08/22 17:27
【 発言者 】コジマ

▼鈴木さん:
>●相乗りの質問です。
>実際の設計では曲線を描くときフリーハンドで描いても再現されませんから
>半径で数値を与えます。
>したがって直線と曲線の組み合わせて出来ている図を線上で分割することが出来ますね?
>(座標軸方向の分割ではない)
>それではスプライン曲線などの曲線上を、指定した数値で分割していく方法はご存知
>でしょうか?
>宜しくお願いします。

以下、連続線または、曲線上に、指定直径の円を配置していく、外変です。
mswin32 版 Ruby のインストールが必要。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html

コピペ後、全角スペースを半角スペースに一括置換してください。

◎バッチファイル(ファイル名 連線円割付.bat)

@REM 連続線・曲線への微小円割付(範囲選択)
@echo off
REM #jww
REM #cd
REM #c円直径の入力(図寸)・・・無指定:2/_/a
REM #c割付間隔(実寸)・・・無指定:100/_/b
REM #h1
REM #0始点(線端)を指示(右クリック)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 連線円割付.rb temp.txt %1 %2> jwc_temp.txt

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

include Math
d=2
picth=100
while ARGV.length > 1
    case argument = ARGV.pop
        when /^\/a/
            d = argument[ 2 .. -1].to_f
        when /^\/b/
            picth = argument[ 2 .. -1].to_f
    end
end

def en(x,y,r)
    printf("ci %.11f %.11f %f\n",x,y,r)
end


def arraysum(x)
    x=x[0..-1]
    w=0
    n=-1
    while(n        n +=1
        w +=x[n]
    end
    return w
end
sen=[];by=[]
while ARGF.gets
    xy =split
    if xy[0] =~ /^hs/
        xy[1..-1].each{|item|by<    end
    if xy[0] =~ /^lg/
        lg=xy[0][2,1];zusun=by[lg.hex]
    end
    if xy[0] =~ /^[0-9]/ or xy[0] =~ /^-/
        sen<<$_.chop
    end
end
if sen.size>1
rensen=[]
sen.each_with_index{|item,i| a=sen-[sen[i]]
                array=item.split
                ward1=array[0]+"\s"+array[1]
                ward2=array[2]+"\s"+array[3]
                a.each{|item2|
                if item2=~/#{ward1}/ or item2=~/#{ward2}/
                    rensen<                end
                    }
            }
ren=[]
rensen.each_with_index{|item,i| a=rensen-[rensen[i]]
                array=item.split
                ward1=array[0]+"\s"+array[1]
                ward2=array[2]+"\s"+array[3]
                ren1=[];ren2=[]
                a.each{|item2|
                if item2=~/#{ward1}/ && item2!=/#{ward2}/
                    ren1<                elsif item2=~/#{ward2}/ && item2!=/#{ward1}/
                    ren2<                end
                    }
            if ren1.size==0
                ren<            elsif ren2.size==0
                ren<
            end
            }
if ren.size==2
    a=0
    renzoku=[]
    a="0 0"
    x=0
    renzoku<    rensen.size.times{
         rensen.each{|item|b=item.split
                if a==b[0]+"\s"+b[1]
                    renzoku<                    a=b[2]+"\s"+b[3]
                     rensen.delete(item)
                elsif a==b[2]+"\s"+b[3]
                    renzoku<                    a=b[0]+"\s"+b[1]
                     rensen.delete(item)
                end
                }
                    }

renzoku.collect!{|item| a=item.split;[a[0].to_f,a[1].to_f];}

dx=[];dy=[];larray=[]
dx<dy<larray<
l=0
n=0
while n    lx=renzoku[n+1][0]-renzoku[n][0]
    ly=renzoku[n+1][1]-renzoku[n][1]
    lxy=Math.sqrt(lx**2+ly**2)
    dx<    dy<    larray<    n+=1
end
l=arraysum(larray)

yotyo=0;ruisin=0
m=0
    if (larray[m]+yotyo)>picth
        warisu=((larray[m]+yotyo)/picth).to_i
        n=1
        warisu.times{en((picth*n-yotyo)*dx[m],
                (picth*n-yotyo)*dy[m],d/2*zusun)
                n+=1}

        yotyo=(larray[m]+yotyo)-picth*warisu
    else
        yotyo=larray[m]
    end

m=1
l=0
while m    if (larray[m]+yotyo)>picth
        warisu=((larray[m]+yotyo)/picth).to_i
        n=1
        warisu.times{en(renzoku[l][0]+(picth*n-yotyo)*dx[m],
                renzoku[l][1]+(picth*n-yotyo)*dy[m],d/2*zusun)
                n+=1}
        yotyo=(larray[m]+yotyo)-picth*warisu
    else
        yotyo+=larray[m]
    end
    m+=1
    l+=1
end

else

    puts("h#線が繋がっていないか、閉じた図形か、連続線が2以上あります。\n")
end

else
    sen1=sen[0].split
    sen1.collect!{|item|item.to_f}
    if sen1[0]>sen1[2]
        sen1[0],sen1[2],sen1[1],sen1[3]=sen1[2],sen1[0],sen1[3],sen1[1]
    elsif sen1[0]==sen1[2]
        sen1[1],sen1[3]=sen1[3],sen1[1] if sen1[1]>sen1[3]
    end
    senl=sqrt((sen1[3]-sen1[1])**2+(sen1[2]-sen1[0])**2)

    if sen1[0]==0
        arg=atan2(sen1[3]-sen1[1],sen1[2]-sen1[0])

        l=picth
        while l            en(sen1[0]+l*cos(arg),sen1[1]+l*sin(arg),d/2*zusun)
            l +=picth
        end
    elsif sen1[2]==0
        arg=atan2(sen1[1]-sen1[3],sen1[0]-sen1[2])
        l=picth
        while l            en(sen1[2]+l*cos(arg),sen1[3]+l*sin(arg),d/2*zusun)
            l +=picth
        end
    end
end


Indexへ
(4035)←【4037】→(4040)
------------------------
【タイトル】Re(2):Reスプライン曲線上の点
【記事番号】 4037 (4035)
【 日時 】05/08/22 17:55
【 発言者 】鈴木 sanc@po.mcci.or.jp

▼コジマさん:

>以下、連続線または、曲線上に、指定直径の円を配置していく、外変です。
>mswin32 版 Ruby のインストールが必要。

●お手数をおかけします。
試してみましたが微妙にスプライン曲線から外れた位置に円が落ちます。
何か善後策はございますでしょうか?


Indexへ
(4037)←【4040】→(4046)
------------------------
【タイトル】Re(3):Reスプライン曲線上の点
【記事番号】 4040 (4037)
【 日時 】05/08/22 18:27
【 発言者 】コジマ

▼鈴木さん:
>●お手数をおかけします。
>試してみましたが微妙にスプライン曲線から外れた位置に円が落ちます。
>何か善後策はございますでしょうか?

「曲線」→「スプライン」で、曲線を作図した後、
何度もこの外変を試してみましたが、円の中心は、正確に曲線上(微小直線上)になっています。

ひょっとして、スプライン曲線の意味が違うのでしょうか?
(想定される円弧上にはなりません)


Indexへ
(4040)←【4046】→(4066)
------------------------
【タイトル】Re(4):Reスプライン曲線上の点
【記事番号】 4046 (4040)
【 日時 】05/08/23 09:26
【 発言者 】鈴木 sanc@po.mcci.or.jp

▼コジマさん:

>「曲線」→「スプライン」で、曲線を作図した後、
>何度もこの外変を試してみましたが、円の中心は、正確に曲線上(微小直線上)になっています。

>ひょっとして、スプライン曲線の意味が違うのでしょうか?
>(想定される円弧上にはなりません)

●曲線>スプライン曲線と進んで作図したものです。
ただし、私の作業手順が、メッセージバーを読みながらのものですから、
手順が違っている可能性もあります。
念のために手順をご指導ください。

サイトではrubyの2000プロでの導入方法としてWindows>system32となって
いましたが記載ミスと判断してWINNT>system32に入れました。
ここに間違いがあれば合わせてお願いします。


Indexへ
(4046)←【4066】→(4067)
------------------------
【タイトル】Re(5):Reスプライン曲線上の点
【記事番号】 4066 (4046)
【 日時 】05/08/23 16:48
【 発言者 】コジマ

▼鈴木さん:
>●曲線>スプライン曲線と進んで作図したものです。
>ただし、私の作業手順が、メッセージバーを読みながらのものですから、
>手順が違っている可能性もあります。
>念のために手順をご指導ください。
>
メッセージバーの指示通り(始点、中間点、終点、指示)でも、
連続線のように、3点以上指示しても、円の中心は曲線上になります。
(OS WIN98SEとWINXP HOME で試しました)

WIN2000PRO のパソコンは持っていません。

>サイトではrubyの2000プロでの導入方法としてWindows>system32となって
>いましたが記載ミスと判断してWINNT>system32に入れました。
>ここに間違いがあれば合わせてお願いします。

PATHのとおったフォルダならば、問題ないはずです?
(外変は実行されているのですから、問題ないはずです。)

円の中心は、線上から 何MM 位ずれるのでしょうか?


Indexへ
(4066)←【4067】→(4068)
------------------------
【タイトル】Re(6):出来ました。
【記事番号】 4067 (4066)
【 日時 】05/08/23 17:15
【 発言者 】鈴木 sanc@po.mcci.or.jp

▼コジマさん:

●純粋にCADの図法の興味から長時間お付き合いいただきましてありがとうございました。
スプライン曲線でもペジェ曲線でも、線上の等間隔点が打てました。

何に利用しましょうか?
遊歩道の石の割付にでも使えると良いのですが・・・
ありがとうございました。


Indexへ
(4067)←【4068】→(4070)
------------------------
【タイトル】Re(6):Reスプライン曲線上の点
【記事番号】 4068 (4066)
【 日時 】05/08/23 17:18
【 発言者 】スター

▼コジマさん:
>▼鈴木さん:
>>●曲線>スプライン曲線と進んで作図したものです。
>>ただし、私の作業手順が、メッセージバーを読みながらのものですから、
>>手順が違っている可能性もあります。
>>念のために手順をご指導ください。
>>
>メッセージバーの指示通り(始点、中間点、終点、指示)でも、
>連続線のように、3点以上指示しても、円の中心は曲線上になります。
>(OS WIN98SEとWINXP HOME で試しました)
>
>WIN2000PRO のパソコンは持っていません。
>
>>サイトではrubyの2000プロでの導入方法としてWindows>system32となって
>>いましたが記載ミスと判断してWINNT>system32に入れました。
>>ここに間違いがあれば合わせてお願いします。
>
>PATHのとおったフォルダならば、問題ないはずです?
>(外変は実行されているのですから、問題ないはずです。)
>
>円の中心は、線上から 何MM 位ずれるのでしょうか?

私の場合ちゃんとのってますよ。
ところで、円より実点のほうが後の使い道が良いと思いますが。
def en(x,y,r)
    printf("ci %.11f %.11f %f\n",x,y,r)
end
面倒なのでここだけ修正しました。


Indexへ
(4068)←【4070】//(4027)
------------------------
【タイトル】Re(7):Reスプライン曲線上の点
【記事番号】 4070 (4068)
【 日時 】05/08/23 17:43
【 発言者 】コジマ

▼スターさん:
>私の場合ちゃんとのってますよ。
>ところで、円より実点のほうが後の使い道が良いと思いますが。
>def en(x,y,r)
>    printf("ci %.11f %.11f %f\n",x,y,r)
>end
>面倒なのでここだけ修正しました。

というより、この外変は、スターさんの「連続線分割」のパクリみたいなものです。
(円を実点にすると「連続線分割」と同じ。
よって「連続線分割」でも可能だと思います。)

ソースがないので、連続線の検出方法に試行錯誤しました。