lowpoly จะยุติการให้บริการในวันที่ 30 ต.ค. 2569 โปรดเปลี่ยนโมเดลก่อนวันที่เหล่านี้เพื่อหลีกเลี่ยงข้อผิดพลาดของคำขอ ดูการเลิกใช้งานทั้งหมด

Analyze Printability API

ตรวจสอบโมเดล 3 มิติเพื่อหาปัญหาในการพิมพ์ โดยการวัดความเป็นแบบกันน้ำ (watertightness) ปริมาตร รู ขอบ non-manifold และหน้าเสื่อม นอกจากนี้คุณยังสามารถตรวจสอบความหนาผนังที่ขนาดที่คุณวางแผนจะพิมพ์ได้อีกด้วย


POST/openapi/v1/print/analyze

สร้างงาน Analyze Printability

สร้างงาน วิเคราะห์ความสามารถในการพิมพ์ ซึ่งประเมินโมเดล 3D และรายงานค่าเมตริกความสามารถในการพิมพ์ งานนี้ทำงานในเบื้องหลัง สำหรับระยะเวลาที่งานมักใช้ ดูที่ Processing times

เมื่อ Meshy มีผลลัพธ์ความสามารถในการพิมพ์ของงาน input_task_id อยู่แล้ว งานใหม่จะพร้อมใช้งานทันที การเรียก GET ครั้งแรกของคุณจะคืนผลลัพธ์นั้น

Request

POST
/openapi/v1/print/analyze
# Analyze an existing task
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
  }'

# Or analyze a model URL directly
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "model_url": "https://example.com/model.glb"
  }'

# Also check wall thickness for a 100 mm tall SLA print
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "printer_type": "sla",
    "intended_print_height_mm": 100
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

พารามิเตอร์

  • Name
    model_url
    Type
    string
    จำเป็น
    Description

    จำเป็นต้องระบุ เว้นแต่คุณจะส่ง input_task_id คือโมเดลที่จะวิเคราะห์ ในรูปแบบ URL สาธารณะหรือ Data URI หากคุณส่งทั้งสองอย่าง Meshy จะใช้ input_task_id

    จาก URL แบบ http หรือ https โมเดลต้องเป็นไฟล์ .glb, .gltf, .obj, .fbx หรือ .stl ขนาดไม่เกิน 400 MB ส่วน Data URI สามารถเก็บได้เฉพาะไฟล์ GLB แบบ base64 (data:model/gltf-binary;base64,...) หรือ glTF (data:model/gltf+json;base64,...) ขนาดไม่เกิน 100 MB เท่านั้น ให้ส่งไฟล์ .obj, .fbx หรือ .stl ในรูปแบบ URL http หรือ https

    ไฟล์ที่มีขนาดเกิน 100 MB ต้องเป็นไปตามกฎเหล่านี้ด้วย:

    • ไฟล์ GLB, glTF, FBX หรือ OBJ สามารถมีจำนวนหน้า (faces) ได้สูงสุด 10,000,000 หน้า Meshy นับหน้าเป็นสามเหลี่ยม ดังนั้นรูปสี่เหลี่ยม (quad) จะนับเป็น 2 หน้า และเมชที่ถูกวาดซ้ำมากกว่าหนึ่งครั้งจะนับหนึ่งครั้งต่อสำเนา
    • ไฟล์ FBX ต้องเป็น binary FBX เวอร์ชัน 7.1 ขึ้นไป
    • ไฟล์ GLB หรือ glTF ต้องไม่ใช้การบีบอัดแบบ Draco

    Meshy download URL (assets.meshy.ai/…?Expires=…&Signature=…) มีการเซ็นชื่อกำกับและจะหยุดทำงานเมื่อถึง expires_at ของงานนั้น การอ่านงานนั้นซ้ำอีกครั้งจะไม่ต่ออายุให้ สำหรับโมเดลที่คุณสร้างด้วย Meshy ให้ส่ง input_task_id แทน ซึ่งจะใช้งานได้ตราบเท่าที่ Meshy ยังเก็บรักษางานต้นทางไว้ (ดู Asset retention) หากต้องการใช้โมเดลหลังจากนั้น ให้ดาวน์โหลดก่อนถึง expires_at แล้วส่งสำเนาของคุณเอง

