Index: trunk/src_plugins/query/fnc.c =================================================================== --- trunk/src_plugins/query/fnc.c (revision 34209) +++ trunk/src_plugins/query/fnc.c (revision 34210) @@ -167,6 +167,7 @@ pcb_qry_fnc_reg("pstkring", fnc_pstkring); pcb_qry_fnc_reg("netlen", fnc_netlen); pcb_qry_fnc_reg("obj_by_idpath", fnc_obj_by_idpath); + pcb_qry_fnc_reg("poly_is_valid", fnc_poly_is_valid); pcb_qry_fnc_reg("thermal_on", fnc_thermal_on); Index: trunk/src_plugins/query/fnc_glue.c =================================================================== --- trunk/src_plugins/query/fnc_glue.c (revision 34209) +++ trunk/src_plugins/query/fnc_glue.c (revision 34210) @@ -326,3 +326,19 @@ PCB_QRY_RET_OBJ(res, obj); } + +static int fnc_poly_is_valid(pcb_qry_exec_t *ectx, int argc, pcb_qry_val_t *argv, pcb_qry_val_t *res) +{ + pcb_board_t *pcb = ectx->pcb; + pcb_idpath_t *path; + pcb_any_obj_t *obj; + + if ((argc != 1) || (argv[0].type != PCBQ_VT_OBJ)) + return -1; + + obj = argv[0].data.obj; + if (obj->type != PCB_OBJ_POLY) + return -1; + + PCB_QRY_RET_INT(res, !!pcb_poly_is_valid((pcb_poly_t *)obj)); +} \ No newline at end of file