Dùng Claude MCP để vẽ chi tiết máy hoàn chỉnh trong AutoCAD

Bạn mô tả chi tiết bằng tiếng Việt trong ô chat, Claude điều khiển AutoCAD vẽ thật trên bản vẽ — từ một hình chữ nhật đầu tiên cho tới chi tiết trục bậc đầy đủ kích thước, khung tên và xuất PDF.

9 chương Nền tảng: Claude Desktop + multiCAD-mcp Yêu cầu: Windows + AutoCAD bản full Đích đến: bản vẽ chi tiết trục hoàn chỉnh

Chương 1

Giới thiệu: MCP là gì và vì sao Claude vẽ được AutoCAD

1.1. MCP (Model Context Protocol) là gì?

MCP (Model Context Protocol) là một chuẩn mở do Anthropic công bố vào cuối năm 2024. Nó định nghĩa cách một mô hình AI kết nối với các công cụ và nguồn dữ liệu bên ngoài — giống như cách USB định nghĩa một chuẩn cắm chung cho mọi thiết bị.

Trong hệ MCP có hai phía:

  • MCP server: chương trình chạy trên máy của bạn, cung cấp một danh sách tools (công cụ) mà AI có thể gọi — ví dụ tool "vẽ đường tròn", tool "tạo layer", tool "chèn block".
  • MCP client: ứng dụng chứa AI — ở đây là Claude Desktop. Khi bạn chat, Claude đọc danh sách tools của server, quyết định gọi tool nào, với tham số gì, và server thực thi lệnh đó trong phần mềm thật.

Hiểu đơn giản: MCP cho Claude một "kênh lệnh" vào phần mềm. Claude không tự vẽ bằng chuột — nó gọi các tool theo đúng thứ tự, và phần mềm đích (AutoCAD) mới là nơi bản vẽ thật sự thay đổi.

Người dùng chat tiếng Việt Claude Desktop MCP client hiểu yêu cầu, chọn tool, điền tham số multiCAD-mcp MCP server (Python) nhận tool call, dịch sang lệnh CAD AutoCAD chat stdio tool call COM AutoLISP Server chạy ngay trên máy của bạn — bản vẽ không rời khỏi máy.
Hình 1.1 — Kiến trúc MCP. Claude Desktop và MCP server nói chuyện qua stdio (luồng vào/ra chuẩn trên cùng một máy); MCP server điều khiển AutoCAD qua COM và AutoLISP — công nghệ tự động hóa có sẵn của AutoCAD trên Windows. Mũi tên hai chiều vì mỗi tool call đều có kết quả trả về cho Claude kiểm tra.

1.2. Vì sao dùng Claude + AutoCAD?

Cách làm việc thay đổi tận gốc: thay vì tự tay gõ lệnh LINE, CIRCLE, RECTANGLE hàng trăm lần, bạn mô tả kết quả bằng lời và Claude điều khiển AutoCAD vẽ. Cách này mạnh nhất ở những việc có ba đặc điểm:

  • Lặp đi lặp lại: vẽ lưới lỗ bu-lông 8×12, hàng cột cách đều nhau, 40 block thiết bị xếp theo dây chuyền.
  • Tốn thời gian nhưng dễ mô tả: dọn layer lộn xộn về đúng quy ước, đánh số thiết bị hàng loạt, ghi chú giống nhau cho nhiều chi tiết.
  • Có quy luật rõ ràng: mọi kích thước, khoảng cách, tên gọi đều nói được bằng câu chữ và con số cụ thể.

Ngược lại, việc cần cảm nhận hình khối, phán đoán kỹ thuật hay đọc bản vẽ giấy thì vẫn là việc của kỹ sư. Claude qua MCP là một "tay vẽ" cực nhanh và không biết mệt — nhưng nó vẽ đúng những gì bạn mô tả, kể cả khi bạn mô tả sai. Chương 9 sẽ nói kỹ về giới hạn này.

1.3. Phân biệt quan trọng: MCP chính chủ của Autodesk KHÔNG vẽ được

Đây là điểm rất nhiều người nhầm. Khi tìm "AutoCAD MCP" bạn sẽ gặp hai loại server hoàn toàn khác nhau:

  • MCP chính chủ của Autodesk (Product Help MCP Server): chỉ cho Claude đọc tài liệu help của các sản phẩm Autodesk để trả lời câu hỏi kiểu "lệnh này dùng thế nào". Nó không chạm vào bản vẽ, không vẽ được bất cứ thứ gì.
  • MCP cộng đồng (ở đây là multiCAD-mcp): điều khiển AutoCAD thật qua COM/AutoLISP, có tools vẽ, sửa, ghi kích thước, xuất bản vẽ. Đây mới là thứ hướng dẫn này dùng.
MCP chính chủ (Autodesk) Product Help MCP Server Tài liệu help 110+ sản phẩm đọc được Bản vẽ DWG file đang mở không chạm vào MCP cộng đồng multiCAD-mcp — dùng trong hướng dẫn này Bản vẽ DWG vẽ · sửa · đo · xuất vẽ được thật Điều khiển qua COM / AutoLISP cài thêm trên máy, không phải của Autodesk
Hình 1.2 — Hai loại MCP rất khác nhau. MCP chính chủ của Autodesk chỉ đọc tài liệu help (dấu ✓ ở tài liệu, dấu ✗ ở bản vẽ). Muốn Claude vẽ thật phải dùng MCP cộng đồng như multiCAD-mcp. Bạn vẫn có thể cài cả hai song song: một cái để tra cứu, một cái để vẽ.

Lưu ý quan trọng

Toàn bộ hướng dẫn này dùng multiCAD-mcp. Khi đọc tài liệu trên mạng, hãy kiểm tra kỹ server bạn sắp cài có tools điều khiển bản vẽ hay chỉ là server đọc tài liệu — tên gọi "MCP" giống nhau nhưng khả năng khác nhau hoàn toàn.

Chương tiếp theo
Chương 2 · Chuẩn bị
→

Chương 2

Chuẩn bị: máy, phần mềm và kiến thức nền

Trước khi cài đặt, hãy kiểm tra đủ 5 mục dưới đây. Thiếu một mục, quá trình cài ở Chương 3 sẽ dừng giữa chừng — thường là ở đúng bước khó gỡ nhất.

Hạng mụcYêu cầuLý do / ghi chú
Hệ điều hành Windows 10 hoặc Windows 11 Bắt buộc. multiCAD-mcp điều khiển AutoCAD qua COM — công nghệ tự động hóa riêng của Windows. Không có đường vòng qua macOS hay Linux cho hướng dẫn này.
AutoCAD Bản full, phiên bản 2024 trở lên Server loại .NET cần AutoCAD bản full. Bản LT bị cắt nhiều khả năng tự động hóa — với LT chỉ dùng được server loại AutoLISP, không dùng được đầy đủ như hướng dẫn này.
Python Python 3.10 trở lên, cài native trên Windows MCP server viết bằng Python và cần thư viện pywin32 để nói chuyện với COM. Không dùng WSL — Python trong WSL không chạm được vào AutoCAD đang chạy trên Windows.
Claude Desktop Cài bản desktop cho Windows, đăng nhập tài khoản Pro Claude Desktop là MCP client: nó đọc file config, khởi động MCP server và hiển thị danh sách tools trong ô chat. Tài khoản Pro là đủ cho nhu cầu chat + MCP.
Kiến thức AutoCAD Biết cơ bản về layer, block, dimension Bạn không cần vẽ nhanh bằng tay, nhưng cần đọc hiểu bản vẽ để kiểm tra kết quả Claude vẽ: layer nào chứa gì, block khác đối tượng thường ở đâu, dimension đo cái gì. Chương 4–5 sẽ ôn lại qua ví dụ thực tế.

Kiểm tra nhanh trước khi sang Chương 3

  • Mở PowerShell, gõ py --version — phải hiện Python 3.10 trở lên. Nếu chưa có, cài Python từ python.org và nhớ tick ô Add python.exe to PATH khi cài.
  • Mở AutoCAD, tạo một bản vẽ mới trống — AutoCAD phải chạy ổn định, không báo lỗi license.
  • Mở Claude Desktop và đăng nhập thành công, chat thử một câu bất kỳ.
  • Chọn sẵn một thư mục cố định để chứa mã nguồn MCP server, ví dụ C:\CAD\. Đường dẫn này sẽ xuất hiện trong file config ở Chương 3 — chọn đường dẫn ngắn, không dấu tiếng Việt, không khoảng trắng để tránh lỗi không đáng có.

Cảnh báo

Đừng cài Python qua WSL rồi thắc mắc vì sao server không thấy AutoCAD. COM là cầu nối phía Windows: Python, MCP server và AutoCAD phải cùng chạy trên Windows. Đây là lỗi tốn thời gian nhất của người mới vì thông báo lỗi thường không nói rõ nguyên nhân.

Chương tiếp theo
Chương 3 · Cài đặt từng bước
→

Chương 3

Cài đặt từng bước với multiCAD-mcp

