NCVCの作者のページ

Python でY軸の値をC軸の回転角度に変換

Python でY軸の値をC軸の回転角度に変換

 リスト6.6(p.201)と同じ処理です. Perl の特殊変数 $`(マッチした文字列の前にある文字列) や $'(マッチした文字列の後にある文字列) が使えないので, ほしいパターンの前後もカッコでくくってグループ化し,それを連結します. Y_ で始まるブロックや Y_ で終わるブロックに対応するため,m.group(1) や m.group(3) が有効な場合のみ連結するようにします.


import sys
import re
import math

# 直径を指定してください
D=100.0
piD=math.pi*D

reg_ignore = re.compile(r'\W')
str_num    = r'-*\d+\.*\d*'
str_word   = r'([A-XZ]'+str_num+r')*'
str_Yword  = r'Y('+str_num+r')'
reg_match  = re.compile(str_word+str_Yword+str_word)

for line in sys.stdin:
    if re.match(reg_ignore, line):
        print(line, end='')
        continue
    m = re.match(reg_match, line)
    if m:
        Ynum = float(m.group(2))
        deg  = int(360.0*Ynum/piD*1000.0+0.5) / 1000.0
        result = ''
        if m.group(1):
            result = m.group(1)
        result += 'C'+str(deg)
        if m.group(3):
            result += m.group(3)
        print(result)
    else:
        print(line, end='')
	

YtoC.py

<< 前のページに戻る