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

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

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


POST/openapi/v1/print/analyze

Create an Analyze Printability Task

เอนด์พอยต์นี้สร้างงานวิเคราะห์ความสามารถในการพิมพ์ใหม่ งานนี้จะประเมินโมเดล 3D และรายงานค่าเมตริกความสามารถในการพิมพ์

งานนี้ทำงานอยู่เบื้องหลัง สำหรับระยะเวลาที่ใช้โดยทั่วไป โปรดดูที่ Processing Times

หากงานที่ป้อนเข้าไปมีข้อมูลความสามารถในการพิมพ์ที่แคชไว้อยู่แล้ว งานที่ส่งกลับมาจะพร้อมใช้งานทันที และการเรียก GET ครั้งแรกบนงานนั้นจะส่งคืนผลการวิเคราะห์โดยไม่ต้องผ่าน worker

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

พารามิเตอร์

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

    URL ของโมเดล 3D ที่จะวิเคราะห์ รูปแบบที่รองรับ: .glb, .gltf, .obj, .fbx, .stl ใช้ URL แบบ http หรือ https หรือ URL แบบ base64 data: สำหรับ GLB (data:model/gltf-binary;base64,...) หรือ glTF (data:model/gltf+json;base64,...) ไฟล์ .obj, .fbx และ .stl ต้องส่งเป็น URL แบบ http หรือ https

    ขนาดไฟล์สูงสุด: 400 MB สำหรับ URL แบบ http หรือ https, 100 MB สำหรับ URI แบบ data:

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

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

  • Name
    printer_type
    Type
    string
    Description

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

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

    • fdm: filament ความหนาผนังขั้นต่ำ 1.0 มม.
    • sla: resin ความหนาผนังขั้นต่ำ 0.8 มม.
    • full_color: full-color ความหนาผนังขั้นต่ำ 2.0 มม.
  • Name
    intended_print_height_mm
    Type
    number
    Description

    ความสูงของชิ้นงานพิมพ์ หน่วยเป็นมิลลิเมตร ช่วงค่า: [1, 1000] ปัดเศษให้เป็นมิลลิเมตรที่ใกล้ที่สุด รองรับเฉพาะอินพุตแบบ GLB เท่านั้น

  • Name
    intended_print_longest_side_mm
    Type
    number
    Description

    ความยาวของด้านที่ยาวที่สุดของชิ้นงานพิมพ์ หน่วยเป็นมิลลิเมตร ช่วงค่า: [1, 1000] ปัดเศษให้เป็นมิลลิเมตรที่ใกล้ที่สุด ใช้ได้กับทุกรูปแบบอินพุต

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

พร็อพเพอร์ตี้ 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 (URI แบบ data:)
    • มีจำนวนหน้ามากเกินไป: 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 และไม่สามารถอ่าน header ได้ ตัวอย่างเช่น GLB หรือ glTF ที่บีบอัดด้วย Draco หรือ binary FBX ที่เก่ากว่าเวอร์ชัน 7.1
    • Header ของโมเดลซับซ้อนเกินไป: model_url มีขนาดเกิน 100 MB และ header มีจำนวนเมช โหนด หรือเรคอร์ดมากเกินกว่าจะตรวจสอบได้ ให้ลดจำนวนออบเจ็กต์ในไฟล์ แล้วส่งอีกครั้ง
    • ไม่สามารถดาวน์โหลดไฟล์โมเดลได้: model_url ส่งคืนข้อผิดพลาด ซึ่งมักเกิดจาก URL ดาวน์โหลดของ Meshy ที่ลงนามไว้หมดอายุแล้ว การเรียกดูงานอีกครั้งจะส่งคืน URL เดิมพร้อมวันหมดอายุเดิม ดังนั้นให้ส่งสำเนาไฟล์ของคุณเอง หรือใช้ 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, 1000] มม. โมเดลแบนเกินไป หรือไม่สามารถระบุขนาดได้ ให้ใช้ intended_print_longest_side_mm แทน สำหรับ model_url แบบ .glb และงาน input_task_id บางงาน จะพบปัญหานี้หลังจากที่งานเริ่มต้นเท่านั้น และงานจะจบลงด้วยสถานะ FAILED แทน
    • ขนาด STL ใช้งานไม่ได้: มีการส่ง printer_type โดยไม่ระบุขนาด และด้านที่ยาวที่สุดของไฟล์ .stl เองไม่สามารถอ่านได้หรืออยู่นอกช่วง [1, 1000] มม. ให้ส่ง intended_print_longest_side_mm
  • Name
    401 - Unauthorized
    Description

    การยืนยันตัวตนล้มเหลว โปรดตรวจสอบ API คีย์ของคุณ

  • Name
    404 - Not Found
    Description

    สาเหตุทั่วไป:

    • งานไม่มีอยู่ ถูกลบไปแล้ว หรือเป็นของผู้ใช้รายอื่น
    • งานใช้โมเดลที่เก่ากว่า Meshy 6 หรือ mode ของงานไม่ได้สร้างแอสเซ็ต 3D
    • ไฟล์โมเดลต้นฉบับไม่สามารถใช้งานได้ในพื้นที่จัดเก็บข้อมูลอีกต่อไป
  • Name
    429 - Too Many Requests
    Description

    คุณเกินโควตางานที่รอดำเนินการหรือการจำกัดอัตราของคุณแล้ว

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"
}

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