หากต้องการตรวจสอบความหนาผนังที่ขนาดที่คุณวางแผนจะพิมพ์ด้วย ให้ส่ง printer_type, ขนาดงานพิมพ์ หรือทั้งสองอย่าง ผลลัพธ์จะอยู่ใน printability.thin_walls การตรวจสอบความหนาผนังใช้เวลานานกว่า ดังนั้นงานมักจะไม่พร้อมทันที แม้ว่า Meshy จะเคยวิเคราะห์โมเดลนี้มาก่อนก็ตาม

  • Name
    printer_type
    Type
    string
    Description

    เครื่องพิมพ์ที่คุณวางแผนจะใช้ ค่านี้กำหนดความหนาผนังขั้นต่ำสำหรับการตรวจสอบความหนาผนัง หากคุณส่งขนาดงานพิมพ์โดยไม่มี printer_type Meshy จะใช้ fdm

    ค่าที่ใช้ได้:

    • fdm: filament ผนังขั้นต่ำ 1.0 มม.
    • sla: resin ผนังขั้นต่ำ 0.8 มม.
    • full_color: full-color ผนังขั้นต่ำ 2.0 มม.

    ค่าอื่นนอกเหนือจากนี้จะคืนค่า 400

  • Name
    intended_print_height_mm
    Type
    number
    Description

    ความสูงของชิ้นงานพิมพ์ เป็นมิลลิเมตร ตั้งแต่ 1 ถึง 1000 ค่าที่อยู่นอกช่วงนี้จะคืนค่า 400 ส่งพารามิเตอร์นี้หรือ intended_print_longest_side_mm อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่าง

    ใช้งานได้เฉพาะกับอินพุตแบบ GLB เท่านั้น สำหรับ model_url ที่ไม่ใช่ไฟล์ .glb ให้ส่ง intended_print_longest_side_mm แทน

  • Name
    intended_print_longest_side_mm
    Type
    number
    Description

    ความยาวของด้านที่ยาวที่สุดของชิ้นงานพิมพ์ เป็นมิลลิเมตร ตั้งแต่ 1 ถึง 1000 ค่าที่อยู่นอกช่วงนี้จะคืนค่า 400 ใช้งานได้กับทุกรูปแบบอินพุต

หากคุณส่ง printer_type โดยไม่ระบุขนาด Meshy จะใช้ขนาดงานพิมพ์นี้:

  • ไฟล์ .glb หรือ input_task_id ใดๆ: สูง 150 มม.
  • ไฟล์ .stl: ด้านที่ยาวที่สุดของไฟล์เอง อ่านค่าเป็นมิลลิเมตร
  • ไฟล์ .obj, .fbx หรือ .gltf: 150 มม. ที่ด้านที่ยาวที่สุด

สำหรับไฟล์ STL ที่ใช้หน่วยอื่น ให้ส่ง intended_print_longest_side_mm

Meshy ปัดเศษขนาดงานพิมพ์ทั้งสองค่าให้เป็นมิลลิเมตรที่ใกล้ที่สุด

ค่าที่ส่งคืน

ฟิลด์ result ของการตอบกลับมี ID ของงาน วิเคราะห์ความสามารถในการพิมพ์ ใหม่

รูปแบบความล้มเหลว

  • Name
    400 - Bad Request
    Description

    คำขอนี้ไม่สามารถทำงานได้ ข้อความแสดงข้อผิดพลาดจะบอกว่าพบปัญหาใด ตัวอย่างเช่น:

    • ขาดพารามิเตอร์: ไม่ได้ส่งทั้ง input_task_id และ model_url
    • UUID ไม่ถูกต้อง: input_task_id ไม่ใช่ UUID ที่ถูกต้อง
    • URL ของโมเดลไม่ถูกต้อง: model_url มีรูปแบบไม่ถูกต้อง ใช้ scheme ที่ไม่รองรับ หรือมีนามสกุลไฟล์ที่ไม่รองรับ
    • ไฟล์โมเดลใหญ่เกินไป: ไฟล์ model_url มีขนาดเกิน 400 MB จาก URL แบบ http หรือ https หรือเกิน 100 MB ในรูปแบบ Data URI
    • จำนวนหน้ามากเกินไป: ไฟล์ model_url เป็นไฟล์ GLB, glTF, FBX หรือ OBJ ที่มีขนาดเกิน 100 MB และมีจำนวนหน้ามากกว่า 10,000,000 หน้า ให้ลดจำนวนหน้าลง แล้วส่งไฟล์อีกครั้ง
    • ASCII FBX เกิน 100 MB: ไฟล์ model_url เป็น ASCII FBX ที่มีขนาดเกิน 100 MB ให้ส่งเป็น binary FBX หรือ GLB แทน
    • ไฟล์โมเดลไม่สามารถอ่านได้: ไฟล์ model_url มีขนาดเกิน 100 MB และ Meshy ไม่สามารถอ่านส่วนหัวของไฟล์ได้ ตัวอย่างเช่น เป็น GLB หรือ glTF ที่บีบอัดแบบ Draco หรือเป็น binary FBX ที่เก่ากว่าเวอร์ชัน 7.1
    • ส่วนหัวของโมเดลซับซ้อนเกินไป: ไฟล์ model_url มีขนาดเกิน 100 MB และส่วนหัวมีเมช, โหนด หรือเรคคอร์ดมากเกินกว่าจะตรวจสอบได้ ให้ลดจำนวนวัตถุในไฟล์ลง แล้วส่งอีกครั้ง
    • ไม่สามารถดาวน์โหลดไฟล์โมเดลได้: model_url คืนค่าข้อผิดพลาด ซึ่งส่วนใหญ่มักเกิดจาก Meshy download URL ที่ลงนามไว้หมดอายุ การอ่านงานนั้นซ้ำอีกครั้งจะคืน URL เดิมพร้อมวันหมดอายุเดิม ให้ส่งสำเนาของไฟล์ของคุณเอง หรือส่ง input_task_id ตราบเท่าที่ Meshy ยังเก็บรักษางานต้นทางไว้
    • งานยังไม่สำเร็จ: งาน input_task_id ยังอยู่ในสถานะรอดำเนินการ กำลังดำเนินการ หรือล้มเหลว
    • ขนาดงานพิมพ์ไม่ถูกต้อง: intended_print_height_mm หรือ intended_print_longest_side_mm อยู่นอกช่วง 1 ถึง 1000 หรือคำขอมีทั้งสองพารามิเตอร์
    • ประเภทเครื่องพิมพ์ไม่รู้จัก: printer_type ไม่ใช่ fdm, sla หรือ full_color
    • ระบุความสูงบนโมเดลที่ไม่ใช่ GLB: คำขอมี intended_print_height_mm และ model_url ที่ไม่ใช่ไฟล์ .glb ให้ส่ง intended_print_longest_side_mm แทน
    • ไม่สามารถกำหนดขนาดโมเดลนี้ด้วยความสูงได้: ที่ความสูงที่ร้องขอ หรือค่าเริ่มต้น 150 มม. ด้านที่ยาวที่สุดของโมเดลจะอยู่นอกช่วง 1 ถึง 1,000 มม. เหตุการณ์นี้ยังเกิดขึ้นเมื่อโมเดลแบน หรือเมื่อ Meshy ไม่สามารถระบุขนาดของโมเดลได้ ให้ส่ง intended_print_longest_side_mm แทน สำหรับ model_url แบบ .glb และงาน input_task_id บางงาน Meshy จะพบปัญหานี้ก็ต่อเมื่องานเริ่มทำงานไปแล้วเท่านั้น และงานจะจบลงด้วยสถานะ FAILED แทน
    • ขนาด STL ใช้งานไม่ได้: คำขอมี printer_type โดยไม่ระบุขนาด และ Meshy ไม่สามารถอ่านด้านที่ยาวที่สุดของไฟล์ .stl เองได้ หรือค่านั้นอยู่นอกช่วง 1 ถึง 1,000 มม. ให้ส่ง intended_print_longest_side_mm

    แก้ไขคำขอ แล้วส่งอีกครั้ง ดูที่ ข้อผิดพลาด

  • Name
    401 - Unauthorized
    Description

    ไม่มี API คีย์ หรือ API คีย์ไม่ถูกต้อง ตรวจสอบ header Authorization

  • Name
    403 - Forbidden
    Description

    input_task_id เป็นโมเดลแบบ bas-relief ซึ่งเอนด์พอยต์นี้ไม่สามารถวิเคราะห์ได้ ข้อความแสดงข้อผิดพลาดคือ This model type does not support this operation ให้ส่งโมเดลอื่น

  • Name
    404 - Not Found
    Description

    Meshy ไม่พบโมเดลที่จะวิเคราะห์สำหรับ input_task_id ตัวอย่างเช่น:

    • งานนั้นไม่มีอยู่ ถูกลบไปแล้ว หรือไม่ใช่ของคุณหรืออยู่ในพื้นที่ทำงานที่คุณเป็นสมาชิกอยู่
    • งานนั้นใช้โมเดลที่เก่ากว่า Meshy 6 หรือประเภทของงานไม่ได้สร้างโมเดล 3D
    • ไฟล์โมเดลของงานนั้นไม่มีอยู่ในที่จัดเก็บแล้ว

    ตรวจสอบว่า input_task_id เป็นงานประเภทที่รองรับและเป็นของคุณหรืออยู่ในพื้นที่ทำงานของคุณ หรือส่งโมเดลเป็น model_url แทน

  • Name
    429 - Too Many Requests
    Description

    คุณเกินการจำกัดอัตราของคุณ หรือคุณมีงานที่รอดำเนินการมากเกินไป โปรดรอสักครู่แล้วลองใหม่อีกครั้ง ดูที่ Rate limits


