見出し画像

chatGPTを使ってカグメイクを作る-vol2

chatGPT使って家具のモデリングを行っています。

エクセルの既存のカグメイクから、とりあえずはデータを持ってきて、pygamesに家具の箱だけをデザインしたいと思います。

まずはエクセルのファイルの中にあるw,d,h,w2,d2,h2のデータを引っ張ってくるところから

pygameにエクセルからデータを読み込みたいです。そのための前準備。 シート名"1"の、183,191,192,193,195,194,196列目にそれぞれ、name,w1,d1,h1,w2,d2,h2が入ってます。 そのデータの7行目までを取得するような関数を作りたいです

僕の質問

まず、エクセルファイルからデータを読み込むために、pandasライブラリを使用します。pandasがまだインストールされていない場合は、以下のコマンドでインストールしてください。
pip install pandas
次に、指定されたシート名("1")から指定された列(183, 191, 192, 193, 195, 194, 196)を取得し、最初の7行分のデータを読み込む関数を作成します。

chatGPT
pythonCopy codeimport pandas as pd

def read_data_from_excel(file_name, sheet_name="1", columns=None, nrows=7):
    if columns is None:
        columns = [183, 191, 192, 193, 195, 194, 196]

    df = pd.read_excel(file_name, sheet_name=sheet_name, usecols=columns, nrows=nrows)
    return df

# 使用例
file_name = "your_excel_file.xlsx"  # エクセルファイル名に置き換えてください
data = read_data_from_excel(file_name)
print(data)

read_data_from_excel関数は、エクセルファイル名(file_name)、シート名(sheet_name)、読み込む列(columns)、および読み込む行数(nrows)を引数として受け取り、pandas.DataFrameオブジェクトとしてデータを返します。この関数を使用して、必要なデータをエクセルファイルから読み込むことができます。
注意: columns引数は、0から始まるインデックスを使用します。したがって、183, 191, 192, 193, 195, 194, 196列目を読み込む場合、列のインデックスは182, 190, 191, 192, 194, 193, 195になります。

chatGPT

ファイル名のところでエラー出たよ

ファイル名を書き換えたらエラー出ました。文字列のエスケープシーケンス問題ですね。なんか前にも同じとこでハマったけど聞いてみました。

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

僕の質問

このエラーは、ファイルパスにバックスラッシュ(\)が含まれていて、PythonがUnicodeエスケープシーケンスとして解釈してしまうことが原因です。この問題を解決するには、以下の方法があります。
バックスラッシュをダブルバックスラッシュ(\\)に置き換える。

chatGPT

問題解決!!

今度はopenpyxl問題

openpyxlもpipしなきゃいけなかったみたいです。

Exception has occurred: ImportError Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.

pandasライブラリは、エクセルファイル(.xlsx)を読み込むためにopenpyxlというライブラリを必要としますが、デフォルトではインストールされません。このエラーは、openpyxlがインストールされていないことを示しています。
openpyxlをインストールするには、以下のコマンドを実行してください。

chatGPT
codepip install openpyxl

ありがとう、一瞬で動いた!

ここからごちゃごちゃエラーが続く・・・

ここから、細かい事ですが、タイトル行、文字、諸々、chatGPTと一緒に調整していきます。出来上がったけど真っ赤だから、色を塗り替えたり色々・・・以下、僕の質問

1行目だけがおかしいんです
・1行目だけ、なんかバグってます。原因不明ですが問題無いので無視
1行目にnameを設定したらいいんですか? name,w1,d1,h1,w2,d2,h2
・1行目のバグが少し厄介だったので、ヘッダ行を作って貰いました
このpandasのデータで先ほどの描画をしたいです
・pandasのデータを描画したい
それぞれの色をただの塗りつぶしではなくて、枠線を黒色で
・枠線が無くて全部くっついてしまうので、枠線つくってくれぃ
widthとheightは引き算しなくてもいいです
・widthとheightが引き算されてたので、なしに
カラーはブラウンがいいです。枠線はホワイト d1をwcl.3に変換、h1をhcl.3,w1はw.5、h2はh.5
・ヘッダが相変わらず、wcl.3とかになってますが無視。そのうちどっちでもよくなるか解決出来るかどっちかでしょ
枠線の幅を1/10にしたいです
・枠線が板よりでかかった(笑 1/10に
縮尺を全部、1/5にしたいんです
・そもそも縮尺でっかい。小さくしてもらった

このように、コードをchatGPTに教えてもらってから、VSCodeで書き換えるんじゃなくて、もうchatGPTに全部書いてもらいます。そうしないと、次に聞いたCODEでもまた同じ修正しなきゃいけなくなるか、修正箇所だけコピペしなきゃいけませんので・・・
ただ、ものの15分で・・・

出来た完成形


カグメイクby pygame バージョン1!!

出来ました。これ何かわかんないですよね。
エクセルから送り込まれた、1000x450x800、板の厚み20mmのボックスファイルです。
最初のVSCodeインストールから、ここまで2時間程度かな。はや!

vol2まとめ

箱が出来ました。次は、裏板を描こうと思います。裏板も描くといいんですが、色が一緒で枠線が無いとただの全体の真四角になりますよね(笑
あと、裏板等になると、描画の前後の順番が関係してきますので、レイヤーっぽく仕上げる必要がありますね。
どうやってやるんでしょうね。
とにかくサクサク進むから楽しいです!

サポートをお願いします!サポートいただいた分だけはお返し出来るようにアウトプットしていこうと思います!