#!python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2024/05/05 06:47:31 +0900> """ csv to line obj csvファイルを読み込んで、 連続した直線データが記述されたWavefront obj形式で出力する。 Usage: python csv2lineobj.py -i INPUT.csv > OUTPUT.obj Windows10 x64 22H2 + Python 3.10.10 64bit scipy 1.13.0 + numpy 1.26.4 """ import argparse import sys # import re # import numpy as np # from scipy import interpolate def load_csv(infile): ret = [] with open(infile, "r") as file: for line in file: line = line.rstrip() s = line.split(",") ret.append([float(s[0]), float(s[1])]) return ret def dump_obj(data, revz): print("o linedata") for v in data: x, z = v if revz: z *= -1 print(f"v {x} 0.0 {z}") for i in range(len(data) - 1): i0 = i + 1 i1 = i + 2 print(f"l {i0} {i1}") def main(): parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", required=True, help="Input csv file") parser.add_argument("--revz", action="store_false", help="reverse z") args = parser.parse_args() if args.input is None: sys.exit() data = load_csv(args.input) dump_obj(data, args.revz) if __name__ == "__main__": main()