Index: trunk/src_plugins/act_read/act_layer.c =================================================================== --- trunk/src_plugins/act_read/act_layer.c (revision 28933) +++ trunk/src_plugins/act_read/act_layer.c (revision 28934) @@ -33,6 +33,7 @@ #include "data.h" #include "layer.h" #include "actions.h" +#include "actions_pcb.h" #include "plugins.h" #include "misc_util.h" #include "idpath.h" @@ -50,18 +51,21 @@ pcb_board_t *pcb = PCB_ACT_BOARD; int cmd, fld; char *cmds, *flds; + pcb_layergrp_id_t gid; pcb_layergrp_t *grp; long idx; PCB_ACT_CONVARG(1, FGW_STR, ReadGroup, cmds = argv[1].val.str); -TODO("Get the group here"); - cmd = act_read_keywords_sphash(cmds); switch(cmd) { case act_read_keywords_length: - PCB_ACT_IRES(0); + res->type = FGW_LONG; res->val.nat_long = pcb->LayerGroups.len; return 0; case act_read_keywords_layerid: + PCB_ACT_CONVARG(2, FGW_LAYERGRPID, ReadGroup, gid = fgw_layergrpid(&argv[2])); + grp = pcb_get_layergrp(pcb, gid); + if (grp == NULL) + return FGW_ERR_ARG_CONV; PCB_ACT_CONVARG(3, FGW_LONG, ReadGroup, idx = argv[3].val.nat_long); if ((idx < 0) || (idx >= grp->len)) return FGW_ERR_ARG_CONV; @@ -68,6 +72,10 @@ res->type = FGW_LONG; res->val.nat_long = grp->lid[idx]; return 0; case act_read_keywords_field: + PCB_ACT_CONVARG(2, FGW_LAYERGRPID, ReadGroup, gid = fgw_layergrpid(&argv[2])); + grp = pcb_get_layergrp(pcb, gid); + if (grp == NULL) + return FGW_ERR_ARG_CONV; PCB_ACT_CONVARG(3, FGW_STR, ReadGroup, flds = argv[3].val.str); fld = act_read_keywords_sphash(flds); switch(fld) { Index: trunk/src_plugins/act_read/act_read.c =================================================================== --- trunk/src_plugins/act_read/act_read.c (revision 28933) +++ trunk/src_plugins/act_read/act_read.c (revision 28934) @@ -111,6 +111,8 @@ {"GetMark", pcb_act_GetMark, pcb_acth_GetMark, pcb_acts_GetMark}, + {"ReadGroup", pcb_act_ReadGroup, pcb_acth_ReadGroup, pcb_acts_ReadGroup}, + {"IsPointOnArc", pcb_act_IsPointOnArc, pcb_acth_IsPointOnArc, pcb_acts_IsPointOnArc}, {"IsPointOnLine", pcb_act_IsPointOnLine, pcb_acth_IsPointOnLine, pcb_acts_IsPointOnLine}, {"IntersectObjObj", pcb_act_IntersectObjObj, pcb_acth_IntersectObjObj, pcb_acts_IntersectObjObj}