MET

คู่มือ / ไฟฟ้า (Electrical & Wiring)

SCRIPT - Python Macro API

เขียนและรัน Python Macro ด้วยคำสั่ง SCRIPT ผ่านออบเจกต์ mcad สำหรับงานอัตโนมัติ

ใช้ทำอะไร

SCRIPT รันไฟล์ Python (.py) ภายใน MCAD เทียบได้กับ AutoLISP/VBA ใช้สร้างแบบซ้ำ ๆ รันเลข หรือแก้แบบจำนวนมากอัตโนมัติ ทุกการแก้ของ Macro ย้อนได้ด้วย Ctrl+Z

อยู่ที่ไหน

  • Ribbon: พิมพ์คำสั่ง
  • Command line: SCRIPT (Alias SCR, MACRO)

ขั้นตอน

  1. สร้างไฟล์ 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")
  1. พิมพ์ SCRIPT แล้ว Enter เลือกไฟล์ (หรือ SCRIPT C:\Macros\grid_holes.py)
  2. ผลลัพธ์ปรากฏบนแบบ และ Status bar แสดง SCRIPT done: grid_holes.py

ผลลัพธ์ของ Macro: แผ่นพร้อมรู 4 x 3
ผลลัพธ์ของ Macro: แผ่นพร้อมรู 4 x 3

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 บรรทัดทำเสร็จในพริบตา และแก้ตัวเลขตัวเดียวก็วาดลายใหม่ได้ทั้งแผ่น

  1. บันทึกโค้ดนี้เป็น 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")
  1. พิมพ์ SCRIPT แล้วเลือก vent_plate.py
  2. แผ่นจะปรากฏขึ้น และ Status bar รายงานผลการรัน ตอนนี้แบบมี 78 ชิ้น คือแผ่น 1 รู 4 เส้นและส่วนโค้งของร่อง 72 และข้อความชื่อ 1

แผ่นระบายอากาศ 18 ร่องที่สร้างจากมาโคร
แผ่นระบายอากาศ 18 ร่องที่สร้างจากมาโคร

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

ดูเพิ่ม