ดึงข้อมูลงานวิเคราะห์ความสามารถในการพิมพ์

เอนด์พอยต์นี้ใช้ดึงข้อมูลงานวิเคราะห์ความสามารถในการพิมพ์ด้วย ID ของงานนั้น

พารามิเตอร์

  • Name
    id
    Type
    path
    Description

    ID ของงานวิเคราะห์ความสามารถในการพิมพ์ที่ต้องการดึงข้อมูล

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

Analyze Printability Task Object โดยฟิลด์ printability จะเป็น null จนกว่างานจะมีสถานะเป็น SUCCEEDED เมื่อมีการตรวจสอบความหนาผนัง printability จะมี intended_print และ thin_walls รวมอยู่ด้วย

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
}

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

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

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

Path Parameters

  • Name
    id
    Type
    path
    Description

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

สถานะของงาน

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

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

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

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

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

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 is left 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."
}

GET/openapi/v1/print/analyze

List Analyze Printability Tasks

เอนด์พอยต์นี้ช่วยให้คุณสามารถดึงรายการงานวิเคราะห์ความสามารถในการพิมพ์ได้

พารามิเตอร์

แอตทริบิวต์ที่ไม่บังคับ

  • Name
    page_num
    Type
    integer
    Description

    หมายเลขหน้าสำหรับการแบ่งหน้า เริ่มต้นและค่าเริ่มต้นคือ 1

  • Name
    page_size
    Type
    integer
    Description

    จำนวนจำกัดขนาดของหน้า ค่าเริ่มต้นคือ 10 รายการ สูงสุดที่อนุญาตคือ 100 รายการ

  • Name
    sort_by
    Type
    string
    Description

    ฟิลด์ที่ใช้สำหรับเรียงลำดับ ค่าที่ใช้ได้:

    • +created_at: เรียงลำดับตามเวลาที่สร้างจากน้อยไปมาก
    • -created_at: เรียงลำดับตามเวลาที่สร้างจากมากไปน้อย

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

ส่งคืนรายการแบบแบ่งหน้าของ Analyze Printability Task Objects

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
  }
]

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

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

เอนด์พอยต์นี้สตรีมการอัปเดตแบบเรียลไทม์สำหรับงานวิเคราะห์ความสามารถในการพิมพ์โดยใช้ Server-Sent Events (SSE)

พารามิเตอร์

  • Name
    id
    Type
    path
    Description

    ตัวระบุเฉพาะสำหรับงานวิเคราะห์ความสามารถในการพิมพ์ที่ต้องการสตรีม

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

ส่งกลับสตรีมของ Analyze Printability Task Objects ในรูปแบบ Server-Sent Events

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

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 PENDING frame below 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
}