GET/openapi/v1/print/analyze/:id

รับงานวิเคราะห์ความสามารถในการพิมพ์

ส่งคืนงานวิเคราะห์ความสามารถในการพิมพ์ตาม ID ของงานนั้น

Request

GET
/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}

Response (wall thickness checked)

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000012000,
  "expires_at": 1715725412000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "error",
    "issue_count": 2,
    "error_count": 1,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "intended_print": {
      "printer_type": "sla",
      "height_mm": 100,
      "longest_side_mm": 118,
      "wall_thickness_mm": 0.8,
      "dimensions_mm": [118, 72.41, 99.87]
    },
    "thin_walls": {
      "thin_area_ratio": 0.083,
      "has_thin_walls": true,
      "status": "error"
    },
    "evaluated_at": 1700000012000
  },
  "consumed_credits": 0
}

พารามิเตอร์

  • Name
    id
    Type
    path
    Description

    ID ของงานจากการตอบกลับตอนสร้างงาน

สิ่งที่ส่งคืน

ออบเจ็กต์งานวิเคราะห์ความสามารถในการพิมพ์ ฟิลด์ printability จะยังไม่ปรากฏจนกว่างานจะมีสถานะเป็น SUCCEEDED เมื่อ Meshy ตรวจสอบความหนาผนัง printability จะมี intended_print และ thin_walls รวมอยู่ด้วย


DELETE/openapi/v1/print/analyze/:id

ลบงานวิเคราะห์ความสามารถในการพิมพ์

