LDraw.org Discussion Forums
LDFind 1.3.4.0 - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: LDraw Programs (https://forums.ldraw.org/forum-7.html)
+--- Forum: All Other Programs. (https://forums.ldraw.org/forum-26.html)
+--- Thread: LDFind 1.3.4.0 (/thread-10132.html)



LDFind 1.3.4.0 - Michael Heidemann - 2013-10-05

I just released the new version 1.3.4.0 of LDFind.

Now the new folder /p/8 is also scanned.

Now you can specify an application of your choice and open a file from the listbox by right-click in that application.

LDFind can be downloaded from http://ldraw.heidemann.org/index.php?page=ldfind


Re: LDFind 1.3.4.0 - Michael Heidemann - 2013-10-06

I just discovered a tiny bug.
If you use LDFind with parts.xml then the preview of the header data will miss the username in the history entries.
I have already fixed this but I think this is not worth a new version.

If someone really needs this, please leave your comment here and i will release a bugfix shortly.


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-02

After a clean installation on Windows 7 x64, LDFind shows a "Viewer could not build the file" message when started. Second, none of the options e.g. "paths" are saved if i don't choose "run as Administrator".
Maybe you can give me a hint how to see the preview images?
Thanks!


Re: LDFind 1.3.4.0 - Philippe Hurbain - 2014-01-02

I guess this is once again an UAC issue... LDFind works great for me on the same system, but then it is installed in C:\LDraw\Apps\LDFind, not in Program files folder...


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-02

Thanks Philo for answering that question.

But I'll have a look at the code. I am running on Win8-64bit so it should be nearly the same and I also do _not_ like to run all applications as admin Smile

Edit:
I have copied my version in "C:\Program Files (x86)\LDraw\LDFind\LDFind.exe" and all runs fine.
As the dll for the viewer isn't ready for 64bit you need to put all the files in the x86 folder.


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-02

Thank you for your replies. The problem with not saving the paths is gone... to be exact, i think i didn't hit the "save" button. After clearing the LocalAppData folder, it works fine.

But i am still not able to get the preview to work. I moved the LDFind folder from C:\LDraw\Tools\LDFind to C:\Program Files (x86)\LDFind, but nothing changes. If i rename the LDVLib.dll, i get an exception error message, so the application is definitively using it.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-02

Are you using the .NET enviroment or the MONO Enviroment ? I guess .NET, but I have to ask.

Also, do you have LDView installed on your system? Works that on your machine ?


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-02

I have MS .Net 4.5.1 installed. LDView v4.2 Beta 1 works fine, but i use the x64 version.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-02

Hmmm..
At present I do not know what happen. I remember that there where some issue with UAC on one of my apps. But I think it wasn't LDFind.
I have to search in the Forum for this. May take a while...


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-02

It might be that I build LDFind with the option - for all systems.
That would start LDFind as 64bit application. But the dll is still only valid for 32 bit applications.

Do you get any other message, or only that the viewer could not be inizialised?

Please do me a favour and download also LDStructure or DATHeader. Both working with the same dll and with the same code. If none of that tools shows something then it could be difficult.


Re: LDFind 1.3.4.0 - Philippe Hurbain - 2014-01-02

If it was a Win7 64 bits issue, I would have the same problem I guess?


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-02

Yes, you are right. But I have at present no other idea.

I am personally also using Win8-64bit, so I really do not know what happen there Sad .


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-02

No other Messages, only "Viewer could not build the file.".
When i run LDStructure, the same message appears twice. DATHeader doesn't show any message, and in the preview pane nothing is displayed either. Only if i check the "use internal viewer" option, DATHeader shows a preview. I tested with the most recent versions.

My UAC slider is at the default level position. In the taskmanager, LDFind.exe is marked as an 32bit process, so there should not be an issue with the dll architecture...
Do i have to do a separate installation of MS .Net Version xyz? In the software list, only 4.5.1 is displayed. The Framework folders (Framework & Framework64) contain the versions 1.0, 1.1, 2.0, 3.0, 3.5, 4.0, but they are only the integrated installations of the 4.5 framework.

Thank you for your efforts!


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-03

Ok, that gives us some hints.

LDStructure and LDFind uses exact the same code for the viewer initialization. DATHeader might be different because that was the first application where I used ldvlib.dll.

DATHeader:
To have DATHeader show the model in the viewer tab you need to have in the options the "use internal viewer" enabled.
So this application runs on your system without any problem.

But what is different?

I look into the code of both (LDStructure and LDFind) and there I see what might happen. Not the initialization fails (therefore DATHeader works good), but the model send to the viewer is empty file.

In my current code for LDFind I have only an outcommented line with the wording you wrote. So I guess that these errors just only at the first beginning if the applications do not have really data to show Smile. Bad behaviour, indeed, but you should be able to see all like I intented if you let LDFind build the database and then click on the right side in the listbox an item. I expect the picture to appear immediately on the left. - hopefully


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-03

I tested this, but no part is displayed on the left. All i see is the background color from the options. And for some reason LDFind now asks me to build the search database at every application startup?


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-03

Ok, that needs to be cleared as well.
I'll investigate at least for the update issue and hopefully the other problem will be solved then.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-03

I just uploaded a new version 1.3.5.0 of LDFind.
Hopefully this will fix your issues.
I did not yet delete all related files on my system, so it might be still some issues - but i do not expect that Smile

Edit:
I just also did that (deleted files in the folder "C:\Users\yourname\AppData\Local\Michael Heidemann\LDFind\1.0.0.0").
I took the just upload file and expanded it on the desktop. Doubleclick on the LDFind.exe and it starts perfectly.
Hopefully also on your end.


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-03

Ok the viewer error message doesn't appear anymore. The forced database update dialog is gone too. But nothing displayed within the preview area... Sad
What is wrong with my system??


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-03

That is really curious.

I try to put all together.
1) you have already the ldraw library on your system
2) For LDFind - you have in the options dialog the path to your ldraw base folder
3) After starting LDFind you have all part listed in the listbox on the right side.
4) If you click on an item in the listbox - nothing is shown in the picturecontrol

Please let me have to all that questions your answer. Thanks and sorry for all the trouble (if it is based on LDFind). Smile


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-03

Quote:1) you have already the ldraw library on your system
yes, the library root is C:\LDraw\Lib\ldraw

Quote:2) For LDFind - you have in the options dialog the path to your ldraw base folder
yes, it is set to above folder.

Quote:3) After starting LDFind you have all part listed in the listbox on the right side.
yes, the parts appear in the listbox. i can search for parts, too.

Quote:4) If you click on an item in the listbox - nothing is shown in the picturecontrol
yes, nothing is shown except background bolor.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-03

Maybe someone else has a clue what is going on here:

The sourcecode of the show is like follow:
Code:
Private Sub ShowPartInPreviewLDV(ByVal file As String, ByRef handle As IntPtr)
        Try

            If PPviewerOn Then
                Me.UserStatusInfo.Text = "Load for viewing: " & file
                Me.Cursor = Cursors.WaitCursor
                Application.DoEvents()
                PPviewer.LoadModel(file)
                PPviewer.Update()
                Me.UserStatusInfo.Text = ""
                Me.Cursor = Cursors.Default
                Application.DoEvents()
            Else
                If IsNothing(PPviewer) Then
                    PPviewer = New XMPD.LDView.Viewer
                End If

                If PPviewer.Init(handle) Then
                    PPviewerOn = True
                    With PPviewer
                        '.BackgroundRGB = System.Drawing.Color.White
                        .BackgroundRGB = ViewerBackgroundColor
                        .SetDefaultRGB(Me.ViewerDefaultColor.R, Me.ViewerDefaultColor.G, Me.ViewerDefaultColor.B, False)
                        .BFC = False
                        .BlackEdges = False
                        .BlueNeutralFaces = False
                        .BoundingBoxesOnly = False
                        .DrawWireframe = False
                        .EdgesOnly = False
                        .EnableInput = True
                        .Lighting = True
                        .LineSmoothing = True
                        .LowQualityStuds = False
                        .ShowsConditionalEdges = True
                        .SubduedLighting = True
                        .FOV = 10
                        .SeamWidth = 0
                        .CheckPartsTracker = False
                        .PrimitiveSubstitution = True
                        .ShowsEdges = True
                    End With
                    Me.UserStatusInfo.Text = "Load viewer"
                    Me.Cursor = Cursors.WaitCursor
                    Application.DoEvents()
                    If Not PPviewer.LoadModel(file) = True Then
                        'MessageBox.Show("Viewer could not build the file.")
                    End If
                    Me.UserStatusInfo.Text = ""
                    Me.Cursor = Cursors.Default
                    Application.DoEvents()
                Else
                    MessageBox.Show("Viewer could not be initialized.")
                    PPviewerOn = False
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace & vbCrLf & ex.Source, "Error in ShowPartInPreview", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
        End Try
    End Sub

