数値加算No.08480
absinc さん 17/01/24 15:23
 
XY座標のテキストデータなのですが、各XY座標に特定の数値を加算する方法を教えて
ください。

例.
G01X0Y0
G01X1000Y0
G01X1000Y500
G01X0Y500
G01X0Y0

X500Y1000を加算

G01X500Y1000
G01X1500Y1000
G01X1500Y1500
G01X500Y1500
G01X500Y1000

宜しくお願いいたします。

[ ]
RE:08480 数値加算No.08481
山紫水明 さん 17/01/24 20:37
 
 absincさん,

 データ全体の仕様が不明な点がありますが,とりあえず以下のマクロで試して
ください。
//-------------------------------------//
setcompatiblemode 0x00020200;
$ax = input("Xの加算数");
if( result == 0 ) endmacro;
$ay = input("Yの加算数");
if( result == 0 ) endmacro;
#ax = val($ax);
#ay = val($ay);
disabledraw;
gofiletop;
while( 1 ) {
    searchdown "(?<=X)\\d+", regular;
    if( !result ) break;
    $x = gettext( seltopx, seltopy, selendx, selendy, 1 );;
    #x = val($x) + #ax;
    insert str(#x);
    searchdown "(?<=Y)\\d+", regular;
    $y = gettext( seltopx, seltopy, selendx, selendy, 1 );;
    #y = val($y) + #ay;
    insert str(#y);
}
message "終わり";
endmacro;
//-------------------------------------//

                    山紫水明
                    SANSHISUIMEI

[ ]
RE:08481 数値加算No.08482
absinc さん 17/01/25 17:24
 
> absincさん,
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>                    SANSHISUIMEI


山紫水明さん

マクロありがとうございました。出力できました。
下のように、仕様2の文字を認識して次行に数値加算するにはどのようにすれば宜し
いのでしょうか。質問ばかりですみません。

例.
仕様1
X0Y0
G01X1000Y0
仕様2
G01X1000Y500
仕様3
G01X0Y500
G01X0Y0

仕様2の時だけX500Y1000を加算

仕様1
G01X0Y0
G01X1000Y0
仕様2
G01X1500Y1500
仕様3
G01X0Y500
G01X0Y0

[ ]
RE:08482 数値加算No.08483
山紫水明 さん 17/01/25 19:57
 
 absincさん,

>下のように、仕様2の文字を認識して次行に数値加算するにはどのようにすれば
>宜しいのでしょうか。
>
>例.
>仕様1
>X0Y0
>G01X1000Y0
>仕様2
>G01X1000Y500
>仕様3
>G01X0Y500
>G01X0Y0

仕様2は
G01で始まり,X,Yいずれも0でない行
という定義でいいですか?

                    山紫水明

[ ]
RE:08483 数値加算No.08484
absinc さん 17/01/26 08:42
 
山紫水明さん

連絡ありがとうございます。

仕様2など特定の文字で判別し次行数値行のみXY値に数値加算する定義する方法を教
えていただきたいです。

宜しくお願いいたします。

[ ]
RE:08484 数値加算No.08485
山紫水明 さん 17/01/26 17:56
 
 absincさん,

 題意を誤解していたようです。それならば次でいかがでしょう。
//-------------------------------------//
setcompatiblemode 0x00020200;
$ax = input("Xの加算数");
if( result == 0 ) endmacro;
$ay = input("Yの加算数");
if( result == 0 ) endmacro;
$sp = input("特定対象文字列");
if( result == 0 ) endmacro;
#ax = val($ax);
#ay = val($ay);
disabledraw;
gofiletop;
while( 1 ) {
    searchdown2 $sp;
    if( !result ) break;
    #line = lineno;
    searchdown "(?<=X)\\d+", regular;
    $x = gettext( seltopx, seltopy, selendx, selendy, 1 );
    #x = val($x) + #ax;
    insert str(#x);
    searchdown "(?<=Y)\\d+", regular;
    if( lineno != #line + 1 ) {
        undo;
        undo;
        continue;
    }
    $y = gettext( seltopx, seltopy, selendx, selendy, 1 );
    #y = val($y) + #ay;
    insert str(#y);
}
message "終わり";
endmacro;
//-------------------------------------//

                    山紫水明

[ ]