Làm đúng thứ tự 5 bước dưới đây. Sau mỗi bước đều có khung Kết quả mong đợi — nếu chưa thấy đúng dấu hiệu đó thì dừng lại xử lý ngay, đừng làm tiếp, vì các bước sau đều dựa trên bước trước.

Bước 1

Cài uv — trình quản lý môi trường Python

uv là công cụ quản lý package và môi trường ảo Python, nhanh và gọn. Mở PowerShell (bấm phím Windows, gõ "PowerShell", Enter) và chạy lệnh sau:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Đóng PowerShell rồi mở lại để PATH được cập nhật, sau đó kiểm tra bằng lệnh uv --version.

Kết quả mong đợi

Lệnh uv --version in ra một dòng chứa số phiên bản (dạng uv 0.x.x). Nếu báo "uv is not recognized" thì bạn chưa mở lại PowerShell sau khi cài.

Bước 2

Clone mã nguồn và cài đặt thư viện

Vẫn trong PowerShell, di chuyển vào thư mục đã chọn ở Chương 2 (ví dụ C:\CAD) rồi clone repo và cài đặt:

cd C:\CAD
git clone https://github.com/AnCode666/multiCAD-mcp.git
cd multiCAD-mcp
uv sync --dev
uv run python -m pip install --upgrade pywin32

Trong đó: uv sync --dev tạo môi trường ảo .venv ngay trong thư mục dự án và cài mọi thư viện cần thiết; dòng cuối cài/nâng cấp pywin32 — thư viện bắt buộc để Python gọi được COM của Windows.

Cách thay thế nếu không dùng uv

py -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
py -m pip install --upgrade pywin32

Kết quả mong đợi

Trong thư mục multiCAD-mcp xuất hiện thư mục .venv, và đường dẫn C:\CAD\multiCAD-mcp\.venv\Scripts\python.exe tồn tại thật. Ghi lại đường dẫn này — Bước 3 sẽ dùng nguyên văn.

Bước 3

Thêm server vào file config của Claude Desktop

Mở Claude Desktop → vào menu Settings → mục Developer → bấm nút Edit Config. Claude Desktop sẽ mở file claude_desktop_config.json — file này nằm tại:

C:\Users\<tên-user>\AppData\Roaming\Claude\claude_desktop_config.json

Thêm đoạn sau vào file (nếu file đang trống hoặc chỉ có {} thì thay toàn bộ bằng đoạn này):

{
  "mcpServers": {
    "multiCAD": {
      "command": "C:\\CAD\\multiCAD-mcp\\.venv\\Scripts\\python.exe",
      "args": ["C:\\CAD\\multiCAD-mcp\\src\\server.py"]
    }
  }
}

Cấu trúc file config có dạng cây như sau — hiểu cây này sẽ giúp bạn tự sửa khi chuyển máy hoặc đổi thư mục cài đặt:

claude_desktop_config.json "mcpServers": { } "multiCAD": { } "command": "C:\\CAD\\multiCAD-mcp\\.venv\\Scripts\\python.exe" "args": ["C:\\CAD\\multiCAD-mcp\\src\\server.py"] command = chương trình sẽ chạy · args = tham số truyền cho chương trình đó
Hình 3.1 — Cấu trúc file claude_desktop_config.json. Khóa multiCAD là tên server do bạn tự đặt (tên này hiện trong Claude Desktop). command phải là đường dẫn tuyệt đối tới python.exe nằm trong thư mục .venv của dự án; args chứa đường dẫn tới file server.py.

Lưu ý quan trọng

  • Bắt buộc dùng đường dẫn TUYỆT ĐỐI tới python trong .venv (ví dụ C:\CAD\multiCAD-mcp\.venv\Scripts\python.exe). Đừng điền lệnh py của hệ thống — Python hệ thống không có các thư viện đã cài trong .venv, server sẽ chết ngay khi khởi động mà không báo lỗi rõ ràng.
  • Trong JSON, mỗi dấu \ của đường dẫn Windows phải viết thành \\. Quên thoát dấu này là nguyên nhân phổ biến nhất khiến file config bị lỗi cú pháp và Claude Desktop bỏ qua toàn bộ config.
  • Nếu trong file đã có sẵn server khác, chỉ thêm khóa "multiCAD" vào bên trong "mcpServers", đừng ghi đè mất phần cũ.

Kết quả mong đợi

File lưu lại không báo lỗi khi mở bằng Notepad/VS Code; nội dung JSON hợp lệ (đủ dấu ngoặc đóng, không thừa dấu phẩy ở phần tử cuối).

Bước 4

Khởi động lại Claude Desktop và kiểm tra tools

Thoát hẳn Claude Desktop: chuột phải vào icon Claude ở khay hệ thống (góc phải thanh taskbar) → chọn Exit. Chỉ đóng cửa sổ là chưa đủ — app vẫn chạy nền và giữ config cũ. Sau đó mở lại Claude Desktop.

Trong ô chat, tìm icon hình cái búa / tools và bấm vào. Bạn phải thấy một mục server tên multiCAD kèm danh sách tools của nó (vẽ hình, layer, block, dimension...).

Kết quả mong đợi

Server multiCAD xuất hiện trong danh sách tools của ô chat. Nếu không thấy: kiểm tra lại cú pháp JSON ở Bước 3 và xem log tại %APPDATA%\Claude\logs\ (chi tiết ở Chương 9).

Bước 5

Vẽ thử hình đầu tiên

Mở AutoCAD, tạo một bản vẽ mới (menu File → New). Giữ cửa sổ AutoCAD đang mở, quay sang Claude Desktop và chat:

Câu chat mẫu

Vẽ hình chữ nhật 100x50 tại gốc tọa độ, đặt trên layer 0

Khi Claude hỏi quyền gọi tool (nút Allow for This Chat), bấm đồng ý. Chuyển sang cửa sổ AutoCAD và quan sát.

Kết quả mong đợi

AutoCAD tự xuất hiện hình chữ nhật 100×50 tại gốc tọa độ mà bạn không hề chạm chuột. Nếu hình chưa hiện trong khung nhìn, gõ lệnh ZOOM → E (Extents) trong AutoCAD để xem toàn cảnh. Xin chúc mừng — hệ thống đã thông.

Chương tiếp theo
Chương 4 · Cơ bản
→

Chương 4

Cơ bản: vẽ hình, layer, di chuyển và copy

Chương này dạy bạn "ngữ pháp" tối thiểu khi ra lệnh cho Claude: nêu rõ đối tượng gì, ở đâu, kích thước bao nhiêu, thuộc tính gì. Câu chat càng đủ bốn yếu tố này, kết quả càng đúng ngay lần đầu.

4.1. Vẽ hình cơ bản

Câu chat mẫu

Vẽ đường tròn tâm (50,50) bán kính 25 màu đỏ

Câu chat mẫu

Vẽ đoạn thẳng từ (0,0) đến (100,0)

Đằng sau hai câu chat này, Claude lần lượt gọi tool tương ứng với lệnh CIRCLE và LINE của AutoCAD, điền tọa độ và bán kính bạn đã nêu. Các hình quen thuộc khác — RECTANGLE, ARC, POLYLINE — cũng ra lệnh theo đúng mẫu câu trên: tên hình + tọa độ + kích thước.

X Y (0,0) 100 50 RECTANGLE 100×50 R25 tâm (50,50) CIRCLE R25, màu đỏ
Hình 4.1 — Hai hình cơ bản đầu tiên. Hình chữ nhật 100×50 đặt tại gốc tọa độ (0,0) — kích thước ghi ở cạnh dưới (100) và cạnh trái (50). Đường tròn tâm (50,50), bán kính R25, tô màu đỏ; đường tâm đứt nét dài–ngắn là quy ước vẽ kỹ thuật cho trục đối xứng.

Kết quả mong đợi

Đường tròn đỏ hiện đúng tâm (50,50); đoạn thẳng nằm trên trục X từ 0 đến 100. Gõ LIST trong AutoCAD, chọn đường tròn — bảng thông tin phải ghi radius = 25. Nếu sai tọa độ, thường là do câu chat thiếu dấu ngoặc hoặc lẫn đơn vị: hãy chat lại với tọa độ viết rõ dạng (x,y).

4.2. Quản lý layer

Layer là cách AutoCAD phân loại đối tượng theo chức năng (nét chính, nét đứt, đường tâm, kích thước...). Ra lệnh cho Claude quản lý layer cũng bằng câu chữ thường:

Câu chat mẫu

Tạo layer NET_DUT_MAY màu xanh dương, chuyển các đường tròn sang layer đó

Claude sẽ tạo layer mới với màu chỉ định, rồi quét bản vẽ, chọn mọi đường tròn và đổi thuộc tính layer của chúng. Việc này làm tay rất chán khi bản vẽ có hàng trăm đối tượng — đúng kiểu việc MCP làm tốt nhất.

Layer NET_DUT_MAY — các đường tròn Layer 0 — hình chữ nhật chính Layer DUONG_TAM — đường tâm, nét gạch chấm Ba layer tách riêng → chồng khớp lên nhau = bản vẽ hoàn chỉnh Tắt 1 layer = ẩn cả nhóm đối tượng thuộc layer đó
Hình 4.2 — Tư duy layer. Mỗi layer là một "tấm phim trong" chứa một nhóm đối tượng cùng chức năng, cùng màu/nét. Tách đối tượng đúng layer ngay từ đầu giúp việc sửa, ẩn/hiện và in ấn về sau nhẹ nhàng hơn nhiều — và là việc nên giao cho Claude làm hàng loạt.

Kết quả mong đợi

Mở bảng Layer Properties (lệnh LA): thấy layer NET_DUT_MAY màu xanh dương. Tắt layer này (biểu tượng bóng đèn) — mọi đường tròn biến mất khỏi màn hình, các hình khác vẫn còn.

4.3. Di chuyển và copy hàng loạt

Câu chat mẫu

Copy hình chữ nhật thành 3 bản cách nhau 20mm theo trục X

Câu chat mẫu

Di chuyển tất cả sang phải 50

Lưu ý cách diễn đạt: nói rõ số bản copy, khoảng cách và hướng/trục. Với "di chuyển tất cả", Claude hiểu là toàn bộ đối tượng trong bản vẽ — hãy chắc chắn đó đúng là ý bạn trước khi bấm Allow for This Chat.

Kết quả mong đợi

Sau câu copy: có tổng cộng 4 hình chữ nhật (1 gốc + 3 bản) xếp cách đều 20mm dọc trục X. Sau câu di chuyển: toàn bộ hình dịch sang phải đúng 50 đơn vị — kiểm tra bằng cách LIST một đối tượng và so tọa độ trước/sau.

Lưu ý quan trọng

Đơn vị trong AutoCAD mặc định là "đơn vị bản vẽ" — với bản vẽ cơ khí ở Việt Nam, quy ước chung là 1 đơn vị = 1mm. Nhưng khi làm layout nhà máy (Chương 7), khoảng cách có thể tính bằng mét ("cách nhau 15m"). Hãy nói rõ đơn vị trong câu chat mỗi khi con số có thể gây hiểu nhầm.

Chương tiếp theo
Chương 5 · Trung cấp
→

Chương 5

Trung cấp: block, attribute, dimension và dimstyle

Đây là chương bước ngoặt: từ "vẽ từng nét" lên "lắp ráp từ linh kiện chuẩn". Block là nền tảng của mọi bản vẽ chuyên nghiệp — và là nền tảng cho thư viện riêng ở Chương 7.

5.1. Tạo block từ đối tượng có sẵn

Vẽ một đối tượng mẫu một lần (ví dụ mặt bằng một lò nung), chọn nó trong AutoCAD, rồi ra lệnh:

Câu chat mẫu

Tạo block tên LO_NUNG_01 từ các đối tượng đã chọn, base point tại tâm lò

Đằng sau, Claude chạy quy trình tương đương lệnh BLOCK: gom các đối tượng đã chọn thành một định nghĩa block duy nhất. Base point (điểm gốc chèn) là điểm "tay cầm" của block — khi chèn, block sẽ bám vào con trỏ tại đúng điểm này. Chọn base point tại tâm (với vật tròn/xoay) hoặc tại một góc chuẩn (với vật chữ nhật) sẽ giúp việc đặt block sau này chính xác và dễ đoán.

Đối tượng gốc (vẽ tay) BLOCK LO_NUNG_01 base point = tâm lò Attribute đi kèm block MA = LO_NUNG_01 TEN = Lò nung cán nóng CONG_SUAT = 75kW Sửa định nghĩa block 1 lần → mọi lần chèn của block đều thay đổi theo
Hình 5.1 — Giải phẫu một block chuẩn. Ba thành phần: hình học (đối tượng gốc được gom lại), base point (điểm đỏ tại tâm — điểm bám khi chèn) và attribute (dữ liệu chữ đi kèm: mã, tên, công suất). Attribute là thứ biến block từ "hình vẽ" thành "thiết bị có thông tin".

Kết quả mong đợi

Các đối tượng rời rạc giờ chọn như một đối tượng duy nhất; bấm đúp vào nó, AutoCAD báo đây là block LO_NUNG_01. Kéo thả/chèn thử: block bám chuột tại đúng tâm lò.

5.2. Chèn block hàng loạt bằng lệnh INSERT

Câu chat mẫu

Chèn 3 block LO_NUNG_01 cách nhau 15m theo trục X

Mỗi lần chèn (tương đương lệnh INSERT) chỉ tạo một tham chiếu tới định nghĩa block — bản vẽ không nặng thêm bao nhiêu dù bạn chèn 3 hay 300 block. Đây là khác biệt cốt lõi giữa block và copy: copy nhân bản hình học, block nhân bản tham chiếu.

Kết quả mong đợi

Ba lò nung xuất hiện thẳng hàng, khoảng cách tâm–tâm đúng 15m. Dùng lệnh DIST đo giữa hai tâm liên tiếp để tự kiểm chứng.

5.3. Đọc và ghi block attribute

Attribute là dữ liệu chữ gắn trong block: tên máy, mã thiết bị, công suất... Mỗi lần chèn một block, các giá trị này có thể khác nhau dù hình học giống hệt. Với Claude, việc đọc/ghi attribute là việc giao tiếp hai chiều rất đáng giá:

Câu chat mẫu

Liệt kê các block LO_NUNG_01 trong bản vẽ kèm attribute CONG_SUAT của từng block

Câu chat mẫu

Đặt attribute CONG_SUAT = 90kW cho block lò nung thứ hai

Kết quả mong đợi

Claude trả về danh sách đúng số lượng block đang có trong bản vẽ kèm giá trị attribute hiện tại. Sau lệnh ghi, bấm đúp vào block thứ hai — hộp thoại attribute hiển thị CONG_SUAT = 90kW. Khả năng "đọc lại bản vẽ" này cũng là cách Claude tự kiểm tra việc mình vừa làm.

5.4. Dimension và ghi chú — ghi kích thước, ghi chữ

Câu chat mẫu

Ghi kích thước chiều dài tổng của chi tiết

Câu chat mẫu

Ghi chú 'Vật liệu: thép CT3' tại vị trí phía trên chi tiết, cỡ chữ 3.5

Dimension qua MCP tương ứng với họ lệnh DIMLINEAR, DIMDIAMETER, DIMRADIUS... của AutoCAD: Claude chọn hai điểm đo, đặt đường kích thước và AutoCAD tự tính con số. Ghi chú文字 là đối tượng text thường — dùng cho vật liệu, yêu cầu kỹ thuật, tiêu đề hình vẽ.

120 80 ⌀12 (×2 lỗ) Ghi chú: Vật liệu: thép CT3 DIMLINEAR · DIMDIAMETER TEXT cho ghi chú chữ
Hình 5.2 — Dimension và ghi chú trên một chi tiết đơn giản. Tấm thép 120mm có 2 lỗ ⌀12, tâm lỗ cách nhau 80mm. Đường kích thước (màu đỏ trong hình minh họa) luôn đo từ hình học thật — con số do AutoCAD tính, không phải do Claude "nghĩ ra", nên đây là số đáng tin nhất trên bản vẽ.

5.5. Dimstyle — thiết lập kiểu kích thước một lần, dùng mãi

Dimstyle quy định toàn bộ diện mạo của dimension: kiểu mũi tên, cỡ chữ số, khoảng cách đường dóng, đơn vị (mm), số lẻ thập phân. Nếu không thiết lập, mỗi dimension Claude tạo ra sẽ theo style mặc định — thường sai chuẩn trình bày của bản vẽ kỹ thuật Việt Nam.

Câu chat mẫu

Tạo dimstyle tên CT3_MM: đơn vị mm, chữ số cao 3.5, mũi tên đặc dài 3, và đặt làm dimstyle hiện hành

Kết quả mong đợi

Mở hộp thoại Dimension Style (lệnh DIMSTYLE): thấy style CT3_MM trong danh sách và đang là Current. Mọi dimension tạo sau đó đều đồng nhất về mũi tên và cỡ chữ.

Chương tiếp theo
Chương 6 · Nâng cao — vẽ chi tiết trục hoàn chỉnh
→

Chương 6

Nâng cao: vẽ chi tiết trục (shaft) hoàn chỉnh

Đây là bài tập xuyên suốt của hướng dẫn: dùng mọi kỹ năng đã học để vẽ một chi tiết trục bậc hoàn chỉnh — đúng việc bạn sẽ làm thật ngoài công việc. Thông số chi tiết mẫu:

Thông sốGiá trịGhi chú
Chiều dài tổng200mmBa bậc cộng lại: 60 + 80 + 60
Bậc 1 (trái)Ø25 × 60mmCó rãnh then rộng 8mm, sâu 4mm; lỗ tâm ở đầu mút
Bậc 2 (giữa)Ø40 × 80mmBậc lớn nhất — lắp vòng bi/bạc đạn
Bậc 3 (phải)Ø32 × 60mmLỗ tâm ở đầu mút
Vát mép (chamfer)1×45°Ở hai đầu mút trục
Bo góc (fillet)R2Tại vai chuyển bậc Ø25→Ø40 và Ø40→Ø32
Vật liệuThép CT3Ghi trong khung tên và ghi chú
Bước 1

Vẽ biên dạng 2D — nửa mặt cắt trên bằng polyline

Trục là vật tròn xoay: chỉ cần vẽ biên dạng nửa trên theo đường tâm, gồm các đoạn bậc thang Ø25 → Ø40 → Ø32. Dùng một POLYLINE liên tục để sau này dễ đối xứng (mirror) xuống nửa dưới và dễ sửa.

Câu chat mẫu

Vẽ đường tâm ngang tại y=0 dài 220. Từ điểm (0, 12.5) vẽ polyline biên dạng nửa trên của trục dài tổng 200: bậc Ø25 dài 60, bậc Ø40 dài 80, bậc Ø32 dài 60, khép xuống đường tâm ở hai đầu. Sau đó mirror biên dạng qua đường tâm để được mặt cắt đầy đủ

Kết quả mong đợi

Mặt cắt trục hiện đúng dạng bậc thang đối xứng qua đường tâm: đo chiều cao tại bậc giữa được 40, hai bậc bên lần lượt 25 và 32; tổng chiều dài đúng 200.

Bước 2

Thêm rãnh then và lỗ tâm

Rãnh then trên bậc Ø25: rãnh chữ nhật rộng 8, sâu 4 tính từ mặt ngoài, chạy dọc 40mm ở giữa bậc. Lỗ tâm ở hai đầu mút: biểu diễn bằng hai đoạn chéo dạng côn 60° theo quy ước mặt cắt.

Câu chat mẫu

Trên bậc Ø25, vẽ rãnh then rộng 8 sâu 4, dài 40, nằm giữa bậc. Vẽ lỗ tâm dạng côn ở cả hai đầu mút trục theo mặt cắt

Kết quả mong đợi

Trên mặt cắt thấy rãnh then ăn sâu đúng 4mm vào bậc Ø25 (đáy rãnh cách đường tâm 8.5mm); hai đầu mút có hình côn lỗ tâm đối xứng.

Bước 3

Chamfer 1×45° và fillet R2 tại các vai bậc

Câu chat mẫu

Vát mép 1x45 độ ở hai đầu mút trục. Bo góc R2 tại hai vai chuyển bậc Ø25 lên Ø40 và Ø40 xuống Ø32

Lưu ý quan trọng

Một số thao tác FILLET/CHAMFER chỉ chạy ổn khi điều khiển qua live app (AutoCAD đang mở và tương tác trực tiếp), còn qua đường headless dễ thất bại lặng lẽ. Sau bước này bắt buộc zoom vào từng vai bậc và đầu mút để kiểm tra bằng mắt — đừng tin câu trả lời "đã xong" của chat.

Kết quả mong đợi

Hai đầu mút có cạnh vát chéo rõ ràng; tại vai bậc, góc vuông sắc đã thành cung bo R2 mượt. Nếu vai bậc vẫn vuông góc, fillet đã không chạy — yêu cầu Claude làm lại qua live app.

Bước 4

Ghi kích thước đầy đủ

Nguyên tắc ghi kích thước cho trục: đường kính ghi ở mặt cắt dọc (kèm ký hiệu Ø), chiều dài từng bậc ghi thành chuỗi phía dưới, chiều dài tổng ghi riêng một dòng ngoài cùng, kèm kích thước rãnh then và ghi chú độ nhám nếu bản vẽ yêu cầu.

Câu chat mẫu

Dùng dimstyle CT3_MM. Ghi đường kính Ø25, Ø40, Ø32 cho ba bậc ở phía trên mặt cắt. Phía dưới ghi chuỗi chiều dài 60, 80, 60 và chiều dài tổng 200. Ghi kích thước rãnh then 8x4 và vát mép 1x45 độ

Kết quả mong đợi

Đủ 3 kích thước đường kính, chuỗi 60–80–60 và tổng 200 (60+80+60 khớp nhau — tự kiểm chứng chéo). Mọi con số do AutoCAD đo từ hình học; nếu một con số lệch khỏi bảng thông số đầu chương, sai nằm ở hình vẽ chứ không phải ở dimension — quay lại bước tương ứng sửa hình.

Bước 5

Khung tên (title block)

Khung tên là phần "hồ sơ" của bản vẽ: tên chi tiết, vật liệu, tỷ lệ, người vẽ, ngày vẽ. Vẽ khung bằng các lệnh cơ bản rồi điền text — hoặc chèn một block khung tên có sẵn nếu bạn đã có mẫu công ty.

Câu chat mẫu

Vẽ khung tên ở góc dưới phải bản vẽ và điền: Tên chi tiết: TRUC BAC 3 CAP; Vật liệu: thép CT3; Tỷ lệ: 1:1; Người vẽ: (để trống); Ngày: hôm nay

Kết quả mong đợi

Khung tên xuất hiện đúng vị trí, đủ 5 trường thông tin. Đây là chi tiết nhỏ nhưng là thứ phân biệt "hình vẽ" với "bản vẽ kỹ thuật" khi mang đi duyệt hoặc gia công.

Bước 6

Kiểm tra toàn bộ và xuất PDF bằng PLOT

Câu chat mẫu

Liệt kê lại toàn bộ đối tượng trong bản vẽ theo layer, và kiểm tra có đối tượng nào nằm sai layer 0 không

Câu chat mẫu

Xuất bản vẽ ra PDF khổ A3 bằng lệnh PLOT, lưu vào thư mục bản vẽ với tên TRUC_BAC_3_CAP.pdf

Kết quả mong đợi

File PDF mở được, thấy đủ: mặt cắt trục, rãnh then, lỗ tâm, vát/bo góc, toàn bộ kích thước và khung tên điền đủ. In thử 1 bản giấy nếu sắp mang đi gia công.

R2 R2 1×45° (×2) Rãnh then 8×4 ⌀25 ⌀40 ⌀32 60 80 60 200 Lỗ tâm côn 60° ở hai đầu mút · Đường tâm: nét gạch chấm Tên chi tiết TRUC BAC 3 CAP Vật liệu Thép CT3 Tỷ lệ 1:1 Người vẽ — Ngày …/…/… Khung tên → đặt góc dưới phải bản vẽ
Hình 6.1 — Bản vẽ chi tiết trục hoàn chỉnh (mẫu đích). Mặt cắt dọc trục 3 bậc ⌀25/⌀40/⌀32, tổng dài 200 (chuỗi 60+80+60), rãnh then 8×4 trên bậc ⌀25, lỗ tâm hai đầu, vát mép 1×45°, bo góc R2 tại vai bậc, kích thước đường kính phía trên, chuỗi chiều dài phía dưới và khung tên đầy đủ. Đây là hình bạn phải đối chiếu sau mỗi bước — không phải hình để "ngắm cho vui".

Cảnh báo — kiểm tra bằng mắt trước khi tin

MCP cho Claude một kênh lệnh, không cho nó "nhận thức". Claude không nhìn thấy chi tiết thật, không tự biết kích thước nào là đúng — mọi kích thước trên bản vẽ đều xuất phát từ yêu cầu của bạn. Nếu bạn gõ nhầm Ø40 thành Ø400, Claude sẽ vẽ Ø400 một cách hoàn hảo. Người chịu trách nhiệm cuối cùng về bản vẽ luôn là bạn: zoom kiểm tra từng bước, đo lại bằng DIST/LIST, đối chiếu với Hình 6.1 trước khi xuất bản.

Chương tiếp theo
Chương 7 · Xây dựng thư viện block riêng
→

Chương 7

Xây dựng thư viện block riêng: tạo một lần, dùng mãi

Vẽ một cái máy mất một buổi; biến nó thành block chuẩn trong thư viện thì lần sau Claude đặt nó vào bất kỳ bản vẽ nào chỉ bằng một câu chat. Chương này là phần "đầu tư" — làm kỹ một lần, hưởng lợi mọi dự án về sau, đặc biệt là các dự án lớn như bố trí dây chuyền sản xuất với hàng chục thiết bị lặp lại.

7.1. Cách tạo một block chuẩn

Một block gọi là "chuẩn" khi nó thỏa bốn tiêu chí:

  • Tên theo quy ước — nhìn tên biết ngay loại thiết bị và số thứ tự (xem mục 7.4). Không đặt tên kiểu Block1, may moi, final2.
  • Base point hợp lý — đặt tại tâm (thiết bị tròn/xoay) hoặc góc chuẩn dưới–trái (thiết bị chữ nhật). Base point là điểm bạn sẽ dùng để định vị khi chèn; đặt tùy tiện thì mỗi lần chèn là một lần đoán.
  • Hình học sạch — vẽ trên layer 0 để block kế thừa màu/layer của nơi nó được chèn vào; không để sót đường thừa, điểm lạc, đối tượng trùng nhau.
  • Attribute đầy đủ — tối thiểu có mã, tên và thông số chính (công suất). Attribute là phần "dữ liệu" giúp Claude tìm, lọc và thống kê thiết bị trong bản vẽ.

Quy trình thực tế: vẽ thiết bị mẫu trong một bản vẽ nháp → dọn sạch → ra lệnh cho Claude tạo block theo Chương 5 → kiểm tra base point và attribute → lưu vào thư viện theo mục 7.2.

