vim regexでgcodeを編集する


1

特にモデルのgcodeを編集する必要があり、すべてのZ座標から数値87を減算する必要があります。gcodeのサンプルは次のとおりです。

;LAYER:435
G0 F9000 X-38.420 Y-26.887 Z87.300
;TYPE:WALL-INNER
G1 F1800 X-37.709 Y-27.459 E1386.91774
G1 X-37.020 Y-28.062 E1386.94819
G1 X-36.404 Y-28.635 E1386.97618

前のサンプルからZ87.300があり、これをZ0.300に変更し、Z全体に対してこれを行う必要があります。vimで次のコマンドを試しました。

:%s/Z\(\d\d\)/\="Z".submatch(1)-87/

しかし、それは間違って機能します。

回答:


1

Vimは式を左から右に評価するため、最初に「Z」と一致を連結し、次に文字列から87を減算します(0になります)。これは括弧で修正できます:

:%s/Z\(\d\d\)/\="Z".(submatch(1)-87)/

より明確にする(およびで始まる10進数を処理する0)にはstr2nr()、次のようにをスローできます。

:%s/Z\(\d\d\)/\="Z".(str2nr(submatch(1))-87)/

私の解決策は、%s / Z(\ d \ +)/ \ = 'Z'。(submatch(1)-87)/でした。Zはさらに桁数が多いためです。
アレビン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.