To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cad.devOpen lugnet.cad.dev in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / Development / 10434
  MPD file loading search order
 
Hello All, I'm implementing a LDraw file loader and was wondering about some details concerning mpd. I could not found enough info about this elsewhere, or I may overlooked it. [1] When loading a MPD file should I keep checking the first level of (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) --SNIP-- (...) Hi Roland, Try (URL) for the file specifications. Hopefully that should answer some queries. Tim (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) My apologies. I just looked there more closely and it doesn't seem to answer anything. To answer what I'm fairly sure of (but far from certain): I think that the correct lookup order is internal, ., [MODELS], [PARTS] Yes MPD files must have (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Tim pointed you at the actual MPD spec. You may notice that is is vague on a lot of points -- it basically leaves it up to the program authors. My comments below are what makes sense to me, thinking as someone who might create complex MPDs. (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
As you have pointed out, the spec is indeed ambiguous. Consequently, there's probably no correct answer as to how things should work. However, I can tell you what I do in LDView, so that you have an idea of how at least one MPD-compatible program (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev, FTX)
 
  Re: MPD file loading search order
 
Thanks Tim and Steve, I think I will go with Steve's advise to let only the main part in the mpd see the other parts in the mpd. This will give a much cleaner recursive approach, in which I can easily support sub mpd's. Further more I think I will (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) I mentioned in my other (long) post that I don't think that MPD files should be required to have a .mpd extension. However, I'd like to add more here in answer to your specific question. I could be wrong, but I'm almost positive that it is (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Snip, very thourho explanation, thanks! (...) I was thinking of doing the local scope approach mentioned by Steve. But maybe I keep it optional realizing I always end up disappointing some people with ether approach. I was planning to create (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) You can do it in one pass (if you don't count the loading of the file to a stringlist). Wile walking through the file you build you're objectlist with subparts. Afterwards you go recursively through the list of subparts. This way all mpd (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Is that what I said? I didn't mean to... If an MPD contains main.dat, a.dat, and b.dat, then a.dat should be able to 'see' b.dat. I make heavy use of the MPD format while working on part files. Inside a single MPD, I typically have long chains (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Sorry, you're right every part in the mpd should see any of the other parts. May be Ldraw.org should post a set of 'testcase' files to be used as a reference for programmers. For each file there should be a description of the expected results (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Well, if you read all postings on MPD through the last seven years you should be able to piece the correct answer together :-) I believe the L3 parser (used in L3P, L3Lab and "ldglite -l3") reflects that information. > However, I can tell (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) I actually consider that to be two-pass, and that's essentially what LDView does. The only extra thing it does is that it checks for 0 PART meta-commands in the first pass, and puts the file data for the sub-files into their own separate (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) You're welcome. (...) I think local scope is the "correct" thing to do as long as local scope means that only files inside an MPD file can access other files inside the MDP file. Files stored external to the MPD shouldn't, in theory, be able (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Wow, that's impressive. I'm pretty sure it's accidental, too. (Accidental on my part; your L3P parser was obviously there first.) (...) LDView only has one file open at a time also (unless I'm mis-remembering my implementation), since the (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) You're right, but Jacob invented the MPD, so I guess I just followed his wish, though I would have preferred the scoping. Also he suggests a way to get scoping anyway: "0 FILE house1/house1.dat" which nicely reflects the storage on the disk. (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) It seems to me that an MPD is functionally equal to a disk folder which has been added to the (beginning of the) search path for parts. No more, no less. If a part is found in the search path it is used, if it is not found it is ignored (with (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) What about the following algorithm (assuming everything is cached): - whenever a file reference is read, search for the file in the cache. if not found, add it as an empty file and flag it as 'incomplete' - whenever a 'file' is seen, search (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) That is a two pass algorithm. It's optimised by only searching files that have already appeared but the search in stage II is a second pass. Tim (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) This is actually very logical. And it fits in the description from the 2000 post pointed to by Lars. So all objects in the mpd are available for recursive children of the main part, being the first place to search. (...) I don't think stuff in (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
Lars C. Hassing wrote: [snip detailed explanation] Thanks for the insight of you're L3P ldraw reader routines. (...) If you mean by public, public to all children and not the whole world, this fits perfectly in Anders Isaksson vision. See my reply (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Thanks for the pointers, I'm working with Delphi 2005 Pro win32 at the moment (LD4DModeler was written in Delphi 6 Pro). So I can't use you're library. But I will certainly take a look at it. I sometimes write stuff in C++, but for a living (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Is Delphi 2005 Delphi (Pascal) only? I've got BDS2006 at work and that contains both Delphi and C++ and C#. Going .NET would make it easy (?) to use a C++ library from Delphi, I think. (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Actually I can't get my head around 'searching for a file in the cache' as equivalent to 'do a second pass of the source file'. Every part is searched for in the cache. Each source line is only read and parsed once. What am I not (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Delphi 2005 (9) is part of Borland Developer Studio (BDS) 2005. It also contains C# Builder and Delphi for .net compilers. But I mainly use Delphi for win 32 development. Since BDS 2006 C++ Builder is also included in the suite. But I decided (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Don't know about that, source-wise (all my work projects are still Delphi, Win32 only). In .NET you definitely don't have to care about the language an assembly was written in, you just use it. (...) If that is your work development system, I (...) (18 years ago, 27-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) I suspect there's two definitions of "pass" at work here. I would consider a two pass algorithm to be anything requiring two loops (which we must have either way as their is no reference order specified in MPDs). Another way of considering it (...) (18 years ago, 27-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) Probably. As I was reading the thread it was *loading* the MPD file that was considered two-pass, and my algorithm is definitely only one-pass for that (and no extra fixups after reading it all). OTOH, if the file should be rendered on screen (...) (18 years ago, 27-Jul-06, to lugnet.cad.dev)
 
  Re: MPD file loading search order
 
(...) It's my work system, but I rarely use 2005. Most of my customer projects demand use of Delphi 6 Pro. Because that's what the customer itself owns. I maintain their code so I have to use their tools. Because of this I don't justify spending (...) (18 years ago, 27-Jul-06, to lugnet.cad.dev)

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR