ใช้ทำอะไร
SCRIPT รันไฟล์ Python (.py) ภายใน MCAD เทียบได้กับ AutoLISP/VBA ใช้สร้างแบบซ้ำ ๆ รันเลข หรือแก้แบบจำนวนมากอัตโนมัติ ทุกการแก้ของ Macro ย้อนได้ด้วย Ctrl+Z
อยู่ที่ไหน
- Ribbon: พิมพ์คำสั่ง
- Command line:
SCRIPT(AliasSCR,MACRO)
ขั้นตอน
- สร้างไฟล์
grid_holes.pyด้วย Notepad:
# MCAD macro demo: a plate with a 4 x 3 hole grid
mcad.add_rect(0, 0, 200, 120, layer="OUTLINE")
for i in range(4):
for j in range(3):
mcad.add_circle(40 + i * 40, 30 + j * 30, 5, layer="HOLES")
mcad.add_text(0, -15, "GRID PLATE 4x3", height=6)
mcad.zoom_fit()
mcad.log(f"{mcad.entity_count} entities")
- พิมพ์
SCRIPTแล้ว Enter เลือกไฟล์ (หรือSCRIPT C:\Macros\grid_holes.py) - ผลลัพธ์ปรากฏบนแบบ และ Status bar แสดง
SCRIPT done: grid_holes.py

API อ้างอิง
เอกสาร (Document)
| คำสั่ง | ความหมาย |
|---|---|
mcad.entity_count |
จำนวนวัตถุ |
mcad.entities() |
รายการวัตถุ (dict) |
mcad.entity(i) |
วัตถุลำดับ i |
mcad.open(path) |
เปิดไฟล์ DWG/DXF |
mcad.save() |
บันทึกแบบปัจจุบัน |
สร้างวัตถุ (คืนค่าลำดับของวัตถุใหม่)
| คำสั่ง | ความหมาย |
|---|---|
mcad.add_line(x1, y1, x2, y2, **style) |
เส้นตรง |
mcad.add_circle(cx, cy, r, **style) |
วงกลม |
mcad.add_arc(cx, cy, r, start_deg, end_deg, **style) |
ส่วนโค้ง |
mcad.add_rect(x, y, w, h, **style) |
สี่เหลี่ยม |
mcad.add_polyline([(x, y), ...], closed=False, **style) |
Polyline |
mcad.add_text(x, y, "text", height=2.5, **style) |
ข้อความ |
mcad.add_entities([dict, ...]) |
เพิ่มหลายชิ้นใน Undo ขั้นเดียว (เร็วสำหรับวัตถุจำนวนมาก) |
**style: layer="...", color="#RRGGBB" (หรือเลข ACI), linetype="DASHED", lineweight=25 (= 0.25 mm)
แก้ไขและอื่น ๆ
| คำสั่ง | ความหมาย |
|---|---|
mcad.move(indices, dx, dy) |
ย้าย |
mcad.erase(indices) |
ลบ |
mcad.select(indices) / mcad.selection() / mcad.clear_selection() |
จัดการการเลือก |
mcad.zoom_fit() / mcad.redraw() |
ซูมพอดี / วาดใหม่ |
mcad.command("ZOOM E") |
รันคำสั่ง Command line ใดก็ได้ |
mcad.log("msg") |
แสดงข้อความบน Status bar |
mcad.math |
โมดูล math ของ Python |
หมายเหตุ: ถ้า Macro ผิดพลาด จะมีหน้าต่างแสดง Traceback โปรแกรมไม่ปิด แก้ dict ของวัตถุโดยตรงจะข้ามระบบ Undo ควรใช้คำสั่งของ
mcad
ลองทำตาม: แผ่นระบายอากาศหน้าตู้
แผ่นช่องระบายอากาศขนาด 300 x 200 สำหรับตู้คอนโทรลที่ร้อน มีร่องปลายมน 18 ร่องเรียงสามคอลัมน์ และรูยึดสี่รู วาดเส้นกับส่วนโค้ง 72 ชิ้นด้วยมือไม่สนุกเลย มาโคร 20 บรรทัดทำเสร็จในพริบตา และแก้ตัวเลขตัวเดียวก็วาดลายใหม่ได้ทั้งแผ่น
- บันทึกโค้ดนี้เป็น
vent_plate.py:
# MCAD macro: enclosure door vent plate with 3 x 6 louvre slots
W, H = 300, 200
mcad.add_rect(0, 0, W, H, layer="OUTLINE")
for (x, y) in ((10, 10), (W - 10, 10), (10, H - 10), (W - 10, H - 10)):
mcad.add_circle(x, y, 3.5, layer="HOLES")
slot_w, slot_h, r = 70, 8, 4
for col in range(3):
for row in range(6):
x0 = 40 + col * 80
y0 = 35 + row * 24
mcad.add_line(x0 + r, y0, x0 + slot_w - r, y0, layer="SLOTS")
mcad.add_line(x0 + r, y0 + slot_h, x0 + slot_w - r, y0 + slot_h, layer="SLOTS")
mcad.add_arc(x0 + r, y0 + r, r, 90, 270, layer="SLOTS")
mcad.add_arc(x0 + slot_w - r, y0 + r, r, -90, 90, layer="SLOTS")
mcad.add_text(0, -15, "VENT PLATE 300 x 200 - 18 SLOTS", height=7)
mcad.zoom_fit()
mcad.log(f"{mcad.entity_count} entities")
- พิมพ์
SCRIPTแล้วเลือกvent_plate.py - แผ่นจะปรากฏขึ้น และ Status bar รายงานผลการรัน ตอนนี้แบบมี 78 ชิ้น คือแผ่น 1 รู 4 เส้นและส่วนโค้งของร่อง 72 และข้อความชื่อ 1

ลองต่อยอด: เปลี่ยน range(6) เป็น range(5) และ slot_w เป็น 90 ลบแผ่นเดิม แล้วรันสคริปต์อีกครั้ง
