Just fixed the problem myself... For single path, use SetParserPaintFieldVisible instead of SetPaintFieldVisible
Also need create new art style and apply to the pathart.
However, it seems GetPaintFieldVisible still don't work right after hiding the path. I guess it requires another call to get paintField from the new artStyle and parser.
AIBoolean visible = false;
sAIArtStyleParser->SetParserPaintFieldVisible(paintField, visible);
error = sAIArtStyleParser->CreateNewStyle(parser, &artStyle);
error = sAIArtStyle->SetArtStyle(artHandle, artStyle);
sAIArtStyleParser->GetPaintFieldVisible(paintField, &visible);
of << "visible " << i << " " << visible << endl;