7.2. Tổ chức thư viện: một folder tập trung, mỗi loại máy một file DWG

Cách tổ chức bền vững nhất: mỗi loại máy là một file DWG riêng (trong file đó vẽ 1 block chuẩn của máy), tất cả nằm trong một folder tập trung duy nhất, chia thư mục con theo nhóm thiết bị:

D:\ThuVienBlock\
└── MayMoc\
    ├── LO_NUNG_01.dwg
    ├── MAY_CAN_02.dwg
    ├── BANG_TAI_03.dwg
    └── CAU_TRUC_01.dwg

Cách khác: gom block vào Tool Palette của AutoCAD để kéo–thả bằng chuột. Tool Palette tiện khi bạn tự vẽ tay; còn khi làm việc qua Claude + MCP, thư viện dạng file DWG trong folder rõ ràng sẽ dễ ra lệnh bằng câu chữ hơn ("chèn block từ file MAY_CAN_02.dwg trong thư viện").

Cấu trúc thư viện D:\ThuVienBlock\ MayMoc\ LO_NUNG_01.dwg MAY_CAN_02.dwg BANG_TAI_03.dwg CAU_TRUC_01.dwg 1 file = 1 loại máy = 1 block chuẩn. Cả thư viện gói trong 1 folder → backup 1 lần là xong. XREF so với copy block XREF — tham chiếu (nên dùng) Bản vẽ chỉ giữ đường link tới file thư viện: • File bản vẽ nhẹ, mở nhanh • Sửa file thư viện 1 nơi → mọi bản vẽ tự cập nhật • Rủi ro: di chuyển/đổi tên file nguồn là gãy link Copy block vào từng bản vẽ Mỗi bản vẽ chứa một bản sao hình học riêng: • File nặng dần, nhiều bản sao lệch phiên bản • Sửa thiết kế = sửa lại từng bản vẽ một • Được cái: gửi file đi là đủ, không lệ thuộc link
Hình 7.1 — Tổ chức thư viện block và bài toán tham chiếu. Bên trái: cây thư mục thư viện — một folder gốc, thư mục con theo nhóm máy, mỗi file DWG là một block chuẩn. Bên phải: XREF (tham chiếu ngoài) giúp file nhẹ và sửa một nơi cập nhật mọi nơi; copy block thì độc lập nhưng nặng và dễ lệch phiên bản. Dự án đang thiết kế: dùng XREF. Bàn giao file cho bên ngoài: cân nhắc bind/nhúng kèm file thư viện.

7.3. Quản lý hiệu quả, không tốn tài nguyên

  • Ưu tiên XREF cho thiết bị lớn/lặp lại nhiều: bản vẽ layout chỉ chứa link tham chiếu tới file thư viện, nên dung lượng nhỏ, mở và lưu nhanh; khi nhà cung cấp đổi model máy, bạn chỉ sửa file trong thư viện.
  • Thư viện tập trung một folder duy nhất: dễ backup, dễ chuyển máy, dễ chỉ cho Claude đúng đường dẫn. Tuyệt đối tránh block nằm rải rác trong hàng chục bản vẽ dự án khác nhau — đó là cách thư viện "chết" nhanh nhất.
  • Không nhồi nhét chi tiết thừa vào block thư viện: block mặt bằng thiết bị chỉ cần biên dạng, vị trí đấu nối và attribute chính. Chi tiết bu-lông, mối hàn thuộc về bản vẽ chế tạo, không thuộc block layout.

7.4. Gọi Claude dùng block trong thư viện qua MCP

Khi thư viện đã có, câu chat mẫu điển hình:

Câu chat mẫu

Chèn block MAY_CAN_02 tại tọa độ (12000, 4500), đặt attribute CONG_SUAT = 75kW

Câu chat mẫu

Đặt 4 block BANG_TAI_03 nối tiếp nhau theo trục X, mỗi block cách nhau đúng chiều dài băng tải, attribute MA đánh số tăng dần từ BANG_TAI_03 đến BANG_TAI_06

Kết quả mong đợi

Block xuất hiện đúng tọa độ; bấm đúp kiểm tra attribute CONG_SUAT đúng giá trị đã ra lệnh. Với lệnh hàng loạt, yêu cầu Claude liệt kê lại toàn bộ block vừa chèn kèm attribute để đối chiếu — bước tự kiểm tra này bắt được hầu hết lỗi đánh số.

7.5. Quy ước đặt tên cho dự án lớn

Với dự án cỡ dây chuyền sản xuất thép — hàng chục loại thiết bị, nhiều bản vẽ, nhiều người cùng làm — quy ước đặt tên không còn là "nên có" mà là bắt buộc. Mẫu quy ước dùng nhất quán cho cả tên block, tên file DWG và attribute MA:

TIEN_TO_LOAI_MA
Ví dụ:  LO_NUNG_01    (lò nung số 1)
        MAY_CAN_02    (máy cán số 2)
        BANG_TAI_03   (băng tải số 3)

Ba attribute bắt buộc có trong mọi block của dự án:

AttributeÝ nghĩaVí dụ
MAMã thiết bị — trùng tên block/fileMAY_CAN_02
TENTên đầy đủ của thiết bịMáy cán nóng 4 trục
CONG_SUATCông suất kèm đơn vị75kW

Nhờ ba attribute này, Claude có thể trả lời các câu hỏi thống kê ngay trên bản vẽ: "tổng công suất các máy cán", "liệt kê thiết bị chưa có CONG_SUAT" — việc mà đọc bằng mắt trên layout lớn là gần như không thể.

7.6. Backup và quản lý phiên bản

  • Backup theo ngày: nén toàn bộ folder D:\ThuVienBlock\ thành file ZIP kèm ngày tháng (ví dụ ThuVienBlock_2026-10-19.zip) và cất ở một nơi khác — ổ cứng ngoài hoặc cloud. Thư viện tích lũy nhiều tháng công sức, mất là làm lại từ đầu.
  • Git cho file DWG — dùng được nhưng phải hiểu giới hạn: DWG là file nhị phân, Git không hiển thị được diff nội dung và kho Git sẽ phình nhanh theo số phiên bản. Nếu dùng Git, chỉ commit khi block thay đổi thật, kèm commit message ghi rõ "sửa gì" (ví dụ: "MAY_CAN_02: đổi base point về tâm, thêm attribute CONG_SUAT") — vì bạn không xem lại được diff, message chính là nhật ký thay đổi duy nhất.
  • Không bao giờ sửa thẳng file thư viện khi đang vội: mở file, lưu một bản sao có hậu tố ngày, sửa trên bản sao, kiểm tra xong mới thay thế file chuẩn.
Chương tiếp theo
Chương 8 · Đóng gói LISP chạy local
→

Chương 8

Đóng gói thành LISP chạy local: Claude viết một lần, bạn dùng mãi không tốn token

MCP rất mạnh cho việc mới và việc khó — nhưng nếu ngày nào bạn cũng nhờ Claude làm đúng một việc cũ, bạn đang trả tiền token cho cùng một logic hết lần này đến lần khác. Chương này dạy cách thoát khỏi vòng lặp đó: nhờ Claude viết một lần thành file AutoLISP (.lsp), nạp vào AutoCAD, và từ đó chạy local mãi mãi — không cần mở Claude, không cần mạng, 0 token.

8.1. Vấn đề: mỗi lần vẽ qua MCP là một lần tốn token

Mỗi câu chat qua MCP đều tốn token ở cả hai chiều:

  • Token chiều vào (input): câu lệnh của bạn cộng với toàn bộ ngữ cảnh hội thoại và danh sách tools của MCP server mà Claude phải "đọc lại" để biết mình có công cụ gì. Hội thoại càng dài, phần này càng phình.
  • Token chiều ra (output): chuỗi tool call Claude sinh ra để vẽ — một việc vẽ lặp 50 đối tượng có thể là hàng chục tool call nối tiếp nhau.

Với việc làm một lần (thiết kế mới, xử lý tình huống lạ) thì chi phí đó xứng đáng. Nhưng với việc lặp đi lặp lại y hệt — vẽ dãy lỗ bu-lông, vẽ mặt bích, đánh số thiết bị — thì mỗi lần chạy lại là một lần trả tiền cho cùng một bài toán đã giải xong. Chưa kể tốc độ: mỗi lần phải chờ Claude suy luận và qua lại nhiều vòng chat, trong khi bản chất việc đó chỉ cần vài mili-giây tính toán.

Luồng A — Qua MCP trực tiếp: lần nào chạy cũng qua Claude Bạn chat yêu cầu vẽ Claude Desktop suy luận + gọi tool multiCAD-mcp dịch sang lệnh CAD AutoCAD vẽ Mỗi lần chạy lại: tốn token input + output, chờ mạng và chờ Claude suy luận — việc càng lặp, càng phí. Luồng B — LISP local: Claude chỉ xuất hiện đúng một lần Claude viết code chỉ 1 lần duy nhất File .lsp lưu vào thư viện chung APPLOAD nạp 1 lần trong AutoCAD Gõ tên lệnh vẽ ngay Từ lần thứ 2 trở đi: không qua Claude, không cần mạng — 0 token, chạy tức thì, kết quả giống hệt nhau mọi lần.
Hình 8.1 — Hai luồng làm cùng một việc. Luồng A (MCP trực tiếp) linh hoạt nhưng mỗi lần chạy là một lần tốn token. Luồng B (LISP local) tốn token đúng một lần khi Claude viết code; sau đó file .lsp sống ngay trong AutoCAD và chạy độc lập mãi mãi. Chiến lược đúng là dùng cả hai: MCP cho việc mới và khó, LISP cho việc lặp lại.