As you can see, I have disabled the previous error message:
Code:
If Not PPviewer.LoadModel(file) = True Then
                        'MessageBox.Show("Viewer could not build the file.")
                    End If
But the code can only be reached if the PPviewer.Init has been successful. So I think that it is out of my scope to help at this point as it seems to me ldvlib.dll related.
On the other hand DATHeader works!

That section looks like this:
Code:
If gboolViewerReady = True Then
                            Me.ToolStripStatusLabel1.Text = "Loading picture ..."
                            Me.Cursor = Cursors.WaitCursor
                            Application.DoEvents()

                            gLDViewer.LoadModel(gstrFileName)

                            Me.Cursor = Cursors.Default
                            Me.ToolStripStatusLabel1.Text = ""
                            Application.DoEvents()
                        Else
                            gLDViewer = Nothing
                            XMPD.LDView.Viewer.SetLDrawDir(XMPD.xmpd_LdrawBasePath)
                            XMPD.LDView.Viewer.SetRegistryApplicationName(gLDViewerApplication)
                            gLDViewer = New XMPD.LDView.Viewer
                            If gLDViewer.Init(Me.PanViewer.Handle) = True Then
                                'Default values set
                                gboolViewerReady = True
                                gLDViewer.BackgroundRGB = System.Drawing.Color.FromArgb(gLDViewerBackgroundColor)
                                gLDViewer.BFC = Me.mnuBFCToolStripMenuItem.Checked
                                gLDViewer.BlueNeutralFaces = Me.mnuShowBlueUndeterminedToolStripMenuItem.Checked
                                gLDViewer.GreenFrontFaces = Me.mnuShowGreenFrontfacesToolStripMenuItem.Checked
                                gLDViewer.RedBackFaces = Me.mnuShowRedBackfacesToolStripMenuItem.Checked
                                gLDViewer.RandomColors = Me.mnuRandomColorsToolStripMenuItem.Checked
                                gLDViewer.CheckPartsTracker = Me.mnuCheckPartsTrackerToolStripMenuItem.Checked
                                gLDViewer.LowQualityStuds = False
                                gLDViewer.PrimitiveSubstitution = Me.mnuPrimitiveSubstitutionToolStripMenuItem.Checked
                                gLDViewer.ShowsAxes = Me.mnuShowAxesToolStripMenuItem.Checked
                                gLDViewer.ShowsConditionalEdges = Me.mnuShowCondEdgelinesToolStripMenuItem.Checked
                                gLDViewer.ShowAllConditionalEdges = Me.mnuShowAllCondEdgelinesToolStripMenuItem.Checked
                                gLDViewer.ShowsEdges = Me.mnuShowEdgelinesToolStripMenuItem.Checked
                                gLDViewer.BlackEdges = Me.mnuAlwaysBlackEdgesToolStripMenuItem.Checked
                                gLDViewer.EdgesOnly = Me.mnuShowOnlyEdgelinesToolStripMenuItem.Checked
                                gLDViewer.TextureStuds = Me.mnuLogoOnStudsToolStripMenuItem.Checked
                                gLDViewer.DrawWireframe = Me.mnuWireframeToolStripMenuItem.Checked
                                gLDViewer.RemoveHiddenLines = Me.mnuRemoveHiddenLinesToolStripMenuItem.Checked
                                gLDViewer.WireframeFog = Me.mnuFogToolStripMenuItem.Checked
                                gLDViewer.Lighting = Me.mnuLightningToolStripMenuItem.Checked
                                gLDViewer.UsesSpecular = Me.mnuSpecularHighlightToolStripMenuItem.Checked
                                gLDViewer.SubduedLighting = Me.mnuSubduedLightningToolStripMenuItem.Checked
                                gLDViewer.LineSmoothing = Me.mnuLineSmoothingToolStripMenuItem.Checked
                                gLDViewer.BoundingBoxesOnly = Me.mnuBoundingBoxesToolStripMenuItem.Checked
                                gLDViewer.Texmaps = Me.mnuTextureMapsToolStripMenuItem.Checked
                                'gLDViewer.TextureFilterType = Viewer.LDVTextureFilterType.LDVTFTTrilinear
                                gLDViewer.FOV = 10
                                gLDViewer.SeamWidth = 0

                                Me.ToolStripStatusLabel1.Text = "Loading picture ..."
                                Me.Cursor = Cursors.WaitCursor
                                Application.DoEvents()

                                gLDViewer.LoadModel(gstrFileName)

                                Me.Cursor = Cursors.Default
                                Me.ToolStripStatusLabel1.Text = ""
                                Application.DoEvents()
                            Else
                                gboolViewerReady = False
                            End If
                        End If

