Block Table Errors

Hey all :waving_hand:

Can anyone help me with what block table errors are? I’m guessing we’re doing something dumb in our plugin with blocks, but not sure where to start looking for the culprit.

See snippet from audit :backhand_index_pointing_down:

Summary

Total: 1008 model components (317 deleted). 28 system components.

m_instance_definition_table[0]->ObjectCount() = 0.
m_instance_definition_table[1]->ObjectCount() = 0.
m_instance_definition_table[2]->ObjectCount() = 0.
m_instance_definition_table[3]->ObjectCount() = 0.
m_instance_definition_table[4]->ObjectCount() = 0.
m_instance_definition_table[5]->ObjectCount() = 0.
m_instance_definition_table[6]->ObjectCount() = 0.
m_instance_definition_table[7]->ObjectCount() = 0.
m_instance_definition_table[8]->ObjectCount() = 0.
m_instance_definition_table[9]->ObjectCount() = 0.
m_instance_definition_table[10]->ObjectCount() = 0.
m_instance_definition_table[11]->ObjectCount() = 0.
m_instance_definition_table[12]->ObjectCount() = 0.
m_instance_definition_table[13]->ObjectCount() = 0.
m_instance_definition_table[14]->ObjectCount() = 0.
m_instance_definition_table[15]->ObjectCount() = 0.
m_instance_definition_table[16]->ObjectCount() = 0.
m_instance_definition_table[17]->ObjectCount() = 0.
m_instance_definition_table[19]->ObjectCount() = 0.
m_instance_definition_table[20]->ObjectCount() = 0.
m_instance_definition_table[21]->ObjectCount() = 0.
m_instance_definition_table[22]->ObjectCount() = 0.
m_instance_definition_table[23]->ObjectCount() = 0.
m_instance_definition_table[24]->ObjectCount() = 0.
m_instance_definition_table[25]->ObjectCount() = 0.
m_instance_definition_table[26]->ObjectCount() = 0.
m_instance_definition_table[27]->ObjectCount() = 0.
m_instance_definition_table[28]->ObjectCount() = 0.
m_instance_definition_table[29]->ObjectCount() = 0.
m_instance_definition_table[30]->ObjectCount() = 0.
m_instance_definition_table[31]->ObjectCount() = 0.
m_instance_definition_table[32]->ObjectCount() = 0.
m_instance_definition_table[33]->ObjectCount() = 0.
m_instance_definition_table[34]->ObjectCount() = 0.
m_instance_definition_table[35]->ObjectCount() = 0.
m_instance_definition_table[36]->ObjectCount() = 0.
m_instance_definition_table[37]->ObjectCount() = 0.
m_instance_definition_table[38]->ObjectCount() = 0.
m_instance_definition_table[39]->ObjectCount() = 0.
m_instance_definition_table[40]->ObjectCount() = 0.
m_instance_definition_table[41]->ObjectCount() = 0.
m_instance_definition_table[42]->ObjectCount() = 0.
m_instance_definition_table[43]->ObjectCount() = 0.
m_instance_definition_table[44]->ObjectCount() = 0.
m_instance_definition_table[45]->ObjectCount() = 0.
m_instance_definition_table[46]->ObjectCount() = 0.
m_instance_definition_table[47]->ObjectCount() = 0.
m_instance_definition_table[48]->ObjectCount() = 0.
m_instance_definition_table[49]->ObjectCount() = 0.
m_instance_definition_table[50]->ObjectCount() = 0.
m_instance_definition_table[51]->ObjectCount() = 0.
m_instance_definition_table[52]->ObjectCount() = 0.
m_instance_definition_table[53]->ObjectCount() = 0.
m_instance_definition_table[54]->ObjectCount() = 0.
m_instance_definition_table[55]->ObjectCount() = 0.
m_instance_definition_table[56]->ObjectCount() = 0.
m_instance_definition_table[57]->ObjectCount() = 0.
m_instance_definition_table[58]->ObjectCount() = 0.
m_instance_definition_table[59]->ObjectCount() = 0.
m_instance_definition_table[60]->ObjectCount() = 0.
m_instance_definition_table[61]->ObjectCount() = 0.
m_instance_definition_table[62]->ObjectCount() = 0.
m_instance_definition_table[63]->ObjectCount() = 0.
m_instance_definition_table[64]->ObjectCount() = 0.
m_instance_definition_table[65]->ObjectCount() = 0.
m_instance_definition_table[66]->ObjectCount() = 0.
m_instance_definition_table[67]->ObjectCount() = 0.
m_instance_definition_table[68]->ObjectCount() = 0.
m_instance_definition_table[69]->ObjectCount() = 0.
m_instance_definition_table[70]->ObjectCount() = 0.
m_instance_definition_table[71]->ObjectCount() = 0.
m_instance_definition_table[72]->ObjectCount() = 0.
m_instance_definition_table[73]->ObjectCount() = 0.
m_instance_definition_table[74]->ObjectCount() = 0.
m_instance_definition_table[75]->ObjectCount() = 0.
m_instance_definition_table[76]->ObjectCount() = 0.
m_instance_definition_table[77]->ObjectCount() = 0.
m_instance_definition_table[78]->ObjectCount() = 0.
m_instance_definition_table[79]->ObjectCount() = 0.
m_instance_definition_table[80]->ObjectCount() = 0.
m_instance_definition_table[81]->ObjectCount() = 0.
m_instance_definition_table[82]->ObjectCount() = 0.
m_instance_definition_table[83]->ObjectCount() = 0.
m_instance_definition_table[84]->ObjectCount() = 0.
m_instance_definition_table[85]->ObjectCount() = 0.
m_instance_definition_table[86]->ObjectCount() = 0.
m_instance_definition_table[87]->ObjectCount() = 0.
m_instance_definition_table[88]->ObjectCount() = 0.
m_instance_definition_table[89]->ObjectCount() = 0.
m_instance_definition_table[90]->ObjectCount() = 0.
m_instance_definition_table[91]->ObjectCount() = 0.
m_instance_definition_table[92]->ObjectCount() = 0.
m_instance_definition_table[93]->ObjectCount() = 0.
m_instance_definition_table[94]->ObjectCount() = 0.
m_instance_definition_table[95]->ObjectCount() = 0.
m_instance_definition_table[96]->ObjectCount() = 0.
m_instance_definition_table[97]->ObjectCount() = 0.
m_instance_definition_table[98]->ObjectCount() = 0.
m_instance_definition_table[99]->ObjectCount() = 0.
m_instance_definition_table[100]->ObjectCount() = 0.
m_instance_definition_table[101]->ObjectCount() = 0.
m_instance_definition_table[102]->ObjectCount() = 0.
m_instance_definition_table[103]->ObjectCount() = 0.
m_instance_definition_table[104]->ObjectCount() = 0.
m_instance_definition_table[105]->ObjectCount() = 0.
m_instance_definition_table[106]->ObjectCount() = 0.
m_instance_definition_table[107]->ObjectCount() = 0.
m_instance_definition_table[108]->ObjectCount() = 0.
m_instance_definition_table[109]->ObjectCount() = 0.
m_instance_definition_table[110]->ObjectCount() = 0.
m_instance_definition_table[111]->ObjectCount() = 0.
m_instance_definition_table[112]->ObjectCount() = 0.
m_instance_definition_table[113]->ObjectCount() = 0.
m_instance_definition_table[114]->ObjectCount() = 0.
m_instance_definition_table[115]->ObjectCount() = 0.
m_instance_definition_table[116]->ObjectCount() = 0.
m_instance_definition_table[117]->ObjectCount() = 0.
m_instance_definition_table[118]->ObjectCount() = 0.
m_instance_definition_table[119]->ObjectCount() = 0.
m_instance_definition_table[120]->ObjectCount() = 0.
m_instance_definition_table[121]->ObjectCount() = 0.
m_instance_definition_table[122]->ObjectCount() = 0.
m_instance_definition_table[123]->ObjectCount() = 0.
m_instance_definition_table[124]->ObjectCount() = 0.
m_instance_definition_table[125]->ObjectCount() = 0.
m_instance_definition_table[126]->ObjectCount() = 0.
m_instance_definition_table[127]->ObjectCount() = 0.
m_instance_definition_table[128]->ObjectCount() = 0.
m_instance_definition_table[129]->ObjectCount() = 0.
m_instance_definition_table[130]->ObjectCount() = 0.
m_instance_definition_table[131]->ObjectCount() = 0.
m_instance_definition_table[132]->ObjectCount() = 0.
m_instance_definition_table[133]->ObjectCount() = 0.
m_instance_definition_table[134]->ObjectCount() = 0.
m_instance_definition_table[135]->ObjectCount() = 0.
m_instance_definition_table[136]->ObjectCount() = 0.
m_instance_definition_table[137]->ObjectCount() = 0.
m_instance_definition_table[138]->ObjectCount() = 0.
m_instance_definition_table[139]->ObjectCount() = 0.
m_instance_definition_table[140]->ObjectCount() = 0.
m_instance_definition_table[141]->ObjectCount() = 0.
m_instance_definition_table[142]->ObjectCount() = 0.
m_instance_definition_table[143]->ObjectCount() = 0.
m_instance_definition_table[144]->ObjectCount() = 0.
m_instance_definition_table[145]->ObjectCount() = 0.
m_instance_definition_table[146]->ObjectCount() = 0.
m_instance_definition_table[147]->ObjectCount() = 0.
m_instance_definition_table[148]->ObjectCount() = 0.
m_instance_definition_table[149]->ObjectCount() = 0.
m_instance_definition_table[150]->ObjectCount() = 0.
m_instance_definition_table[151]->ObjectCount() = 0.
m_instance_definition_table[152]->ObjectCount() = 0.
m_instance_definition_table[153]->ObjectCount() = 0.
m_instance_definition_table[154]->ObjectCount() = 0.
m_instance_definition_table[155]->ObjectCount() = 0.
m_instance_definition_table[156]->ObjectCount() = 0.
m_instance_definition_table[157]->ObjectCount() = 0.
m_instance_definition_table[158]->ObjectCount() = 0.
m_instance_definition_table[159]->ObjectCount() = 0.
m_instance_definition_table[160]->ObjectCount() = 0.
m_instance_definition_table[161]->ObjectCount() = 0.
m_instance_definition_table[162]->ObjectCount() = 0.
m_instance_definition_table[163]->ObjectCount() = 0.
m_instance_definition_table[164]->ObjectCount() = 0.
m_instance_definition_table[165]->ObjectCount() = 0.
m_instance_definition_table[166]->ObjectCount() = 0.
m_instance_definition_table[167]->ObjectCount() = 0.
m_instance_definition_table[168]->ObjectCount() = 0.
m_instance_definition_table[169]->ObjectCount() = 0.
m_instance_definition_table[170]->ObjectCount() = 0.
m_instance_definition_table[171]->ObjectCount() = 0.
m_instance_definition_table[172]->ObjectCount() = 0.
m_instance_definition_table[173]->ObjectCount() = 0.
m_instance_definition_table[174]->ObjectCount() = 0.
m_instance_definition_table[175]->ObjectCount() = 0.
m_instance_definition_table[176]->ObjectCount() = 0.
m_instance_definition_table[177]->ObjectCount() = 0.
Audit Summary:
0 object errors detected.
0 linetype table errors detected.
0 layer table errors detected.
177 block table errors detected.
0 font table errors detected.
0 annotation style table errors detected.

Are we not deleting blocks properly? And what effect does this have on rhino (we’re not able to notice any meaningful impact as yet)…

Thanks in advance!

-Luke

Hi @Lukxf,

Not without a file.

Are you writing user data?

– Dale

1 Like

Thanks for replying @dale! Looks like it was a silly bug in our plugin where we were deleting blocks twice :man_facepalming:

Interesting about deleting blocks with userdata though, I think that could also be an issues elsewhere in our plugin. Is there a way to access audit information using RhinoCommon? I see there’s https://developer.rhino3d.com/api/rhinocommon/rhino.fileio.file3dm/audit but its deprecated – can manifest be used to look up errors in the document? Would be good for tracking down when errors happen…

I just added this. But it won’t be available until Rhino 8.19. Not sure if it will be of any help to you.

– Dale

1 Like

Thanks @dale, I’ll keep an eye out for 8.19 and give it a test!