I have not looked at this in great detail, but here is what I know about EPDM file storage.
I retrieve files from the vault, typically PDFs and basic stuff.
Table dbo.documents is where you want to start. Search for your SLDPRT/SLDASM making sure to get the correct DocumentID.
Using this documentID, convert it to a Base 16 Hex number and using this Hex number, look into your storage location on your server under the folder "Data" and you will see a bunch of folders that are sorted based on the last character of your hex number (I think, take a look and it should make sense). There should be a folder that matches your Hex Document ID and inside will be all the files that have been checked in for this part, and you will see the BMPs there too. I'm not sure what the naming convention of the BMP image are... but you are probably safe to use the latest created file date for the BMP file.
A custom API could be set up to read the BOM using out of the box API functions... and your BMP column would have to be SQL direct. Unless there is an API call to get the BMP file, I personally do not know if there is one. Check the API documentation of course before setting out to do the SQL thing.
For Ref, here is some code I use to convert a double to a base16HexNo.
See Next Post
Wow... the copy and paste didn't work correctly. Updated function
Public Function ConvertDec2Hex(Number As Double) As String
Dim FinalHexNo As String = ""
Dim n As Int16, i As Int16
Dim Hex16() As String
If (Number < 1) And (Number > 0) Then
Err.Raise(2, , "Error, this function has not been updated to accept numbers less than 1")
ElseIf Number = 0 Then
ElseIf Number < 0 Then
Err.Raise(3, , "Error, this function has not been updated to accept negative numbers")
n = 0
Do While True
If 16 ^ n > Number Then Exit Do
n = n + 1
n = n - 1
For i = n To 0 Step -1
Hex16(i) = Trim(Str(Int(Number / 16 ^ i)))
FinalHexNo = FinalHexNo & GetHex(Hex16(i))
Number = Number - CInt(Hex16(i)) * 16 ^ i