ลบงานวิเคราะห์ความสามารถในการพิมพ์อย่างถาวร รวมถึงผลลัพธ์ที่แคชไว้ด้วย คุณไม่สามารถย้อนกลับการลบได้

Request

DELETE
/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS. The task keeps running:
{
  "message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}

พารามิเตอร์พาธ

  • Name
    id
    Type
    path
    Description

    ID ของงานที่ต้องการลบ

สถานะของงาน

การลบงานที่มีสถานะ PENDING จะคืนเครดิตที่ใช้ไปตอนที่คุณสร้างงานนั้น

งานที่มีสถานะ IN_PROGRESS ไม่สามารถลบได้ คำขอจะส่งคืน 409 Conflict และงานจะยังคงทำงานต่อไป Meshy จะไม่คืนเครดิตสำหรับงานที่เริ่มทำงานไปแล้ว ดังนั้นการลบงานนี้จะทำให้คุณเสียทั้งเครดิตและผลลัพธ์ รอให้งานถึงสถานะ SUCCEEDED, FAILED หรือ CANCELED ก่อน แล้วจึงลบ

การลบงานที่อยู่ในสถานะสุดท้าย (SUCCEEDED, FAILED หรือ CANCELED) จะไม่คืนเครดิต

ค่าที่ส่งกลับ

200 OK เมื่อลบงานสำเร็จ หรือ 409 Conflict เมื่องานมีสถานะ IN_PROGRESS


GET/openapi/v1/print/analyze

List Analyze Printability tasks

คืนค่ารายการงานวิเคราะห์ความสามารถในการพิมพ์ของคุณ

Request

GET
/openapi/v1/print/analyze
curl https://api.meshy.ai/openapi/v1/print/analyze?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "print-analyze",
    "status": "SUCCEEDED",
    "progress": 100,
    "preceding_tasks": 0,
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "expires_at": 1715725401000,
    "task_error": null,
    "printability": {
      "_version": "v1",
      "status": "warning",
      "issue_count": 1,
      "error_count": 0,
      "warning_count": 1,
      "metrics": {
        "is_watertight": true,
        "volume": 1.316167354292668,
        "non_manifold_edges": 0,
        "degenerate_faces": 43242,
        "holes": 0
      },
      "evaluated_at": 1700000001000
    },
    "consumed_credits": 0
  }
]

Parameters

  • Name
    page_num
    Type
    integer
    ค่าเริ่มต้น 1
    Description

    หมายเลขหน้าที่ต้องการให้คืนค่า เริ่มต้นที่ 1

  • Name
    page_size
    Type
    integer
    ค่าเริ่มต้น 10
    Description

    จำนวนงานต่อหน้า สูงสุด 100

  • Name
    sort_by
    Type
    string
    Description

    ลำดับการเรียง

    ค่าที่ใช้ได้:

    • +created_at: เก่าสุดก่อน
    • -created_at: ใหม่สุดก่อน

Returns

รายการแบบแบ่งหน้าของ อ็อบเจกต์งานวิเคราะห์ความสามารถในการพิมพ์


GET/openapi/v1/print/analyze/:id/stream

Stream an Analyze Printability task

สตรีมการอัปเดตของงานวิเคราะห์ความสามารถในการพิมพ์ในรูปแบบ Server-Sent Events (SSE)

Request

GET
/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example
event: error
data: {
  "status_code": 404,
  "message": "Task not found"
}

// Message event examples illustrate task progress.
// Every frame is the full task object; fields not yet populated are null / empty.
// The following PENDING frame is abbreviated to the fields that change.
event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}

พารามิเตอร์

  • Name
    id
    Type
    path
    Description

    ไอดีของงานจากการตอบกลับของการสร้าง

ผลลัพธ์ที่ส่งกลับ

สตรีมของ อ็อบเจกต์งานวิเคราะห์ความสามารถในการพิมพ์ ในรูปแบบ Server-Sent Events