Any ideas on how to catch where the real problem is?? I am looking for your help. If a special build is needed - no problem.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-12

Did you already fixed the problem on your end?

If yes - what problem you had? and how did you solve it?

Only with your answer this can be a useful thread for future readers. Smile


Re: LDFind 1.3.4.0 - Christian Neumann - 2014-01-13

Michael Heidemann Wrote:Did you already fixed the problem on your end?

If yes - what problem you had? and how did you solve it?

No, unfortunately i wasn't able to solve the problem by myself. I don't really understand the sourcecode, so i use the tools, but without preview.

Btw, is there an easy way to search for a specific part number with LDFind?


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-13

With the missing preview is really strange. It makes me wonder why DATHeader is running but not the other tools.

Regarding your search for a part by part number in LDFind I wonder why you are using LDFind, if you know the number.
But it is correct, currently you can not search for the part number in LDFind.


Re: LDFind 1.3.4.0 - Philippe Hurbain - 2014-01-13

Quote:Regarding your search for a part by part number in LDFind I wonder why you are using LDFind, if you know the number.
...I do use a lot LDFind with more or less complete part number to find related parts.
Quote:But it is correct, currently you can not search for the part number in LDFind.
Yes you can, since file name, hence part number is in header Wink
The trick is to either use complete file name ("3005.dat") which, as suggested by Mike, is of limited interest, or to use wildcards: "3005*" returns all patterned versions of 1x1 brick (and also 30055/30056 parts). Note that to get subparts you need to either type in the s\ prefix, or look for "*3005*". Speaking of this, if you start typing "*", LDfind temporarily fills the find box with all files, and this takes quite a bit of time. Better type in 3005*, then hit home key to go to field beginning and type the first "*".


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-13

Philo, I am using LDFind 1.3.5.0 and these options for the part number search isn't there anymore. I also thought that this should be possible, searching for 3005* _only_ returns the patterened parts. You will _not_ find 3005.dat.

I think I need to have a look into the code why this has changed Sad


Re: LDFind 1.3.4.0 - Philippe Hurbain - 2014-01-13

???
[Image: ldfind1.3.5.jpg]


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-13

That is now very strange!!! Sad

What is going on here?

In the option I have added the pathes to the unofficial folders and i have checked all "Add for seach" (there is a typo) possibilities (there are six). I do _not_ use parts.xml.

Is it the same on your end?


Re: LDFind 1.3.4.0 - Philippe Hurbain - 2014-01-13

Almost, I have only keywords/description/category checked, and no parts.xml


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-13

Maybe i found the problem. Just doing some tests. Seems that I made this while improving LDFind Smile
I'll keep you updated.

Just finished test - yes the error is gone - and it was an error!!

I am going to upload 1.3.5.1 within the next minutes.


Re: LDFind 1.3.4.0 - Michael Heidemann - 2014-01-13

New version is online. Please see: http://forums.ldraw.org/showthread.php?tid=12035

I recommend to download the bugfix version. Maybe this also solves the problem with the preview - hopefully.