|
I have a binary file (3D object file .LWO format) and I am having terrible joy getting the information out that i require.
The file consisits of several Chunks which relate to different 3D data. But for the moment I am interested in only 1 section known as the PNTS chunk. The file format viewed in a hex editor is as follows:
<br />
464F524D 0000017E 4C574F32 54414753 FORM...~LWO2TAGS<br />
0000000E 446B426C 75004465 6661756C ....DkBlu.Defaul<br />
74004C41 59520000 00120000 00000000 t.LAYR..........<br />
00000000 00000000 00000000 504E5453 ............PNTS<br />
00000060 C0000000 C0000000 C0000000 ...`À...À...À...<br />
40000000 C0000000 C0000000 40000000 @...À...À...@...<br />
C0000000 40000000 C0000000 C0000000 À...@...À...À...<br />
40000000 C0000000 40000000 C0000000 @...À...@...À...<br />
40000000 40000000 C0000000 40000000 @...@...À...@...<br />
40000000 40000000 C0000000 40000000 @...@...À...@...<br />
40000000 42424F58 00000018 C0000000 @...BBOX....À...<br />
C0000000 C0000000 40000000 40000000 À...À...@...@...<br />
40000000 504F4C53 00000040 46414345 @...POLS...@FACE<br />
00040000 00010002 00030004 00000004 ................<br />
00050001 00040001 00050006 00020004 ................<br />
00030002 00060007 00040000 00030007 ................<br />
00040004 00040007 00060005 50544147 ............PTAG<br />
0000001C 434F4C52 00000000 00010000 ....COLR........<br />
00020000 00030000 00040000 00050000 ................<br />
50544147 0000001C 53555246 00000001 PTAG....SURF....<br />
00010001 00020001 00030001 00040001 ................<br />
00050001 53555246 0000002A 44656661 ....SURF...*Defa<br />
756C7400 0000434F 4C52000E 3F48C8C9 ult...COLR..?HÈÉ<br />
3F48C8C9 3F48C8C9 00004449 46460006 ?HÈÉ?HÈÉ..DIFF..<br />
3F800000 0000 ?€.... <br />
The data I require is the list of points in the PNTS chunk, The first 4 bytes that follow the PNTS header text are the length of the chunk (so I am lead to believe). Following that each co-ordinate is made of 12 bytes, 3 axis create a co-ordinate X,Y,Z which are 4 bytes each. In this particular 3D model i chose a real basic cube 4m each side. so there should be 8 points to build the object. 8*12 = 96 which should be the same as the length set by the 4 bytes following the PNTS header. Whichever way i try to read the file the most I am able to get is the first Y co-ordinate to the end, therefore im always missing the first X co-ord of the first point, I have tried moving my current file positions to get this value but to no avail. Instead of pasting here every way i have tried to read this file, is there anyone here who could suggest the best way in vb.net to get this information?
I need to seek the PNTS Header, get the length of the PNTS chunk using the next 4 bytes, then read in the VB SINGLE vlaues to hold each x,y,z co-ordinates. The points are stored in IEEE Floating Point 32bit Hexadecimal. I can read in the HEX no problem but again I am not qualified enough to do the mathmatical conversion required to convert to decimal.
The points should be as follows:
-2: -2 : -2
2 : -2 : -2
2 : -2 : 2
-2: -2 : 2
-2: 2 : -2
2 : 2 : -2
2 : 2 : 2
-2: 2 : 2
For some reason when i read from the start of this chunk i always get -3.5 for the first co-ord when using the binaryreader object in vb.net
I would appreciate any help or pointers anyone can give me
Thanks in advance
Stewart
|
|
|
|
|
I would like to begin to learn how to make my own custom controls. However, I have absolutly no worthwhile knowledge on how to do this. Could someone point me to an article, explaining simply, but throughly the process of making my own controls?
Thanks -
Wayne P.
|
|
|
|
|
Try to check the information from here[^] as the initialize concept. For more information, try to search google.com[^] or MSDN website.[^].
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
hi
How can I work with DAO databases and recordsets in VB.NET.please send me an example code.
thank you so much
|
|
|
|
|
Sorry man, as far as I know, DAO is not present any more in VB.NET. If you want to work with VB.NET try to use ADO.NET. Try to check the information from here[^] about using ado.net with vb.net.
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
hey,
how do u do the progress bar exactly?
i would like to see the progress of saving a file.
i am not showing/using the "savefiledialog"
-thanks
|
|
|
|
|
WartHog000 wrote:
how do u do the progress bar exactly?
i would like to see the progress of saving a file.
What do you mean by this question? You mean how to use the progress bar (like copy the file in windows explorer)? If so, try to check the information from here.[^]
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
progress bar to see the progress of the saving file, i never did a progress bar before, but there is a first for most things.
i dunno if thats clearer?
|
|
|
|
|
I have an ms access db with many 'views' (queries) within the database that I want to use with ADO.NET but it seems I'm having to reinvent the wheel to use them the way i want.
Simplified example:
Lets say i have a query within Access
"Select FirstName, LastName, FirstName + ' ' + LastName as FullName FROM Customers"
Now I use that in a DataTable bound to a DataGrid -- When i enter (or edit) the FirstName and LastName and move to the next row it doesn't update the 'calculated field' FullName.
I know I can make a 'Calculated Column' and make it work but im trying not to have to write so much dang code and use what already works. Am I just missing somthing obvious? Is there a way to tell ADO that the field should calculate 'LIVE' using the sql, or do I have to insert into code every calculation done with the data as a calculated column?
|
|
|
|
|
OICU812 wrote:
When i enter (or edit) the FirstName and LastName and move to the next row it doesn't update the 'calculated field' FullName.
That's because it's not a calculated column. It's a 3rd column, called FullName, in a table returned by the Jet Engine, which did the "calculation." In order to see the changes with the code you've written, you'll have to write the FirstName and LastName fields back to the database and then refresh the dataset, thereby returning a new FullName column.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks for replying. Thats what I thought I would have to do. I just wanted to be sure there wasn't something more efficent that did that automatically.
|
|
|
|
|
I have written a routine to manipulate a large bitmap (actually it is a raster image of a map).
After loading the bitmap into memory I have used DrawImage() to zoom in and out and scroll the map in a picturebox.
However, the quality of the same bitmap in the picturebox is OK, but no where nere as good as the image displayed in the windows Picture and Fax viewer. Can anyone explain why? Does the windows viewer use GDI+ or perhaps DirectX. Is there a way of tweaking drawimage to get better results.
thanks in anticipation.
regards,
MP
|
|
|
|
|
Please note that I am a beginner VB.net programmer. Any help you can offer would be appreciated.
I am trying to sort a datatable loaded from an SQL db table. There are 2 sort keys, both ascending, and 9 other columns. The primary key, "PurchaseOrderID", can contain nulls, although it is usually a string of format "999999_999". After loading the ds, I use the following code to try to sort the records:
Dim myDataView As DataView
myDataView = ds.Tables("tPIA").DefaultView
myDataView.Sort = ("PurchaseOrderID, TimeNeeded")
The problem is I need the rows with null values in PurchaseOrderID to all sort to the high end. I know one can write a custom comparer to modify sort order but I haven't seen the syntax of how one can use a comparer with a dataview.
Can this be done? If so, what's the syntax?
If not, do you have any other suggestions? I originally loaded the SQL table into a Collection but there didn't seem to be a sort method available there. So I loaded the Collection into an array and wrote a custom comparer, but then I couldn't seem to sort on the 2 fields, as required.
Thank you,
mif
mif
|
|
|
|
|
Try this
MyDataView.Sort = "PurchaseOrderID, TimeNeeded ASC"
-or-
MyDataView.Sort = "PurchaseOrderID ASC, TimeNeeded ASC"
Use DESC for Descending
*EDIT*
I just tried it with a dataview containing null values and it sorts the null values to the top of list in my datagrid. I really don't see a problem with your code. I thought maybe the parentheses in your .sort code was the problem but it works either way.
|
|
|
|
|
Thank you for the help - however I am not getting the results expected. Although ASC is the deafult, I did add ASC to both sort keys:
myDataView.Sort = ("PurchaseOrderID ASC, TimeNeeded ASC")
Here is a sample of the output, where PurchaseOrderID is column(2) and TimeNeeded is column(9) on a 0 to 11 basis:
Row: 119
34028_1_1, 7/25/2005 12:00:00 AM, {unspecified}, , 12345-0003, 1, xxx, 0, , 7/25/2005 12:00:00 AM, M,
------------------------
Row: 120
33734_1_1, 9/11/2005 12:00:00 AM, {unspecified}, , 12346-0002, 1, xxx, 0, , 9/11/2005 12:00:00 AM, M,
------------------------
Row: 121
33597_1_1, 12/12/2012 12:00:00 AM, {unspecified}, , 12345-0001, 1, xxx, 0, , 12/12/2012 12:00:00 AM, M,
------------------------
Row: 122
33596_1_1, 12/12/2012 12:00:00 AM, {unspecified}, , 12345-0001, 1, xxx, 0, , 12/12/2012 12:00:00 AM, M,
------------------------
Row: 123
33596_1_2, 12/12/2012 12:00:00 AM, {unspecified}, , 12345-0001, 2, xxx, 0, , 12/12/2012 12:00:00 AM, M,
------------------------
Row: 124
33597_1_2, 12/12/2012 12:00:00 AM, {unspecified}, , 12344-0001, 2, xxx, 0, , 12/12/2012 12:00:00 AM, M,
------------------------
Row: 125
32798_1_1, 12/31/2029 12:00:00 AM, {unspecified}, , 1234-0003, 2, xxx, 0, , 12/31/2029 12:00:00 AM, M,
------------------------
Row: 126
32412_1_5, 12/31/2029 12:00:00 AM, {unspecified}, , 12345-0002, 3, xxx, 0, , 12/31/2029 12:00:00 AM, M,
------------------------
Row: 127
118121-000, 1/28/2005 12:00:00 AM, {unspecified}, 25, 12345-005, 9, xxx, 0, , 1/28/2005 12:00:00 AM, M,
------------------------
Row: 128
117604-101, 1/13/2005 12:00:00 AM, 147347_020, 540, 12345-1234-006, 1, {unspecified}, 0, 12/22/04, 1/18/2005 12:00:00 AM, P,
------------------------
Row: 129
117749-101, 2/3/2005 12:00:00 AM, 147347_021, 540, 12345-1234-006, 1, {unspecified}, 0, 12/22/04, 2/8/2005 12:00:00 AM, P,
------------------------
Row: 130
117941-101, 3/9/2005 12:00:00 AM, 150236_005, 105, 12345-001, 10500, {unspecified}, 0, 03/07/05, 1/19/2005 12:00:00 AM, M,
------------------------
Row: 131
118122-000, 1/26/2005 12:00:00 AM, {unspecified}, 20, 12345-004, 12, xxxx, 0, , 1/26/2005 12:00:00 AM, M,
------------------------
Row: 132
118110-000, 12/20/2004 12:00:00 AM, {unspecified}, 20, 12345-003, 5, xxxx, 0, , 12/9/2004 12:00:00 AM, M,
------------------------
Take a look at rows 126 and 127 - although PurchaseOrderID has been {unspecified} through this point, TimeNeeded has jumped backwards from 12/31/2029 to 1/28/2005. The watch has these colums delimited by "#"s so I have reason to believe that .net is indeed seeing the fields as dates and not strings.
Can you offer any other suggestions?
Thanks!
m
|
|
|
|
|
mfriedenthal wrote:
The watch has these colums delimited by "#"s so I have reason to believe that .net is indeed seeing the fields as dates and not strings.
Are you sure the data isn't being handled as a string? I made a quick table in ms access and it sorted it fine with the "TimeNeeded" column as a DATE/TIME but when i changed it to a string it basically returned results like you show. Double check the column data type:
Debug.WriteLine(MyDataSet.Tables("MyTable").Columns("TimeNeeded").DataType.ToString)
Do the same for your PurchaseOrderID column. Other than being the wrong datatype I can't understand why it doesn't work for you.
|
|
|
|
|
Thanks for the advice, but I did as you suggested and I got back:
System.DateTime
System.String
for TimeNeeded and PurchaseOrderID, respectively. Which is what I expected.
Still researching...
Any help would be appreciated.
Thanks!
|
|
|
|
|
I want to check wether the file is being used by some other application or software i want to do some task if that file is being used by some other application.
for ex. if a slideshow player is opening some jpg files and playing slide show
there is a file names kkk.jpg in sequence of the slideshow i want to check weather the file is accessed or not i will check before the slideshow begins
We are presenting a slideshow of our teachers at one photograph we want to play a specified music i want to use vb for this..
I will be thankful if any body helps me.....
|
|
|
|
|
Uhhh, why? PowerPoint can already play the music when a specific slide is shown. All you have to do is tell it which file to play...
Without writing a specific file system extension, you can't reliably monitor the file to see if it was opened by some other process. In order to get this to PARTIALLY work, you would have to constantly try and open the file exclusively, denying any shared access, just to see if the file was opened by some other process. If the file opens, no other process has it open. If it doesn't open, something else has it open. But, there are multiple problems with doing this:
1) You must try to open file, repeatedly, fast enough so that you don't miss the file being opened, read, and closed, in between your attempts to open the file. This will have the effect of degrading system performance and slowing down all other applications.
2) As explained in 1, you could easily miss a file being open, then closed.
3) If your monitor manages to open the file, you will automatically prevent any other app from opening that file. This will cause your presentation to stop or possibly crash altogether.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
How to make Display Blank Screen for a Specified Period in VB is there any function.
|
|
|
|
|
Why would you want to do this, considering your app has to play nice with others on a SHARED system?
If I was using your app and it blanked the entire screen, preventing me from using my other apps, I'd click close on your app then, promptly, uninstall it...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
i want to do some background process which should not display
kindly help me
|
|
|
|
|
Ramesh Yadavalli wrote:
i want to do some background process which should not display
There are all kind of thing you can do with a background process without anyone seeing it. But making the whole screen black sound like you're trying to make a prank or get fired from your job!
But it's really easy
<br />
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br />
Me.BackColor = Color.Black<br />
Me.FormBorderStyle = FormBorderStyle.None<br />
Me.WindowState = FormWindowState.Maximized<br />
End Sub<br />
|
|
|
|
|
Your background process doesn't have to have a form. Just write up a class that does what you want and launch it from whereever you need to as a seperate Thread. Just make sure you tag that thread Background = True .
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I download a program located at ftp://ftp.softcircuits.com/vbsrc/browse.zip and being a newbie, i failed to make the code work. i mean to make my code work with the program... the code is given below:
Private Sub Command1_Click()
Dim myfile
Dim i As Integer
For i = 1 To 999
myfile = Dir("C:\" & i & ".bmp")
If Not myfile = i & ".bmp" Then
fSaveGuiToFile ("C:\" & i & ".bmp")
Exit For
End If
Next i
End Sub
I would like the user to choose the path like the one at ftp://ftp.softcircuits.com/vbsrc/browse.zip but failed to integrate this code of mine to work with it. I dont want the file to be saved at C:\ but to the location the user specifies... could you please help me out. thanx
|
|
|
|
|