The Analyze Printability Task Object

  • Name
    id
    Type
    string
    Description

    ตัวระบุเฉพาะสำหรับ task นี้ แม้ว่าเราจะใช้ k-sortable UUID สำหรับ task id เป็นรายละเอียดการ implement แต่คุณไม่ควรตั้งสมมติฐานใดๆ เกี่ยวกับรูปแบบของ id

  • Name
    type
    Type
    string
    Description

    ประเภทของ task วิเคราะห์ความสามารถในการพิมพ์ ค่าคือ print-analyze

  • Name
    status
    Type
    string
    Description

    สถานะของ task ค่าที่เป็นไปได้คือ PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED

  • Name
    progress
    Type
    integer
    Description

    progress ของ task หากยังไม่เริ่ม task คุณสมบัตินี้จะเป็น 0 เมื่อ task สำเร็จแล้ว ค่านี้จะกลายเป็น 100

  • Name
    preceding_tasks
    Type
    integer
    Description

    จำนวนของ task ที่อยู่ก่อนหน้า

  • Name
    created_at
    Type
    timestamp
    Description

    ไทม์สแตมป์ของเวลาที่สร้าง task หน่วยเป็นมิลลิวินาที

  • Name
    started_at
    Type
    timestamp
    Description

    ไทม์สแตมป์ของเวลาที่เริ่ม task หน่วยเป็นมิลลิวินาที หากยังไม่เริ่ม task คุณสมบัตินี้จะเป็น 0

  • Name
    finished_at
    Type
    timestamp
    Description

    ไทม์สแตมป์ของเวลาที่ task เสร็จสิ้น หน่วยเป็นมิลลิวินาที หากยังไม่เสร็จสิ้น คุณสมบัตินี้จะเป็น 0

  • Name
    expires_at
    Type
    timestamp
    Description

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

  • Name
    task_error
    Type
    object
    Description

    ข้อมูลข้อผิดพลาดหาก task ล้มเหลว คุณสมบัตินี้จะเป็น null หาก task ไม่ได้ล้มเหลว ดู ข้อผิดพลาด สำหรับรายละเอียดเพิ่มเติม

    • Name
      message
      Type
      string
      Description

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

  • Name
    printability
    Type
    object
    Description

    ผลลัพธ์การประเมินความสามารถในการพิมพ์ เป็น null จนกว่า task จะถึงสถานะ SUCCEEDED

    • Name
      _version
      Type
      string
      Description

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

    • Name
      status
      Type
      string
      Description

      สถานะโดยรวม เป็นหนึ่งใน:

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

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

    • Name
      issue_count
      Type
      integer
      Description

      จำนวนรวมของปัญหา เท่ากับ error_count + warning_count

    • Name
      error_count
      Type
      integer
      Description

      จำนวนปัญหาระดับข้อผิดพลาด ข้อผิดพลาดจะเกิดขึ้นเมื่อโมเดลไม่เป็น watertight มีปริมาตรที่ไม่เป็นบวก หรือมีขอบ non-manifold เมื่อมีการตรวจสอบความหนาผนัง ผนังที่บางเกินไป (thin_walls.status เป็น error) จะนับเป็นข้อผิดพลาดเพิ่มอีกหนึ่งรายการ

    • Name
      warning_count
      Type
      integer
      Description

      จำนวนปัญหาระดับคำเตือน คำเตือนจะเกิดขึ้นเมื่อโมเดลมีหน้าเสื่อม หรือรู

    • Name
      metrics
      Type
      object
      Description

      เมตริกจีออเมทรีดิบที่ส่งคืนโดยตัวประเมิน

      • Name
        is_watertight
        Type
        boolean
        Description

        true เมื่อเมชไม่มีขอบขอบเขต (กล่าวคือ ปิดสนิท)

      • 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

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

      • Name
        printer_type
        Type
        string
        Description

        fdm, sla, หรือ full_color

      • Name
        height_mm
        Type
        number
        Description

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

      • Name
        longest_side_mm
        Type
        number
        Description

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

      • Name
        wall_thickness_mm
        Type
        number
        Description

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

      • Name
        dimensions_mm
        Type
        array
        Description

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

    • Name
      thin_walls
      Type
      object
      Description

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

      • Name
        thin_area_ratio
        Type
        number
        Description

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

      • Name
        has_thin_walls
        Type
        boolean
        Description

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

      • Name
        status
        Type
        string
        Description

        ผลตัดสินความหนาผนัง เป็นหนึ่งใน:

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

      ไทม์สแตมป์ของเวลาที่คำนวณการวิเคราะห์ หน่วยเป็นมิลลิวินาทีนับจาก epoch

  • Name
    consumed_credits
    Type
    integer
    Description

    เป็น 0 เสมอ เอนด์พอยต์นี้ใช้งานฟรี

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
}