ขับ SketchUp ด้วย Claude Code ตอนที่ 1 — เตรียมเครื่องมือ uv กับ PyNite
ผมลองเอา Claude Code มาขับ SketchUp ให้เขียนแบบโครงเหล็กแล้วคำนวณกำลังให้เสร็จในที ทำจริงจนได้โรงเหล็กออกมาทั้งหลัง ตอนนี้เริ่มที่งานน่าเบื่อที่สุดก่อน คือเตรียมเครื่องให้พร้อม
ช่วงนี้ผมลองเอา Claude Code ตัวที่รันอยู่ใน VS Code มาขับ SketchUp ให้เขียนแบบ 3D โครงเหล็กแล้วคำนวณโครงสร้างต่อให้เสร็จในที ทำจริงจนได้โรงเหล็กหลังคาเพิงหมาแหงนออกมาทั้งหลัง พร้อมผลวิเคราะห์กำลังแบบ FEA เห็นว่ามันใช้งานได้จริง ไม่ใช่แค่ของเล่น เลยอยากมาเล่าให้ฟังเป็นซีรีส์ ผมแบ่งเป็น 3 ตอนตามขั้นที่ผมทำมาจริง ไม่ได้ตัดต่อให้ดูสวยกว่าความเป็นจริง
ตอนนี้เป็น Part 1 ว่าด้วยการเตรียมเครื่องอย่างเดียวก่อน ยังไม่มีการวาดอะไรทั้งสิ้น ของผมตั้งต้นที่มี VS Code พร้อมส่วนขยาย Claude Code และ login เข้าระบบเรียบร้อย (ผมใช้เป็น subscription รายเดือน) กับมี SketchUp ลงไว้แล้ว จากจุดนั้นที่เหลือผมให้ Claude เป็นคนเตรียมเครื่องมือเองทั้งหมด ตั้งแต่ลงตัวรัน ลง Python ไปจนถึงไลบรารีคำนวณ
ภาพรวมว่าระบบนี้ต่อกันยังไง
ก่อนจะลงมือ ผมอยากให้เห็นภาพก่อนว่าของแต่ละชิ้นที่กำลังจะลงนั้นมันไปอยู่ตรงไหนของระบบ ไม่อย่างนั้นจะลงไปแบบงงๆ ว่าลงทำไม
หัวใจของฝั่งวาดแบบคือ Claude Code ที่อยู่ใน VS Code จะคุยกับตัวกลางที่เรียกว่า MCP server ผ่านช่องทาง stdio ตัว MCP server นี้รันด้วย uvx แล้วมันจะยิงสัญญาณ TCP เข้าไปที่พอร์ตหนึ่งบนเครื่อง (ในซีรีส์นี้ผมจะเขียนแทนด้วย <port>) ฝั่งโน้นมีปลั๊กอินที่เขียนด้วย Ruby ฝังอยู่ใน SketchUp คอยรับคำสั่งแล้วลงมือวาดให้จริง พูดง่ายๆ คือ Claude สั่ง MCP แปลง MCP ส่งผ่านพอร์ต ปลั๊กอินใน SketchUp ลงมือทำ
ส่วนการคำนวณโครงสร้างนั้นแยกออกไปอีกขาหนึ่ง ไม่เกี่ยวกับ SketchUp โดยตรง ผมใช้ PyNite ซึ่งเป็นเครื่องมือ FEA ที่เขียนด้วย Python ล้วน วางไว้ใน conda env แยกต่างหากเพื่อไม่ให้ชนกับ Python หลักของเครื่อง สรุปคือ Part 1 ทั้งตอนนี้ ผมแค่เตรียมของให้พร้อมทั้งสองขานี้ให้ครบ เท่านั้นเอง ยังไม่ได้เอามาต่อกัน
1. ตั้ง Claude เป็น Full Access ก่อน
งานเตรียมเครื่องกับงานสร้างโมเดลยาวๆ นั้นต้องให้ Claude รันคำสั่งติดๆ กันหลายชุด ทั้งลงโปรแกรม สร้างไฟล์ รัน script ทดสอบ ถ้าต้องมานั่งกดอนุมัติทีละครั้งทุกคำสั่งคงไม่ไหว เสียเวลาเปล่า ผมเลยตั้งโหมดสิทธิ์การทำงานเป็น Bypass permissions ไว้ตั้งแต่แรก ตัวเลือกนี้อยู่ที่แผง Claude มุมขวาล่างใกล้ๆ ช่องพิมพ์ เลือกตัวล่างสุด
โหมดนี้ Claude จะรันคำสั่งอะไรก็ได้เองโดยไม่ถามก่อน รวมถึงคำสั่งที่อาจลบไฟล์ได้ด้วย เพราะฉะนั้นต้องเข้าใจให้ตรงกันก่อนว่ามันเป็นดาบสองคม
โหมด Bypass permissions ให้ Claude รันคำสั่งใดก็ได้โดยไม่ถาม รวมถึงคำสั่งที่ลบไฟล์ได้ ควรใช้กับโปรเจกต์หรือโฟลเดอร์ที่ไว้ใจเท่านั้น ถ้าไม่มั่นใจ ให้กลับไปใช้โหมด Ask before edits แล้วกดอนุมัติเองทีละครั้งจะปลอดภัยกว่ามาก
วิธีสั่งงานก็ตรงไปตรงมา พิมพ์ลงในช่องล่างสุดของแผง Claude เป็นภาษาไทยได้เลย แล้วกด Enter เดี๋ยวมันทำงานในแผงนั้นเอง ทั้งรันคำสั่งใน terminal แก้ไฟล์ สร้างไฟล์ แล้วสรุปผลกลับมาให้อ่าน กล่องคำสั่งที่ผมยกมาให้ดูตลอดทั้งซีรีส์นี้ ก็คือข้อความที่ผมพิมพ์ลงช่องนี้นั่นเอง ไม่ใช่คำสั่งที่ผมเคาะเองใน terminal
2. ให้ Claude สำรวจเครื่องก่อน อย่าเพิ่งลงอะไร
ผมไม่ชอบลงของซ้ำกับที่มีอยู่แล้ว มันรกเครื่องเปล่าๆ และบางทีก็ทำให้เกิดของซ้อนกันจนงงทีหลัง เพราะฉะนั้นก่อนจะลงอะไร ผมให้มันสำรวจเครื่องก่อนว่ามีอะไรพร้อมอยู่บ้าง แล้วค่อยสรุปว่าขาดอะไร คำสั่งที่ผมพิมพ์ลงช่อง Claude เป็นแบบนี้
สำรวจเครื่องนี้ให้หน่อย: มี SketchUp เวอร์ชันอะไร, Python/conda env อะไรบ้าง,
มี uv/uvx, git ไหม แล้วสรุปว่าต้องเตรียมอะไรเพิ่มสำหรับงาน
"ขับ SketchUp + วิเคราะห์โครงสร้างด้วย FEA" — ยังไม่ต้องลงอะไร
จากนั้นมันจะไล่ตรวจให้เอง ทั้งเรียก where หรือ Get-Command เพื่อหาว่ามีโปรแกรมอะไรอยู่ใน PATH บ้าง เช็ก conda env list ดูว่ามี environment อะไรพร้อมแล้ว อ่าน path ของ SketchUp ว่าลงเวอร์ชันไหน แล้วสรุปออกมาเป็นรายการของที่ขาด ปกติของที่ยังไม่มีก็จะเป็น uv/uvx กับไลบรารีคำนวณ FEA ส่วนที่เหลือถ้ามีอยู่แล้วก็ข้ามได้เลย ขั้นนี้สำคัญตรงที่ผมสั่งย้ำว่า "ยังไม่ต้องลงอะไร" เพื่อให้มันหยุดอยู่แค่รายงานก่อน ไม่ใช่เห็นว่าขาดแล้วลงรัวเลย
3. ลง uv ตัวรัน MCP server
MCP server ของเราจะรันผ่าน uvx ซึ่งเป็นส่วนหนึ่งของ uv ผมเลือกลง uv แบบ standalone ไปเลย เพราะมันแยกตัวเองออกมา ไม่ไปยุ่งกับ Python หลักของเครื่อง ลงทีเดียวจบ คำสั่งที่ผมพิมพ์
ติดตั้ง uv (standalone installer ของ astral) ให้หน่อย แล้วยืนยันเวอร์ชัน
แล้วมันก็จะลงมือรันใน PowerShell ประมาณนี้
irm https://astral.sh/uv/install.ps1 | iex
uv --version # ได้ uv 0.11.x ที่ %USERPROFILE%\.local\bin
ตัวติดตั้งจะวาง uv ไว้ที่ใต้โฟลเดอร์ผู้ใช้ ไม่แตะ Python ของระบบ พอ uv --version ขึ้นเวอร์ชันมาได้ ก็ถือว่าขานี้พร้อม uvx จะเรียกใช้ได้ตามมาเอง เพราะมันมาคู่กันกับ uv
4. ลง conda แล้วสร้าง env ใส่ PyNite
มาถึงขาคำนวณ การวิเคราะห์โครงสร้างผมใช้ PyNite ซึ่งเป็นเครื่องมือคำนวณเฟรมแบบ FEA ที่เขียนด้วย Python ล้วน ไม่ต้องพึ่งตัวคอมไพล์อะไรให้ปวดหัว ผมจัดการ Python ด้วย conda เพื่อแยก environment ออกมาต่างหาก ไม่ให้ไปชนกับ Python หลักของเครื่อง ถ้าเครื่องยังไม่มี conda ก็สั่งให้ Claude ลง Miniconda แบบ silent ได้เลย ใครมี Anaconda อยู่แล้วข้ามขั้นการลงตรงนี้ไปได้ ไปสร้าง env ต่อได้เลย คำสั่งที่ผมพิมพ์
เช็กว่ามี conda ไหม ถ้าไม่มีช่วยลง Miniconda แบบ silent (ลงเฉพาะผู้ใช้ ไม่ยุ่ง PATH ระบบ)
แล้ว conda init powershell ให้ด้วย จากนั้นสร้าง env ชื่อ ml313 (Python 3.13)
ลง PyNiteFEA + numpy แล้วทดสอบ import ว่าผ่าน
ส่วนที่มันรันจริงเพื่อสร้าง env กับลงไลบรารีและทดสอบ ก็จะออกมาแนวนี้
conda create -n ml313 python=3.13 -y
conda run -n ml313 pip install PyNiteFEA numpy
conda run -n ml313 python -c "from Pynite import FEModel3D; print('PyNite ok')"
บรรทัดสุดท้ายคือการทดสอบ import ถ้าขึ้นข้อความ PyNite ok ออกมาก็แปลว่าไลบรารีพร้อมใช้แล้ว ไม่มีอะไรขาด
บน Windows ถ้าพิมพ์ python ลอยๆ มันอาจไปโดน Microsoft Store stub ที่พิมพ์แล้วเงียบ ไม่มีอะไรขึ้น ทำเอางง เวลารันสคริปต์ FEA ให้ใช้ conda run -n ml313 python ... หรือเรียก path เต็มอย่าง ...\envs\ml313\python.exe เสมอ จะได้ตัว Python ที่เราตั้งใจทุกครั้ง
เช็กลิสต์เมื่อจบ Part 1
ก่อนจะข้ามไป Part 2 ของพวกนี้ต้องครบทุกข้อ ผมแนะนำให้ไล่เช็กตามนี้ทีละบรรทัด เพราะถ้าข้ามไปทั้งๆ ที่ยังขาด เดี๋ยวไปติดเอาตอนต่อท่อในตอนหน้าแล้วจะหาสาเหตุยาก
VS Code + Claude Code + login เห็นแผง Claude แล้ว / SketchUp ลงเรียบร้อย / uv กับ uvx เรียก uvx --version ขึ้นเวอร์ชัน / conda ไม่ว่า Miniconda หรือ Anaconda เรียก conda --version ขึ้น / env ml313 มี PyNiteFEA แล้ว ทดสอบ conda run -n ml313 python -c "import Pynite" ผ่าน / git ติดเครื่องไว้ เดี๋ยวต้องใช้โคลน repo ปลั๊กอินใน Part 2
จบ Part 1 แค่นี้ครับ ย้ำว่าของยังไม่ได้เชื่อมเข้า SketchUp เลยนะ เราเพิ่งเตรียมเครื่องมือทั้งสองขาให้พร้อมเฉยๆ ยังไม่มีเส้นไหนถูกวาดออกมาทั้งสิ้น Part 2 จะเป็นการทำปลั๊กอินให้ Claude มองเห็นและขับ SketchUp ได้จริงผ่าน MCP ซึ่งตรงนั้นมีบั๊กที่คนติดกันบ่อยอยู่ 2 ตัว ผมจะเล่าวิธีกันไว้ตั้งแต่แรกเลย จะได้ไม่ต้องไปเสียเวลางมเอง
อ่านต่อ Part 2 — เชื่อม MCP plugin เข้า SketchUp ที่ /article/sketchup-claude-2-mcp-plugin
ตรงไหนที่ผมเขียนพลาด เดี๋ยวจะกลับมาแก้ในภายหลังครับ ตามสะดวก เครื่องใครจัดไว้ยังไงก็ปรับตามนั้นได้ หลักการเตรียมของเหมือนกันหมด
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



ความคิดเห็น 0
ยังไม่มีความคิดเห็น — เป็นคนแรกเลย