API Analizza stampabilità
Analizza un modello 3D per la stampabilità — tenuta stagna, volume, fori, spigoli non manifold e facce degenerate. Facoltativamente, verifica anche lo spessore parete nella dimensione in cui prevedi di stampare.
Creare un'attività di Analizza stampabilità
Questo endpoint crea una nuova attività di analisi della stampabilità. L'attività valuta un modello 3D e restituisce le relative metriche di stampabilità.
L'attività viene eseguita in background. Per i tempi di esecuzione tipici, consulta Tempi di elaborazione.
Se l'attività di input ha già una stampabilità memorizzata nella cache, l'attività restituita è immediatamente pronta e la prima GET su di essa restituirà il risultato dell'analisi senza passare attraverso il worker.
Per verificare anche lo spessore parete alla dimensione con cui intendi stampare, invia printer_type, una dimensione di stampa, o entrambi. Il risultato viene restituito in printability.thin_walls. La verifica dello spessore parete richiede più tempo, quindi l'attività solitamente non è pronta subito, anche se il modello è già stato analizzato in precedenza.
Parametri
È obbligatorio solo uno tra input_task_id o model_url. Se vengono forniti entrambi, input_task_id ha la priorità.
- Name
- input_task_id
- Type
- string
- Obbligatorio
- Description
L'ID di un'attività completata con successo di tua proprietà. Tipi di attività supportati: Immagine in 3D, Multi-immagine in 3D, Testo in 3D, Remesh e Retexture. L'attività deve utilizzare Meshy 6 o versione successiva (incluso Meshy 7) e deve avere uno stato
SUCCEEDED. Sono accettate anche le attività di Ripara stampabilità.
- Name
- model_url
- Type
- string
- Obbligatorio
- Description
URL di un modello 3D da analizzare. Formati supportati:
.glb,.gltf,.obj,.fbx,.stl. Dimensione massima del file: 100 MB. Deve utilizzarehttp,https, oppure un URLdata:(gli URL data bypassano i controlli sull'estensione).Gli URL di download di Meshy (
assets.meshy.ai/…?Expires=…&Signature=…) sono firmati e smettono di funzionare allaexpires_atdell'attività; recuperare nuovamente l'attività non li rinnova. Per un modello generato con Meshy, invia inveceinput_task_id. Funziona finché l'attività di origine viene conservata (vedi Conservazione degli asset). Per riutilizzare un modello dopo tale termine, scaricalo prima diexpires_ate invia una tua copia.
Invia al massimo uno dei due campi relativi alla dimensione di stampa. Se invii printer_type senza una dimensione, la dimensione predefinita è:
.glbe qualsiasiinput_task_id: 150 mm di altezza..stl: il lato più lungo del file stesso, letto in millimetri. Per un file STL in altre unità, inviaintended_print_longest_side_mm..obj,.fbx,.gltf: 150 mm sul lato più lungo.
- Name
- printer_type
- Type
- string
- Description
La stampante che intendi utilizzare. Imposta lo spessore parete minimo per il controllo dello spessore parete. Il valore predefinito è
fdmquando invii una dimensione di stampa senza specificarlo.Valori disponibili:
fdm: filamento, spessore parete minimo 1,0 mm.sla: resina, spessore parete minimo 0,8 mm.full_color: a colori, spessore parete minimo 2,0 mm.
- Name
- intended_print_height_mm
- Type
- number
- Description
Altezza della stampa, in millimetri. Intervallo:
[1, 1000]. Arrotondato al millimetro più vicino. Solo per input GLB.
- Name
- intended_print_longest_side_mm
- Type
- number
- Description
Lunghezza del lato più lungo della stampa, in millimetri. Intervallo:
[1, 1000]. Arrotondato al millimetro più vicino. Funziona con qualsiasi formato di input.
Valori restituiti
La proprietà result della risposta contiene l'id della nuova attività di analisi della stampabilità appena creata.
Modalità di errore
- Name
400 - Bad Request- Description
La richiesta non era accettabile. Cause comuni:
- Parametro mancante: non è stato fornito né
input_task_idnémodel_url. - UUID non valido:
input_task_idnon è un UUID valido. - URL del modello non valido:
model_urlè malformato, utilizza uno schema non supportato, oppure ha un'estensione file non supportata. - File del modello troppo grande: il corpo di
model_urlha superato i 100 MB. - Impossibile scaricare il file del modello:
model_urlha restituito un errore, il più delle volte perché un URL di download firmato di Meshy è scaduto. Recuperare nuovamente l'attività restituisce lo stesso URL con la stessa scadenza, quindi invia una tua copia del file, oppure usainput_task_idfinché l'attività di origine è ancora conservata. - Attività non completata con successo: l'attività referenziata è ancora in sospeso, in corso, oppure non riuscita.
- Dimensione di stampa non valida:
intended_print_height_mmointended_print_longest_side_mmè al di fuori di[1, 1000], oppure sono stati inviati entrambi. - Tipo di stampante sconosciuto:
printer_typenon èfdm,slaofull_color. - Altezza su un modello non GLB:
intended_print_height_mmè stato inviato con unmodel_urlche non è.glb. Usa inveceintended_print_longest_side_mm. - Impossibile dimensionare questo modello in base all'altezza: all'altezza richiesta (o al valore predefinito di 150 mm), il lato più lungo del modello risulterebbe al di fuori di
[1, 1000]mm, il modello è piatto, oppure la sua dimensione non può essere determinata. Usa inveceintended_print_longest_side_mm. Per unmodel_url.glbe per alcune attivitàinput_task_id, questo viene rilevato solo dopo l'avvio dell'attività, e l'attività termina conFAILEDanziché con un errore immediato. - Dimensione STL inutilizzabile:
printer_typeè stato inviato senza una dimensione, e il lato più lungo del file.stlstesso non può essere letto oppure è al di fuori di[1, 1000]mm. Inviaintended_print_longest_side_mm.
- Parametro mancante: non è stato fornito né
- Name
401 - Unauthorized- Description
Autenticazione non riuscita. Controlla la tua chiave API.
- Name
403 - Forbidden- Description
L'attività esiste ma appartiene a un altro utente.
- Name
404 - Not Found- Description
Cause comuni:
- L'attività non esiste o è stata eliminata.
- L'attività utilizza un modello precedente a Meshy 6, oppure il suo mode non produce un asset 3D.
- Il file del modello sottostante non è più disponibile nello storage.
- Name
429 - Too Many Requests- Description
Hai superato la quota di attività in sospeso o il limite di frequenza.
Request
# 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"
}
Recuperare un task di Analizza stampabilità
Questo endpoint recupera un task di analisi della stampabilità tramite il suo ID.
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task di analisi della stampabilità da recuperare.
Restituisce
L'oggetto Task di Analizza stampabilità. Il campo printability è null finché il task non raggiunge lo stato SUCCEEDED. Quando è stato verificato lo spessore parete, printability include anche intended_print e thin_walls.
Request
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
}
Elimina un'attività di Analizza stampabilità
Questo endpoint elimina definitivamente un'attività di analisi della stampabilità e il relativo risultato memorizzato nella cache. Questa azione è irreversibile.
Parametri del percorso
- Name
- id
- Type
- path
- Description
L'ID dell'attività di analisi della stampabilità da eliminare.
Stato dell'attività
Un'attività ancora in stato PENDING viene eliminata e i crediti consumati al
momento della creazione vengono rimborsati.
Un'attività già in stato IN_PROGRESS non può essere eliminata: la richiesta viene
rifiutata con 409 Conflict e l'attività continua a essere eseguita. I crediti per un'attività
che il worker ha già iniziato a elaborare non sono rimborsabili, quindi eliminarla a metà
esecuzione ti farebbe perdere sia i crediti che il risultato. Attendi che raggiunga lo stato
SUCCEEDED, FAILED o CANCELED, quindi eliminala.
Un'attività in uno stato finale (SUCCEEDED, FAILED o CANCELED) viene eliminata
senza rimborso.
Restituisce
Restituisce 200 OK in caso di successo, oppure 409 Conflict quando l'attività è
IN_PROGRESS.
Request
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."
}
List Analyze Printability Tasks
Questo endpoint consente di recuperare un elenco di task di Analizza stampabilità.
Parametri
Attributi opzionali
- Name
- page_num
- Type
- integer
- Description
Numero di pagina per la paginazione. Inizia e ha come valore predefinito
1.
- Name
- page_size
- Type
- integer
- Description
Limite di dimensione della pagina. Il valore predefinito è
10elementi. Il massimo consentito è100elementi.
- Name
- sort_by
- Type
- string
- Description
Campo su cui ordinare. Valori disponibili:
+created_at: Ordina per data di creazione in ordine crescente.-created_at: Ordina per data di creazione in ordine decrescente.
Restituisce
Restituisce un elenco paginato di Oggetti Task di Analizza stampabilità.
Request
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
}
]
Analizza stampabilità in streaming di un task
Questo endpoint trasmette in streaming gli aggiornamenti in tempo reale di un task di analisi stampabilità utilizzando Server-Sent Events (SSE).
Parametri
- Name
- id
- Type
- path
- Description
Identificatore univoco del task di analisi stampabilità da trasmettere in streaming.
Restituisce
Restituisce uno stream di oggetti Task di analisi stampabilità come Server-Sent Events.
Ogni frame contiene l'oggetto task completo relativo allo stadio corrente — la stessa struttura restituita
dall'endpoint Get — quindi mentre il task è PENDING o IN_PROGRESS i
campi di output semplicemente non sono ancora popolati (null, [] o {}) e
finished_at è null. Il blocco printability viene inviato solo quando il task raggiunge lo stato SUCCEEDED.
Request
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
}
L'oggetto Task Analizza stampabilità
- Name
- id
- Type
- string
- Description
Identificatore univoco del task. Sebbene venga utilizzato un UUID k-sortable per gli id dei task come dettaglio implementativo, non dovresti fare alcuna assunzione sul formato dell'id.
- Name
- type
- Type
- string
- Description
Tipo del task analyze-printability. Il valore è
print-analyze.
- Name
- status
- Type
- string
- Description
Stato del task. I possibili valori sono uno tra
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- progress
- Type
- integer
- Description
Progress del task. Se il task non è ancora iniziato, questa proprietà sarà
0. Una volta che il task è andato a buon fine, diventerà100.
- Name
- preceding_tasks
- Type
- integer
- Description
Il conteggio dei task precedenti.
Il valore di questo campo è significativo solo se lo stato del task è
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Timestamp di quando il task è stato creato, in millisecondi.
- Name
- started_at
- Type
- timestamp
- Description
Timestamp di quando il task è stato avviato, in millisecondi. Se il task non è ancora iniziato, questa proprietà sarà
0.
- Name
- finished_at
- Type
- timestamp
- Description
Timestamp di quando il task è terminato, in millisecondi. Se il task non è ancora terminato, questa proprietà sarà
0.
- Name
- expires_at
- Type
- timestamp
- Description
Timestamp di quando il risultato del task scadrà dal sistema, in millisecondi.
0se il task non è ancora terminato.
- Name
- task_error
- Type
- object
- Description
Informazioni sull'errore se il task è fallito. Questa proprietà è
nullse il task non è fallito. Vedi Errori per maggiori dettagli.- Name
message- Type
- string
- Description
Messaggio di errore che descrive cosa è andato storto.
- Name
- printability
- Type
- object
- Description
Risultato della valutazione di stampabilità.
nullfinché il task non raggiunge lo statoSUCCEEDED.- Name
_version- Type
- string
- Description
Versione dello schema del risultato di stampabilità. Attualmente
v1.
- Name
status- Type
- string
- Description
Stato complessivo. Uno tra:
healthy: nessun errore e nessun avviso.warning: almeno un avviso, nessun errore.error: almeno un errore.unknown: il modello non ha potuto essere analizzato.
Quando lo spessore parete è stato verificato, questo è il peggiore tra i controlli sopra e
thin_walls.status. Dal peggiore al migliore:error,warning,unknown,healthy.
- Name
issue_count- Type
- integer
- Description
Conteggio totale dei problemi, pari a
error_count + warning_count.
- Name
error_count- Type
- integer
- Description
Numero di problemi di livello errore. Gli errori vengono generati quando il modello non è a tenuta stagna (watertight), ha volume non positivo, oppure presenta spigoli non manifold. Quando lo spessore parete è stato verificato, le pareti troppo sottili (
thin_walls.statusèerror) contano come un errore aggiuntivo.
- Name
warning_count- Type
- integer
- Description
Numero di problemi di livello avviso. Gli avvisi vengono generati quando il modello contiene facce degenerate o fori.
- Name
metrics- Type
- object
- Description
Metriche grezze della geometria restituite dal valutatore.
- Name
is_watertight- Type
- boolean
- Description
truequando la mesh non ha spigoli di confine (cioè è chiusa).
- Name
volume- Type
- number
- Description
Volume del modello in metri cubi.
- Name
non_manifold_edges- Type
- integer
- Description
Conteggio degli spigoli non manifold.
- Name
degenerate_faces- Type
- integer
- Description
Conteggio delle facce degenerate (facce con area zero o non valide).
- Name
holes- Type
- integer
- Description
Conteggio dei fori (loop di confine) nella mesh.
- Name
intended_print- Type
- object
- Description
La stampante e la dimensione utilizzate dal controllo dello spessore parete. Presente solo quando lo spessore parete è stato verificato.
- Name
printer_type- Type
- string
- Description
fdm,sla, ofull_color.
- Name
height_mm- Type
- number
- Description
L'altezza di stampa in millimetri, se la stampa è stata dimensionata in base all'altezza. Altrimenti
null.
- Name
longest_side_mm- Type
- number
- Description
Il lato più lungo della stampa in millimetri. Quando dimensionato in base all'altezza, viene calcolato a partire dalle proporzioni del modello.
- Name
wall_thickness_mm- Type
- number
- Description
Lo spessore parete minimo per
printer_type, in millimetri. Le pareti più sottili di questo valore vengono segnalate come troppo sottili.
- Name
dimensions_mm- Type
- array
- Description
Le dimensioni
[width, depth, height]della stampa in millimetri. L'altezza può differire daheight_mmdi una frazione di millimetro.nullper input non-GLB, oppure se la dimensione del modello non può essere determinata.
- Name
thin_walls- Type
- object
- Description
Il risultato relativo allo spessore parete. Presente solo quando lo spessore parete è stato verificato.
- Name
thin_area_ratio- Type
- number
- Description
Quota della superficie, da
0a1, più sottile diintended_print.wall_thickness_mm.nullse il modello non ha potuto essere misurato.
- Name
has_thin_walls- Type
- boolean
- Description
truese una qualsiasi parte della superficie è troppo sottile. Anche solo gli angoli acuti possono far scattare questo valore, quindi usastatusper decidere se le pareti devono essere ispessite.nullse il modello non ha potuto essere misurato.
- Name
status- Type
- string
- Description
Il verdetto sullo spessore parete. Uno tra:
healthy: il 5% o meno della superficie è troppo sottile.error: più del 5% della superficie è troppo sottile. Per ispessire le pareti, passa l'iddi questo task a Ripara stampabilità comeinput_task_id(per unmodel_url.stl,.fbx, o.gltf, invia invece il file comemodel_url).unknown: il modello non ha potuto essere misurato. Se il controllo dello spessore parete stesso fallisce, il task termina comeFAILED.
- Name
evaluated_at- Type
- timestamp
- Description
Timestamp di quando l'analisi è stata calcolata, in millisecondi dall'epoch.
- Name
- consumed_credits
- Type
- integer
- Description
Sempre
0. Questo endpoint è gratuito.
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
}