แต่ละอีเวนต์จะมีอ็อบเจกต์งานแบบเต็ม ในรูปแบบเดียวกับที่เอนด์พอยต์ Get ส่งคืน ขณะที่งานยังอยู่ในสถานะ PENDING หรือ IN_PROGRESS ฟิลด์ผลลัพธ์ของงาน จะว่างเปล่า (null, [], หรือ {}) และ finished_at จะเป็น 0 Meshy จะส่ง ฟิลด์ printability ก็ต่อเมื่องานมีสถานะเป็น SUCCEEDED แล้วเท่านั้น


The Analyze Printability task object

ออบเจ็กต์งาน Analyze Printability อธิบายการวิเคราะห์โมเดล 3D หนึ่งครั้ง โดยเก็บสถานะ progress และผลลัพธ์ความสามารถในการพิมพ์เมื่องานสำเร็จ

The Analyze Printability Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}

The Analyze Printability Task Object (wall thickness checked)

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000012000,
  "expires_at": 1715725412000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "error",
    "issue_count": 2,
    "error_count": 1,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "intended_print": {
      "printer_type": "sla",
      "height_mm": 100,
      "longest_side_mm": 118,
      "wall_thickness_mm": 0.8,
      "dimensions_mm": [118, 72.41, 99.87]
    },
    "thin_walls": {
      "thin_area_ratio": 0.083,
      "has_thin_walls": true,
      "status": "error"
    },
    "evaluated_at": 1700000012000
  },
  "consumed_credits": 0
}
  • Name
    id
    Type
    string
    Description

    รหัสของงาน ถือว่าเป็นสตริงทึบ (opaque string) และไม่ควรอ้างอิงรูปแบบของมัน

  • Name
    type
    Type
    string
    Description

    ประเภทของงาน ซึ่งจะเป็น print-analyze เสมอ

  • Name
    status
    Type
    string
    Description

    สถานะของงาน ซึ่งเป็นหนึ่งใน PENDING, IN_PROGRESS, SUCCEEDED, FAILED หรือ CANCELED

  • Name
    progress
    Type
    integer
    Description

    งานเสร็จไปเท่าไหร่แล้ว แสดงเป็นเปอร์เซ็นต์ โดยจะเป็น 0 จนกว่างานจะเริ่ม และเป็น 100 เมื่องานสำเร็จ

  • Name
    preceding_tasks
    Type
    integer
    Description

    จำนวนงานที่อยู่ก่อนหน้างานนี้ในคิว ค่านี้มีความหมายเฉพาะตอนที่งานอยู่ในสถานะ PENDING เท่านั้น

  • Name
    created_at
    Type
    timestamp
    Description

    เวลาที่สร้างงาน หน่วยเป็นมิลลิวินาทีแบบ Unix

  • Name
    started_at
    Type
    timestamp
    Description

    เวลาที่งานเริ่มต้น หน่วยเป็นมิลลิวินาทีแบบ Unix โดยจะเป็น 0 จนกว่างานจะเริ่ม

  • Name
    finished_at
    Type
    timestamp
    Description

    เวลาที่งานเสร็จสิ้น หน่วยเป็นมิลลิวินาทีแบบ Unix โดยจะเป็น 0 จนกว่างานจะเสร็จสิ้น

  • Name
    expires_at
    Type
    timestamp
    Description

    เวลาที่ผลลัพธ์ของงานหมดอายุ หน่วยเป็นมิลลิวินาทีแบบ Unix โดยจะเป็น 0 จนกว่างานจะเสร็จสิ้น

  • Name
    task_error
    Type
    object
    Description

    รายละเอียดข้อผิดพลาดเมื่องานล้มเหลว โดยจะเป็น null หากงานยังไม่ล้มเหลว ดู ข้อผิดพลาด

    • Name
      message
      Type
      string
      Description

      คำอธิบายว่าเกิดข้อผิดพลาดอะไรขึ้น

  • Name
    printability
    Type
    object
    Description

    ผลลัพธ์ของการวิเคราะห์ ซึ่งจะยังไม่ปรากฏจนกว่างานจะมีสถานะ SUCCEEDED

    • Name
      _version
      Type
      string
      Description

      เวอร์ชันของสคีมาของผลลัพธ์ความสามารถในการพิมพ์ ค่านี้คือ v1

    • Name
      status
      Type
      string
      Description

      ผลสรุปโดยรวม ซึ่งเป็นหนึ่งใน:

      • healthy: ไม่มีข้อผิดพลาดและไม่มีคำเตือน
      • warning: มีคำเตือนอย่างน้อยหนึ่งรายการ และไม่มีข้อผิดพลาด
      • error: มีข้อผิดพลาดอย่างน้อยหนึ่งรายการ
      • unknown: Meshy ไม่สามารถวิเคราะห์โมเดลได้

      เมื่อ Meshy ตรวจสอบความหนาผนัง ค่านี้จะเป็นค่าที่แย่กว่าระหว่างผลการตรวจสอบเมชและ thin_walls.status โดยเรียงลำดับจากแย่ที่สุดไปดีที่สุดคือ error, warning, unknown และ healthy

    • Name
      issue_count
      Type
      integer
      Description

      จำนวนปัญหาทั้งหมด ซึ่งเท่ากับ error_count + warning_count

    • Name
      error_count
      Type
      integer
      Description

      จำนวนปัญหาระดับข้อผิดพลาด Meshy จะนับเป็นข้อผิดพลาดหนึ่งรายการสำหรับแต่ละกรณีต่อไปนี้:

      • โมเดลไม่กันน้ำ (watertight) และมีรูมากกว่า 8 รู
      • โมเดลมีรูมากกว่า 8 รู
      • ปริมาตรเป็นศูนย์หรือน้อยกว่า
      • โมเดลมีขอบ non-manifold มากกว่า 50 ขอบ

      เมื่อ Meshy ตรวจสอบความหนาผนัง ผนังที่บางเกินไป (thin_walls.status เป็น error) จะถูกนับเป็นข้อผิดพลาดเพิ่มอีกหนึ่งรายการ

    • Name
      warning_count
      Type
      integer
      Description

      จำนวนปัญหาระดับคำเตือน Meshy จะนับเป็นคำเตือนหนึ่งรายการสำหรับแต่ละกรณีต่อไปนี้:

      • โมเดลไม่กันน้ำ (watertight) และมีรู 8 รูหรือน้อยกว่า
      • โมเดลมีรู 1 ถึง 8 รู
      • โมเดลมีขอบ non-manifold 1 ถึง 50 ขอบ
      • โมเดลมีหน้าเสื่อม
    • Name
      metrics
      Type
      object
      Description

      ค่าการวัดจีออเมทรีดิบของโมเดล

      • Name
        is_watertight
        Type
        boolean
        Description

        true เมื่อเมชไม่มีขอบขอบเขต (boundary edges) กล่าวคือเป็นโมเดลแบบปิด

      • Name
        volume
        Type
        number
        Description

        ปริมาตรของโมเดล หน่วยเป็นลูกบาศก์เมตร

      • Name
        non_manifold_edges
        Type
        integer
        Description

        จำนวนขอบ non-manifold

      • Name
        degenerate_faces
        Type
        integer
        Description

        จำนวนหน้าเสื่อม ซึ่งเป็นหน้าที่มีพื้นที่เป็นศูนย์หรือเป็นหน้าที่ไม่ถูกต้อง

      • Name
        holes
        Type
        integer
        Description

        จำนวนรูในเมช ซึ่งนับเป็นลูปขอบเขต (boundary loops)

    • Name
      intended_print
      Type
      object
      Description

      เครื่องพิมพ์และขนาดที่ใช้ในการตรวจสอบความหนาผนัง ค่านี้จะปรากฏเฉพาะเมื่อ Meshy ตรวจสอบความหนาผนังเท่านั้น

      • Name
        printer_type
        Type
        string
        Description

        ประเภทเครื่องพิมพ์ fdm, sla หรือ full_color

      • Name
        height_mm
        Type
        number
        Description

        ความสูงของงานพิมพ์ หน่วยเป็นมิลลิเมตร เมื่อขนาดของงานพิมพ์ถูกกำหนดด้วยความสูง มิฉะนั้นจะเป็น null

      • Name
        longest_side_mm
        Type
        number
        Description

        ความยาวของด้านที่ยาวที่สุดของงานพิมพ์ หน่วยเป็นมิลลิเมตร เมื่องานพิมพ์ถูกกำหนดขนาดด้วยความสูง Meshy จะคำนวณค่านี้จากสัดส่วนของโมเดล

      • Name
        wall_thickness_mm
        Type
        number
        Description

        ความหนาผนังขั้นต่ำสำหรับ printer_type หน่วยเป็นมิลลิเมตร Meshy จะรายงานผนังที่บางกว่าค่านี้ว่าบางเกินไป

      • Name
        dimensions_mm
        Type
        array
        Description

        ขนาด [width, depth, height] ของงานพิมพ์ หน่วยเป็นมิลลิเมตร ความสูงอาจแตกต่างจาก height_mm ได้เล็กน้อยในระดับเศษมิลลิเมตร ค่านี้จะเป็น null สำหรับไฟล์ที่ไม่ใช่ GLB หรือเมื่อ Meshy ไม่สามารถระบุขนาดของโมเดลได้

    • Name
      thin_walls
      Type
      object
      Description

      ผลลัพธ์ของการตรวจสอบความหนาผนัง ค่านี้จะปรากฏเฉพาะเมื่อ Meshy ตรวจสอบความหนาผนังเท่านั้น

      • Name
        thin_area_ratio
        Type
        number
        Description

        สัดส่วนของพื้นผิวที่บางกว่า intended_print.wall_thickness_mm มีค่าตั้งแต่ 0 ถึง 1 ค่านี้จะเป็น null เมื่อ Meshy ไม่สามารถวัดโมเดลได้

      • Name
        has_thin_walls
        Type
        boolean
        Description

        true หากมีส่วนใดของพื้นผิวที่บางเกินไป มุมแหลมเพียงอย่างเดียวก็อาจทำให้ค่านี้เป็น true ได้ ดังนั้นควรใช้ status ในการตัดสินใจว่าผนังจำเป็นต้องทำให้หนาขึ้นหรือไม่ ค่านี้จะเป็น null เมื่อ Meshy ไม่สามารถวัดโมเดลได้

      • Name
        status
        Type
        string
        Description

        ผลสรุปความหนาผนัง ซึ่งเป็นหนึ่งใน:

        • healthy: พื้นผิวที่บางเกินไปมีไม่เกิน 5%
        • error: พื้นผิวที่บางเกินไปมีมากกว่า 5% หากต้องการทำให้ผนังหนาขึ้น ให้ส่ง id ของงานนี้ไปยัง ซ่อมความสามารถในการพิมพ์ ในชื่อ input_task_id หากงานนี้วิเคราะห์ไฟล์ .stl, .fbx หรือ .gltf จาก model_url ให้ส่งไฟล์นั้นเป็น model_url แทน
        • unknown: Meshy ไม่สามารถวัดโมเดลได้ หากการตรวจสอบความหนาผนังเองล้มเหลว งานจะจบลงด้วยสถานะ FAILED
    • Name
      evaluated_at
      Type
      timestamp
      Description

      เวลาที่ Meshy คำนวณผลการวิเคราะห์ หน่วยเป็นมิลลิวินาทีแบบ Unix

  • Name
    consumed_credits
    Type
    integer
    Description

    จำนวนเครดิตที่งานนี้ใช้ไป ค่านี้จะเป็น 0 เสมอ เนื่องจากการวิเคราะห์ไม่มีค่าใช้จ่าย