8.2. Vì sao chọn AutoLISP làm đường đóng gói chính

AutoLISP là ngôn ngữ lập trình tích hợp sẵn trong AutoCAD từ hàng chục năm nay. Một chương trình AutoLISP là một file văn bản thuần đuôi .lsp — mở bằng Notepad cũng đọc được. Ba lý do khiến chương này đặt LISP lên hàng đầu, trước mọi lựa chọn khác:

  • Chạy được cả trên AutoCAD LT 2024 trở lên (bản Windows). Đây là điểm nhiều người không biết: từ phiên bản 2024, bản LT — vốn bị cắt gần hết khả năng tự động hóa — đã hỗ trợ AutoLISP. Nghĩa là máy chỉ có LT vẫn chạy được mọi ví dụ trong chương này, dù không dùng được MCP server loại .NET như Chương 2–3.
  • Không cần compile. Viết xong là chạy: nạp file vào AutoCAD là lệnh có hiệu lực ngay. Không Visual Studio, không build, không phiên bản .NET phải khớp.
  • Dễ sửa. Muốn đổi đường kính mặc định, thêm một câu hỏi nhập liệu, sửa một con số — mở file text, sửa đúng dòng đó, nạp lại. Chính vì code ngắn và đọc được, bạn cũng kiểm chứng được Claude đã viết gì trước khi cho nó chạy trên bản vẽ thật.

Nguyên tắc phân vai: Claude là người viết code, AutoCAD là nơi chạy code. Việc của bạn chuyển từ "ra lệnh vẽ từng lần" sang "mô tả quy trình một lần cho rõ" — mục tiếp theo chỉ cách mô tả đó.

8.3. Cách nhờ Claude viết LISP: mô tả một lần cho rõ

Khác với chat vẽ trực tiếp (nơi bạn có thể nói thiếu rồi bổ sung), code LISP sẽ chạy không có Claude bên cạnh để hỏi lại. Vì vậy câu yêu cầu viết code phải đủ năm thứ: tên lệnh, dữ liệu nhập, hình học đầu ra, đơn vị/layer, và yêu cầu code hoàn chỉnh. Mẫu câu chat dùng lại được cho mọi việc:

Câu chat mẫu — nhờ viết LISP

Viết cho tôi một file AutoLISP hoàn chỉnh đặt tên BOLTPAT.lsp. Lệnh tên là BOLTPAT. Khi chạy, lệnh hỏi lần lượt: số lỗ, khoảng cách giữa hai lỗ liên tiếp, đường kính lỗ, và điểm bắt đầu; sau đó vẽ dãy lỗ tròn thẳng hàng theo trục X trên layer hiện hành, đơn vị mm. Code phải chạy độc lập không phụ thuộc thư viện ngoài, có comment ở đầu file ghi tên lệnh và cách dùng, cuối file in dòng thông báo đã nạp lệnh thành công.

  • Nói rõ tên lệnh (viết hoa, ngắn, không trùng lệnh gốc của AutoCAD) — đây là từ bạn sẽ gõ mỗi lần chạy.
  • Liệt kê từng dữ liệu nhập theo đúng thứ tự bạn muốn bị hỏi. LISP hỏi gì là do bạn định trước, không có chuyện "tự hiểu".
  • Yêu cầu "code hoàn chỉnh, chạy độc lập" để Claude không viết tắt kiểu "phần còn lại tương tự" — căn bệnh phổ biến khi nhờ AI viết code dài.
  • Bảo Claude viết comment và chuỗi thông báo không dấu (ví dụ "Da nap lenh") nếu bạn lưu file bằng Notepad với encoding mặc định — chữ tiếng Việt có dấu trong file .lsp lưu sai encoding sẽ thành ký tự rác khi AutoCAD đọc.

8.4. Nạp file bằng APPLOAD và gọi lệnh

Nhận code từ Claude xong, quy trình cố định bốn bước — áp dụng giống hệt cho mọi file .lsp về sau:

  1. Lưu file: dán code vào Notepad hoặc VS Code, lưu với tên đúng như đã thống nhất (ví dụ BOLTPAT.lsp) vào thư mục thư viện (mục 8.10). Nếu dùng Notepad, ở hộp thoại lưu hãy chọn Save as type: All Files để file không bị thêm đuôi .txt thành BOLTPAT.lsp.txt.
  2. Nạp vào AutoCAD: gõ lệnh APPLOAD → trong hộp thoại Load/Unload Applications, duyệt tới file .lsp → bấm Load → bấm Close.
  3. Kiểm tra dòng thông báo: dòng lệnh (Command line) phải hiện câu thông báo ở cuối file, dạng Da nap xong BOLTPAT.LSP - go lenh BOLTPAT de chay. Thấy dòng này là nạp thành công; không thấy nghĩa là code có lỗi cú pháp — copy thông báo lỗi ở Command line gửi lại cho Claude sửa.
  4. Gọi lệnh: gõ tên lệnh (BOLTPAT) → Enter → trả lời lần lượt các câu hỏi trên Command line → xem kết quả.

Muốn lệnh tự có mặt mỗi lần mở AutoCAD: mở APPLOAD → ở mục Startup Suite bấm Contents... → Add... → chọn các file .lsp của bạn. Từ đó mỗi bản vẽ mở lên là các lệnh đã nạp sẵn, không cần APPLOAD lại.

Cảnh báo bảo mật

File .lsp là một chương trình chạy với toàn quyền trong phiên làm việc AutoCAD của bạn — về nguyên tắc nó sửa/xóa bản vẽ được như chính tay bạn. Chỉ nạp file mà bạn đọc hiểu được: code do Claude viết theo yêu cầu cụ thể của bạn (như ba ví dụ dưới đây, mỗi file chỉ vài chục dòng) hoặc code của chính bạn. Đừng tải file .lsp lạ trên mạng về nạp thử — và thói quen này cũng áp dụng ngược lại với MCP server, như Chương 9 đã lưu ý.

8.5. Ví dụ 1 — BOLTPAT: vẽ dãy lỗ bu-lông thẳng hàng

Việc kinh điển nhất của cơ khí và layout: một dãy lỗ cách đều nhau trên thanh giằng, ray đỡ, bản mã. Qua MCP, mỗi lần vẽ là một lần chat và tốn token; đóng gói thành LISP thì gõ một lệnh, trả lời bốn câu hỏi, xong.

;;; ============================================================
;;; BOLTPAT.LSP - Ve day lo bu-long thang hang theo truc X
;;; Lenh: BOLTPAT
;;; Nhap: so lo, khoang cach tam hai lo lien tiep,
;;;       duong kinh lo, diem bat dau (tam lo dau tien)
;;; Don vi: mm. Lo duoc ve tren layer hien hanh.
;;; ============================================================
(defun c:BOLTPAT (/ n kc dk p0 i pt)
  (setq n  (getint  "\nSo lo: "))
  (setq kc (getdist "\nKhoang cach giua 2 lo lien tiep (mm): "))
  (setq dk (getdist "\nDuong kinh lo (mm): "))
  (setq p0 (getpoint "\nChon tam lo dau tien: "))
  (if (and n kc dk p0 (> n 0))
    (progn
      (setq i 0)
      (repeat n
        (setq pt (list (+ (car p0) (* i kc)) (cadr p0) 0.0))
        (entmake
          (list
            '(0 . "CIRCLE")
            (cons 10 pt)
            (cons 40 (/ dk 2.0))
          )
        )
        (setq i (1+ i))
      )
      (princ (strcat "\nDa ve " (itoa n) " lo."))
    )
    (princ "\nChua du thong so - chua ve gi.")
  )
  (princ)
)
(princ "\nDa nap xong BOLTPAT.LSP - go lenh BOLTPAT de chay.")
(princ)

Đọc nhanh cấu trúc để thấy LISP không hề đáng sợ: defun c:BOLTPAT khai báo lệnh tên BOLTPAT; bốn lệnh getint / getdist / getpoint là bốn câu hỏi hiện trên Command line; vòng repeat lặp đúng số lỗ, mỗi vòng dùng entmake tạo một đối tượng CIRCLE tại tọa độ x tăng dần. Toàn bộ "trí tuệ" của việc vẽ dãy lỗ chỉ có vậy — và nó chạy lại chính xác như thế ở mọi lần sau.

50 250 Ø12 × 6 lỗ Tấm thép sau khi chạy BOLTPAT — không một nét nào vẽ bằng tay. Khi chạy lệnh, bạn trả lời: So lo: 6 Khoang cach: 50 Duong kinh lo: 12 Tam lo 1: click chon
Hình 8.2 — Kết quả của BOLTPAT với bộ tham số mẫu. Sáu lỗ Ø12, bước 50mm, tổng span 250mm — đúng bốn con số bạn trả lời trên Command line. Đổi tham số là ra một dãy lỗ khác ngay: 8 lỗ Ø17 bước 75 cho một bản mã lớn hơn chẳng hạn, vẫn cùng một file code, vẫn 0 token.

Kết quả mong đợi

Sau câu trả lời cuối cùng, dãy lỗ hiện ra tức thì trên bản vẽ và Command line báo Da ve 6 lo. Nếu số lỗ hiện ra sai hoặc lệch vị trí, gần như chắc chắn do trả lời nhầm một tham số — gõ U (Undo) để hoàn tác cả dãy và chạy lại, thay vì sửa từng lỗ.

8.6. Ví dụ 2 — FLANGE: vẽ mặt bích tròn với vòng lỗ chia đều

Nâng độ khó lên một nấc: lỗ không nằm trên đường thẳng mà chia đều trên một vòng tròn (đường kính vòng chia PCD — Pitch Circle Diameter), cộng thêm vòng ngoài và lỗ trong của mặt bích. Đây là chi tiết xuất hiện khắp nơi trong đường ống và thiết bị của nhà máy. LISP xử lý bằng hàm polar — tính tọa độ điểm theo góc và khoảng cách, việc mà bảo Claude tính tay qua chat là dễ sai nhất.

;;; ============================================================
;;; FLANGE.LSP - Ve mat bich tron + lo bu-long chia deu tren PCD
;;; Lenh: FLANGE
;;; Nhap: tam mat bich, D ngoai, D lo trong, D vong chia (PCD),
;;;       so lo, duong kinh 1 lo. Don vi: mm.
;;; ============================================================
(defun c:FLANGE (/ ctr dout din pcd n dl i ang pt)
  (setq ctr  (getpoint "\nChon tam mat bich: "))
  (setq dout (getdist ctr "\nDuong kinh ngoai (mm): "))
  (setq din  (getdist ctr "\nDuong kinh lo trong (mm): "))
  (setq pcd  (getdist ctr "\nDuong kinh vong chia PCD (mm): "))
  (setq n    (getint  "\nSo lo bu-long: "))
  (setq dl   (getdist ctr "\nDuong kinh 1 lo (mm): "))
  (if (and ctr dout din pcd n dl (> n 0))
    (progn
      ;; Vong ngoai va lo trong
      (entmake (list '(0 . "CIRCLE") (cons 10 ctr) (cons 40 (/ dout 2.0))))
      (entmake (list '(0 . "CIRCLE") (cons 10 ctr) (cons 40 (/ din 2.0))))
      ;; Cac lo bu-long chia deu tren vong PCD
      (setq i 0)
      (repeat n
        (setq ang (* i (/ (* 2.0 pi) n)))
        (setq pt (polar ctr ang (/ pcd 2.0)))
        (entmake (list '(0 . "CIRCLE") (cons 10 pt) (cons 40 (/ dl 2.0))))
        (setq i (1+ i))
      )
      (princ (strcat "\nDa ve mat bich " (itoa n) " lo."))
    )
    (princ "\nChua du thong so - chua ve gi.")
  )
  (princ)
)
(princ "\nDa nap xong FLANGE.LSP - go lenh FLANGE de chay.")
(princ)

Thử ngay với bộ số của một mặt bích quen thuộc: D ngoài 220, lỗ trong 110, PCD 180, 8 lỗ Ø18. Chạy xong, dùng lệnh DIST đo khoảng cách từ tâm tới một tâm lỗ bất kỳ — phải đúng 90 (bán kính PCD) ở mọi lỗ. Đó là độ chính xác mà vẽ tay bằng lệnh ARRAYPOLAR lặp lại nhiều lần khó giữ được đều như vậy.

8.7. Ví dụ 3 — TAGNUM: đánh số nhãn thiết bị tăng dần bằng click

Ví dụ thứ ba thuộc nhóm "việc nhỏ mà ngày nào cũng gặp": gắn nhãn mã thiết bị lên layout. Gõ tay từng nhãn TB-01, TB-02... vừa chậm vừa dễ trùng số. LISP dưới đây hỏi tiền tố và số bắt đầu một lần, sau đó bạn chỉ việc click — mỗi click ra một nhãn, số tự tăng, Enter để dừng. Dùng chung với quy ước attribute MA ở Chương 7 là layout của bạn luôn nhất quán.

;;; ============================================================
;;; TAGNUM.LSP - Danh so nhan thiet bi tang dan tai diem click
;;; Lenh: TAGNUM
;;; Nhap: tien to (vd TB-), so bat dau, chieu cao chu.
;;; Sau do click tung vi tri de dat nhan, Enter de ket thuc.
;;; Nhan duoc can giua tai diem click.
;;; ============================================================
(defun c:TAGNUM (/ prefix start h pt txt)
  (setq prefix (getstring T "\nTien to (vd TB-): "))
  (setq start  (getint "\nSo bat dau: "))
  (setq h      (getdist "\nChieu cao chu (mm): "))
  (if (and prefix start h)
    (while
      (setq pt
        (getpoint
          (strcat "\nClick vi tri dat nhan "
                  prefix (itoa start) " (Enter de dung): ")))
      (setq txt (strcat prefix (itoa start)))
      (entmake
        (list
          '(0 . "TEXT")
          (cons 10 pt)
          (cons 40 h)
          (cons 1 txt)
          (cons 72 1)   ; can giua theo chieu ngang
          (cons 73 2)   ; can giua theo chieu doc
          (cons 11 pt)
        )
      )
      (setq start (1+ start))
    )
  )
  (princ)
)
(princ "\nDa nap xong TAGNUM.LSP - go lenh TAGNUM de chay.")
(princ)

Mẹo tùy biến

Cả ba ví dụ đều cố ý viết ngắn và dùng toàn hàm AutoLISP cơ bản nhất (getint, getpoint, entmake...) — để chạy được trên mọi phiên bản, kể cả LT. Khi cần thêm tính năng (ví dụ BOLTPAT vẽ thêm đường tâm, FLANGE ghi luôn kích thước, TAGNUM tự chèn thêm vòng tròn quanh nhãn), đừng tự đoán cách sửa: cứ gửi lại file .lsp cho Claude kèm yêu cầu thay đổi, nhận bản mới, lưu đè và APPLOAD lại. Vòng "nhờ viết → chạy thử → nhờ sửa" này cũng chỉ tốn token ở những lần sửa — vẫn rẻ hơn gọi MCP vẽ lại mỗi ngày rất nhiều.

8.8. Khi LISP không đủ: .NET add-in (chỉ nhắc qua)

Một số ít việc vượt quá tầm của LISP: cần cửa sổ giao diện riêng với nhiều ô nhập và bảng dữ liệu, xử lý hàng chục nghìn đối tượng đòi tốc độ cao, kết nối cơ sở dữ liệu hoặc phần mềm khác, hay đóng gói phát hành cho người khác mà không muốn lộ mã nguồn. Khi đó mới tới lượt .NET add-in: tạo project trong Visual Studio, tham chiếu các thư viện của AutoCAD (AcMgd.dll, AcDbMgd.dll, AcCoreMgd.dll), viết lệnh, build ra file .dll, nạp bằng lệnh NETLOAD và đóng gói dạng .bundle để AutoCAD tự nạp khi khởi động. Đổi lại: cần AutoCAD bản full (LT không chạy .NET add-in), mọi thay đổi đều phải build lại, quy trình dài hơn hẳn. Kết luận thực dụng: mặc định cứ LISP trước — nó đáp ứng phần lớn nhu cầu thực tế; .NET là phương án dành cho thiểu số trường hợp LISP thật sự không kham nổi.

8.9. So sánh: khi nào MCP trực tiếp, khi nào đóng gói LISP

Tiêu chíMCP trực tiếp (Claude vẽ)LISP chạy local
Token Tốn ở mỗi lần chạy: input gồm ngữ cảnh + danh sách tools, output là chuỗi tool call 0 token ở mọi lần chạy — chỉ tốn một lần duy nhất khi nhờ Claude viết (và khi sửa) code
Tần suất phù hợp Việc làm một lần, hoặc mỗi lần một khác Việc lặp lại hằng ngày/hằng tuần với cùng một logic
Độ phức tạp xử lý được Cao: hiểu yêu cầu chưa rõ ràng, tự chia bước, hỏi lại khi thiếu dữ kiện Thấp–trung bình: logic phải cố định, tham số rõ ràng — nhập mơ hồ là chạy sai mà không ai hỏi lại
Tốc độ Chậm: qua lại nhiều vòng chat và tool call Tức thì, ngay trong AutoCAD
Khi yêu cầu thay đổi Nói lại bằng lời là xong, không cần biết code Mở file .lsp sửa code, hoặc nhờ Claude viết lại bản mới (lại tốn chút token, nhưng chỉ một lần)
Điều kiện để chạy Claude Desktop + MCP server + mạng + AutoCAD bản full Chỉ cần AutoCAD — kể cả LT 2024+ — không cần mạng

Quy tắc ngón tay cái: một việc bạn đã nhờ Claude vẽ qua MCP tới lần thứ ba với cùng một logic, thì đó là ứng viên đóng gói LISP. Ngược lại, việc mới, việc lạ, việc cần suy luận — cứ để MCP lo, đừng cố ép thành code cứng.

8.10. Lưu LISP vào thư viện chung để tái sử dụng

File .lsp cũng là tài sản tích lũy như block ở Chương 7 — đối xử với nó cùng một kỷ luật: một thư mục tập trung duy nhất, đặt ngay cạnh thư viện block để backup một lần được cả hai:

D:\ThuVienLISP\
├── BOLTPAT.lsp
├── FLANGE.lsp
├── TAGNUM.lsp
└── MUCLUC.txt
  • Một file = một lệnh chính, tên file trùng tên lệnh (BOLTPAT.lsp chứa lệnh BOLTPAT) — nhìn tên file là biết phải gõ gì.
  • Luôn có comment đầu file: tên lệnh, chức năng, dữ liệu nhập, lần sửa gần nhất. Ba ví dụ trong chương này đều theo đúng mẫu đó — giữ thói quen này cho mọi file về sau.
  • File MUCLUC.txt là danh mục một dòng một lệnh (tên lệnh — làm gì — khi nào dùng). Nó cứu bạn khỏi cảnh "nhớ mang máng mình từng có lệnh vẽ cái này" sau vài tháng; và khi nhờ Claude viết lệnh mới, dán luôn mục lục vào câu chat để Claude tránh đặt trùng tên và tái sử dụng phong cách code cũ.
  • Dùng chung cho cả nhóm: đặt thư mục thư viện trên ổ mạng nội bộ, mỗi máy chỉ cần thêm các file vào Startup Suite một lần (mục 8.4) là cả nhóm có chung một bộ lệnh — sửa một file ở thư viện là mọi người cùng được bản mới ở lần mở AutoCAD kế tiếp.
  • Backup chung với thư viện block theo đúng quy trình ở mục 7.6: nén cả hai thư mục kèm ngày tháng. Thư viện LISP còn nhẹ hơn block rất nhiều (toàn file text vài KB) — không có lý do gì để không sao lưu thường xuyên.
Chương tiếp theo
Chương 9 · Mẹo & xử lý lỗi
→

Chương 9

Mẹo & xử lý lỗi: khi mọi thứ không chạy như ý

Hệ Claude + MCP + AutoCAD có ba mắt xích (Claude Desktop → MCP server → AutoCAD), lỗi có thể nằm ở bất kỳ mắt xích nào. Nguyên tắc gỡ lỗi: xác định đúng mắt xích trước, sửa sau — đừng cài lại tất cả trong hoảng loạn.

Có triệu chứng lỗi Claude Desktop có thấy server multiCAD không? Không Kiểm tra JSON + đường dẫn tuyệt đối; đọc log tại %APPDATA%\Claude\logs\ thoát hẳn app rồi mở lại Có AutoCAD đang mở và không có dialog modal? Không Mở AutoCAD + bản vẽ mới; đóng mọi dialog đang treo; đưa cửa sổ lên foreground Có Thử lại lệnh — riêng FILLET/CHAMFER thì chạy qua live app, không headless
Hình 9.1 — Luồng xử lý lỗi theo mắt xích. Câu hỏi 1 tách lỗi phía Claude Desktop/config; câu hỏi 2 tách lỗi phía AutoCAD. Chỉ khi cả hai đều ổn mà lệnh vẫn lỗi, mới nghi ngờ chính lệnh đó (điển hình là FILLET/CHAMFER cần live app). Đi theo luồng này, hầu hết sự cố xử lý xong trong vài phút.

9.1. Lỗi 1: MCP server không hiện trong Claude Desktop

Triệu chứng: bấm icon tools trong ô chat mà không thấy server multiCAD. Ba nguyên nhân chiếm gần như toàn bộ các trường hợp:

  • JSON sai cú pháp — thừa/thiếu dấu phẩy, thiếu dấu ngoặc đóng, hoặc dấu \ trong đường dẫn chưa viết thành \\. Claude Desktop gặp JSON lỗi sẽ bỏ qua config một cách lặng lẽ.
  • Đường dẫn tương đối hoặc sai — command trỏ tới py hệ thống thay vì python trong .venv, hoặc thư mục cài đặt đã bị di chuyển sau khi cấu hình.
  • Chưa thoát hẳn app — đóng cửa sổ chưa đủ; phải chuột phải icon khay hệ thống → Exit, rồi mở lại.

Nơi tìm bằng chứng: thư mục log %APPDATA%\Claude\logs\ — file log của MCP ghi rõ server nào khởi động thất bại và vì sao (thường là đường dẫn không tồn tại hoặc Python báo lỗi thiếu thư viện).

9.2. Lỗi 2: AutoCAD không phản hồi lệnh

  • Chưa mở AutoCAD (hoặc chưa mở bản vẽ nào): server không có đích để gửi lệnh. Mở AutoCAD và một bản vẽ mới trước khi chat.
  • Cửa sổ AutoCAD mất focus / bị cửa sổ khác che: một số thao tác cần cửa sổ AutoCAD ở trạng thái hoạt động — đưa nó lên foreground rồi thử lại.
  • Dialog modal đang mở: một hộp thoại (ví dụ hộp thoại in, hộp thoại hỏi lưu file) đang treo sẽ chặn mọi lệnh mới. Đóng hoặc hủy dialog đó trước.
  • AutoCAD đang chờ bạn hoàn tất một lệnh dở dang: bấm Esc vài lần để hủy lệnh đang treo, rồi ra lệnh lại qua Claude.

9.3. Lỗi 3: Lệnh FILLET/CHAMFER không chạy

Đây là lỗi "đặc sản" đã nhắc ở Chương 6: fillet/chamfer tương tác chọn cạnh phức tạp, một số đường gọi lệnh dạng headless (không giao diện) xử lý không ổn. Cách xử lý: chuyển sang điều khiển qua live app — AutoCAD mở sẵn, cửa sổ đang active — và cho Claude chạy lại riêng bước đó, sau đó zoom kiểm tra kết quả từng vai bậc.

9.4. Best practices — thói quen của người dùng MCP lâu dài

  • Luôn test trên bản vẽ nháp trước. Mọi câu lệnh mới, mọi quy trình mới đều chạy thử trên file nháp; chỉ khi kết quả đúng mới áp lên bản vẽ thật.
  • Làm việc trên bản copy, không làm trên bản vẽ gốc. Trước buổi làm việc với MCP, nhân bản file gốc (hậu tố ngày hoặc _MCP). Lệnh hàng loạt sai một câu chat có thể sửa đổi hàng trăm đối tượng trong vài giây.
  • Xem lại từng tool call trước khi approve. Nút Allow for This Chat tiện thật, nhưng hãy đọc lướt tham số Claude sắp gửi — đặc biệt với lệnh xóa, di chuyển "tất cả", và ghi đè attribute hàng loạt.
  • Đọc source của MCP server trước khi cấp quyền ghi. MCP server là chương trình chạy bằng quyền của bạn trên máy của bạn. Với server cộng đồng, hãy đọc qua mã nguồn (hoặc ít nhất kiểm tra repo, số người dùng, lịch sử cập nhật) trước khi cho nó quyền sửa bản vẽ thật.
  • Ra lệnh nhỏ, kiểm tra thường xuyên. Năm câu chat ngắn, mỗi câu kiểm tra một lần, an toàn hơn một câu chat "làm hết từ A đến Z" rất nhiều.

9.5. Giới hạn phải chấp nhận

  • MCP cho "kênh lệnh", không cho "nhận thức". Claude không nhìn thấy vật thật hay ảnh chụp để tự suy ra kích thước. Mọi con số phải do bạn cung cấp chính xác — nó vẽ đúng những gì bạn nói, kể cả khi bạn nói sai.
  • Không deterministic. Cùng một câu hỏi, hai lần chạy có thể cho chuỗi tool call hơi khác nhau (thứ tự lệnh, cách chia bước). Với bản vẽ quan trọng, đừng ngạc nhiên vì sự khác biệt này — hãy dựa vào bước kiểm tra, không dựa vào "lần trước nó làm đúng".
  • Bản vẽ phức tạp dễ lỗi thầm lặng. XREF lồng nhau nhiều lớp, ràng buộc (constraint) nặng, block động phức tạp là những nơi tool call có thể "thành công" về mặt kỹ thuật nhưng kết quả hình học không như ý. Càng phức tạp, càng phải kiểm tra bằng mắt kỹ.

Lời kết

Bạn đã đi hết chặng đường: từ khái niệm MCP, cài đặt multiCAD-mcp, vẽ hình cơ bản, block và dimension, tới một chi tiết trục hoàn chỉnh và cách tổ chức thư viện cho dự án lớn. Công thức bền vững luôn là: ra lệnh rõ ràng → Claude vẽ → bạn kiểm tra bằng mắt và bằng số đo. Tay vẽ thì ngày càng nhanh, còn trách nhiệm kỹ thuật thì vẫn luôn là của người kỹ sư.

Hết 9 chương
Quay lại đầu trang · Đọc lại từ Chương 1
↑