Generate MPD with all dependency parts


Generate MPD with all dependency parts
#1
Hi guys,

I'm totally new and very fascinated by ldraw. Smile Smile
I'm a software engineer and would like to view custom created models using this software: https://github.com/EvanBacon/Lego-Expo
Here is an online demo of the viewer: https://ldr.netlify.app/
The tools read MPD files. Example files can be found here: https://github.com/EvanBacon/Lego-Expo/t...ary/models

My understanding is that the files have to contain the declaration of all parts used in the model. No external references are allowed.

As a test, I would like to use a simple baseplate and view it using Lego-Expo. I found this baseplate: https://www.ldraw.org/parts/official-par...artid=4186

Is there a way to generate an MPD file with all the referenced parts based on a DAT-file (like the parts/4186.dat) ?

I couldn't found such a tool.  Undecided
Thanks for your help!

Cheers,
Bernhard
Reply
RE: Generate MPD with all dependency parts
#2
Hi Bernhard,
First welcome here!
Not a simple problem... and what doesn't help either is that the demo viewer https://ldr.netlify.app/ doesn't seem to work fine. Apart from preloaded X-wing, all files I tried (including the MPDs from github folder) stay stuck loading at 0%! Forget that, I goofed when retrieving files, it works . Still searching a method!
Reply
RE: Generate MPD with all dependency parts
#3
(2020-12-20, 16:56)Philippe Hurbain Wrote: Hi Bernhard,
First welcome here!
Not a simple problem... and what doesn't help either is that the demo viewer https://ldr.netlify.app/ doesn't seem to work fine. Apart from preloaded X-wing, all files I tried (including the MPDs from github folder) stay stuck loading at 0%! Forget that, I goofed when retrieving files, it works . Still searching a method!

Hi Philippe,

I wrote now following python script (main.py).
Code:
import re import sys import os.path from pathlib import Path import requests class DatFile:     def __init__(self, name):         self.name = name         self.cacheDirectory = 'files'         Path(self.cacheDirectory).mkdir(parents=True, exist_ok=True)     def getDependencies(self):         dependencies = {}         content = self.getContent()         matches = re.finditer(r"([^ ]*\.dat$)", content, re.MULTILINE)         for matchNum, match in enumerate(matches, start=1):             for groupNum in range(0, len(match.groups())):                 dependency = match.group(groupNum)                 if dependency not in dependencies:                     dependencies[dependency] = DatFile(dependency)         return dependencies     def getName(self):         return self.name     def getContent(self):         if not self.isCached():             self.writeToDisc(self.downloadFile())         return self.readFromDisc()     def getContentAsRoot(self):         content = self.getContent()         return content.replace("0 !LDRAW_ORG Part", "0 !LDRAW_ORG Configuration")     def isCached(self):         return os.path.isfile(self.getCacheFileName())     def getCacheFileName(self):         return f"{self.cacheDirectory}/{self.name}"     def readFromDisc(self):         with open(self.getCacheFileName(), 'r') as file:             content = file.read()         return content     def writeToDisc(self, content):         with open(self.getCacheFileName(), 'w', encoding='utf-8', newline='') as file:             file.write(content)             file.flush()     def downloadFile(self):         urls= [ f"https://www.ldraw.org/library/official/p/{self.name}", f"https://www.ldraw.org/library/official/parts/{self.name}" ]         for url in urls:             req = requests.get(url)             if req.status_code == 200:                 return req.text         raise Exception(f"File not Found: {self.name}") def startParsing(name, headefile):     rootFile = DatFile(name)     print(rootFile.getContentAsRoot())     print(readHeaderFile(headefile))     print("0")     print("")     visitDependencies({}, DatFile(name)) def readHeaderFile(headerfile):     with open(headerfile, 'r') as file:         content = file.read()     return content def visitDependencies(visitedFiles, datFile):     filename = datFile.getName()     dependencies = datFile.getDependencies()     visitedFiles[filename] = True     for dependencyFilename in dependencies:         if not dependencyFilename in visitedFiles:             dependencyFile = dependencies[dependencyFilename]             print(f"0 FILE {dependencyFilename}")             print(dependencyFile.getContent())             print("0")             print("")             visitDependencies(visitedFiles, dependencyFile) # Press the green button in the gutter to run the script. if __name__ == '__main__':     filename = sys.argv[1]     headerfile = sys.argv[2]     startParsing(filename, headerfile)

Under Windows, I use it (createMPD.bat):
Code:
@echo off set PYTHON_HOME=D:\media\infrastruktur\apps\python set FILE=%1 %PYTHON_HOME%\python main.py %FILE% header.mpd > %FILE%.mpd

The header.mpd contains the COLOUR definitions, like (header.mpd):
Code:
0 // LDraw Solid Colours 0                              // LEGOID  26 - Black 0 !COLOUR Black                                                CODE  0  VALUE #05131D  EDGE #595959 0                              // LEGOID  23 - Bright Blue 0 !COLOUR Blue                                                  CODE  1  VALUE #0055BF  EDGE #333333 0                              // LEGOID  28 - Dark Green 0 !COLOUR Green                                                CODE  2  VALUE #257A3E  EDGE #333333 0                              // LEGOID 107 - Bright Bluish Green 0 !COLOUR Dark_Turquoise                                        CODE  3  VALUE #00838F  EDGE #333333 0                              // LEGOID  21 - Bright Red 0 !COLOUR Red                                                  CODE  4  VALUE #C91A09  EDGE #333333 0                              // LEGOID 221 - Bright Purple 0 !COLOUR Dark_Pink                                            CODE  5  VALUE #C870A0  EDGE #333333 0                              // LEGOID 217 - Brown 0 !COLOUR Brown                                                CODE  6  VALUE #583927  EDGE #1E1E1E 0                              // LEGOID  2 - Grey 0 !COLOUR Light_Grey                                            CODE  7  VALUE #9BA19D  EDGE #333333 0                              // LEGOID  27 - Dark Grey 0 !COLOUR Dark_Grey                                            CODE  8  VALUE #6D6E5C  EDGE #333333 0                              // LEGOID  45 - Light Blue 0 !COLOUR Light_Blue                                            CODE  9  VALUE #B4D2E3  EDGE #333333 0                              // LEGOID  37 - Bright Green 0 !COLOUR Bright_Green                                          CODE  10  VALUE #4B9F4A  EDGE #333333 0                              // LEGOID 116 - Medium Bluish Green 0 !COLOUR Light_Turquoise                                      CODE  11  VALUE #55A5AF  EDGE #333333 0                              // LEGOID  4 - Brick Red 0 !COLOUR Salmon                                                CODE  12  VALUE #F2705E  EDGE #333333 0                              // LEGOID  9 - Light Reddish Violet 0 !COLOUR Pink                                                  CODE  13  VALUE #FC97AC  EDGE #333333 0                              // LEGOID  24 - Bright Yellow 0 !COLOUR Yellow                                                CODE  14  VALUE #F2CD37  EDGE #333333 0                              // LEGOID  1 - White 0 !COLOUR White                                                CODE  15  VALUE #FFFFFF  EDGE #333333 0                              // LEGOID  6 - Light Green 0 !COLOUR Light_Green                                          CODE  17  VALUE #C2DAB8  EDGE #333333 0                              // LEGOID  3 - Light Yellow 0 !COLOUR Light_Yellow                                          CODE  18  VALUE #FBE696  EDGE #333333 0                              // LEGOID  5 - Brick Yellow 0 !COLOUR Tan                                                  CODE  19  VALUE #E4CD9E  EDGE #333333 0                              // LEGOID  39 - Light Bluish Violet 0 !COLOUR Light_Violet                                          CODE  20  VALUE #C9CAE2  EDGE #333333 0                              // LEGOID 104 - Bright Violet 0 !COLOUR Purple                                                CODE  22  VALUE #81007B  EDGE #333333 0                              // LEGOID 196 - Dark Royal Blue 0 !COLOUR Dark_Blue_Violet                                      CODE  23  VALUE #2032B0  EDGE #1E1E1E 0                              // LEGOID 106 - Bright Orange 0 !COLOUR Orange                                                CODE  25  VALUE #FE8A18  EDGE #333333 0                              // LEGOID 124 - Bright Reddish Violet 0 !COLOUR Magenta                                              CODE  26  VALUE #923978  EDGE #333333 0                              // LEGOID 119 - Bright Yellowish Green 0 !COLOUR Lime                                                  CODE  27  VALUE #BBE90B  EDGE #333333 0                              // LEGOID 138 - Sand Yellow 0 !COLOUR Dark_Tan                                              CODE  28  VALUE #958A73  EDGE #333333 0                              // LEGOID 222 - Light Purple 0 !COLOUR Bright_Pink                                          CODE  29  VALUE #E4ADC8  EDGE #333333 0                              // LEGOID 324 - Medium Lavender 0 !COLOUR Medium_Lavender                                      CODE  30  VALUE #AC78BA  EDGE #333333 0                              // LEGOID 325 - Lavender 0 !COLOUR Lavender                                              CODE  31  VALUE #E1D5ED  EDGE #333333 0                              // LEGOID  36 - Light Yellowish Orange 0 !COLOUR Very_Light_Orange                                    CODE  68  VALUE #F3CF9B  EDGE #333333 0                              // LEGOID 198 - Bright Reddish Lilac 0 !COLOUR Bright_Reddish_Lilac                                  CODE  69  VALUE #CD6298  EDGE #333333 0                              // LEGOID 192 - Reddish Brown 0 !COLOUR Reddish_Brown                                        CODE  70  VALUE #582A12  EDGE #595959 0                              // LEGOID 194 - Medium Stone Grey 0 !COLOUR Light_Bluish_Grey                                    CODE  71  VALUE #A0A5A9  EDGE #333333 0                              // LEGOID 199 - Dark Stone Grey 0 !COLOUR Dark_Bluish_Grey                                      CODE  72  VALUE #6C6E68  EDGE #333333 0                              // LEGOID 102 - Medium Blue 0 !COLOUR Medium_Blue                                          CODE  73  VALUE #5C9DD1  EDGE #333333 0                              // LEGOID  29 - Medium Green 0 !COLOUR Medium_Green                                          CODE  74  VALUE #73DCA1  EDGE #333333 0                              // LEGOID 223 - Light Pink 0 !COLOUR Light_Pink                                            CODE  77  VALUE #FECCCF  EDGE #333333 0                              // LEGOID 283 - Light Nougat 0 !COLOUR Light_Flesh                                          CODE  78  VALUE #F6D7B3  EDGE #333333 0                              // LEGOID  38 - Dark Orange 0 !COLOUR Medium_Dark_Flesh                                    CODE  84  VALUE #CC702A  EDGE #333333 0                              // LEGOID 268 - Medium Lilac 0 !COLOUR Medium_Lilac                                          CODE  85  VALUE #3F3691  EDGE #1E1E1E 0                              // LEGOID 312 - Medium Nougat 0 !COLOUR Dark_Flesh                                            CODE  86  VALUE #7C503A  EDGE #333333 0                              // LEGOID 195 - Medium Royal Blue 0 !COLOUR Blue_Violet                                          CODE  89  VALUE #4C61DB  EDGE #333333 0                              // LEGOID  18 - Nougat 0 !COLOUR Flesh                                                CODE  92  VALUE #D09168  EDGE #333333 0                              // LEGOID 100 - Light Red 0 !COLOUR Light_Salmon                                          CODE 100  VALUE #FEBABD  EDGE #333333 0                              // LEGOID 110 - Bright Bluish Violet 0 !COLOUR Violet                                                CODE 110  VALUE #4354A3  EDGE #333333 0                              // LEGOID 112 - Medium Bluish Violet 0 !COLOUR Medium_Violet                                        CODE 112  VALUE #6874CA  EDGE #333333 0                              // LEGOID 115 - Medium Yellowish Green 0 !COLOUR Medium_Lime                                          CODE 115  VALUE #C7D23C  EDGE #333333 0                              // LEGOID 118 - Light Bluish Green 0 !COLOUR Aqua                                                  CODE 118  VALUE #B3D7D1  EDGE #333333 0                              // LEGOID 120 - Light Yellowish Green 0 !COLOUR Light_Lime                                            CODE 120  VALUE #D9E4A7  EDGE #333333 0                              // LEGOID 125 - Light Orange 0 !COLOUR Light_Orange                                          CODE 125  VALUE #F9BA61  EDGE #333333 0                              // LEGOID 208 - Light Stone Grey 0 !COLOUR Very_Light_Bluish_Grey                                CODE 151  VALUE #E6E3E0  EDGE #333333 0                              // LEGOID 191 - Flame Yellowish Orange 0 !COLOUR Bright_Light_Orange                                  CODE 191  VALUE #F8BB3D  EDGE #333333 0                              // LEGOID 212 - Light Royal Blue 0 !COLOUR Bright_Light_Blue                                    CODE 212  VALUE #86C1E1  EDGE #333333 0                              // LEGOID 216 - Rust 0 !COLOUR Rust                                                  CODE 216  VALUE #B31004  EDGE #333333 0                              // LEGOID 226 - Cool Yellow 0 !COLOUR Bright_Light_Yellow                                  CODE 226  VALUE #FFF03A  EDGE #333333 0                              // LEGOID 232 - Dove Blue 0 !COLOUR Sky_Blue                                              CODE 232  VALUE #56BED6  EDGE #333333 0                              // LEGOID 140 - Earth Blue 0 !COLOUR Dark_Blue                                            CODE 272  VALUE #0D325B  EDGE #1E1E1E 0                              // LEGOID 141 - Earth Green 0 !COLOUR Dark_Green                                            CODE 288  VALUE #184632  EDGE #595959 0                              // LEGOID 308 - Dark Brown 0 !COLOUR Dark_Brown                                            CODE 308  VALUE #352100  EDGE #595959 0                              // LEGOID  11 - Pastel Blue 0 !COLOUR Maersk_Blue                                          CODE 313  VALUE #54A9C8  EDGE #333333 0                              // LEGOID 154 - New Dark Red 0 !COLOUR Dark_Red                                              CODE 320  VALUE #720E0F  EDGE #333333 0                              // LEGOID 321 - Dark Azur 0 !COLOUR Dark_Azure                                            CODE 321  VALUE #1498D7  EDGE #333333 0                              // LEGOID 322 - Medium Azur 0 !COLOUR Medium_Azure                                          CODE 322  VALUE #3EC2DD  EDGE #333333 0                              // LEGOID 323 - Aqua 0 !COLOUR Light_Aqua                                            CODE 323  VALUE #BDDCD8  EDGE #333333 0                              // LEGOID 326 - Spring Yellowish Green 0 !COLOUR Yellowish_Green                                      CODE 326  VALUE #DFEEA5  EDGE #333333 0                              // LEGOID 330 - Olive Green 0 !COLOUR Olive_Green                                          CODE 330  VALUE #9B9A5A  EDGE #333333 0                              // LEGOID 153 - Sand Red 0 !COLOUR Sand_Red                                              CODE 335  VALUE #D67572  EDGE #333333 0                              // LEGOID  22 - Medium Reddish Violet 0 !COLOUR Medium_Dark_Pink                                      CODE 351  VALUE #F785B1  EDGE #333333 0                              // LEGOID  25 - Earth Orange 0 !COLOUR Earth_Orange                                          CODE 366  VALUE #FA9C1C  EDGE #333333 0                              // LEGOID 136 - Sand Violet 0 !COLOUR Sand_Purple                                          CODE 373  VALUE #845E84  EDGE #333333 0                              // LEGOID 151 - Sand Green 0 !COLOUR Sand_Green                                            CODE 378  VALUE #A0BCAC  EDGE #333333 0                              // LEGOID 135 - Sand Blue 0 !COLOUR Sand_Blue                                            CODE 379  VALUE #597184  EDGE #333333 0                              // LEGOID  12 - Light Orange Brown 0 !COLOUR Fabuland_Brown                                        CODE 450  VALUE #B67B50  EDGE #333333 0                              // LEGOID 105 - Bright Yellowish Orange 0 !COLOUR Medium_Orange                                        CODE 462  VALUE #FFA70B  EDGE #333333 0                              // LEGOID  38 - Dark Orange 0 !COLOUR Dark_Orange                                          CODE 484  VALUE #A95500  EDGE #333333 0                              // LEGOID 103 - Light Grey 0 !COLOUR Very_Light_Grey                                      CODE 503  VALUE #E6E3DA  EDGE #333333 0                              // LEGOID 218 - Reddish Lilac 0 !COLOUR Reddish_Lilac                                        CODE 218  VALUE #8E5597  EDGE #333333 0                              // LEGOID 295 - Flamingo Pink 0 !COLOUR Flamingo_Pink                                        CODE 295  VALUE #FF94C2  EDGE #333333 0                              // LEGOID 219 - Lilac 0 !COLOUR Lilac                                                CODE 219  VALUE #564E9D  EDGE #333333 0                              // LEGOID 128 - Dark Nougat 0 !COLOUR Dark_Nougat                                          CODE 128  VALUE #AD6140  EDGE #333333 0 // LDraw Transparent Colours 0                              // LEGOID  40 - Transparent 0 !COLOUR Trans_Clear                                          CODE  47  VALUE #FCFCFC  EDGE #C3C3C3  ALPHA 128 0                              // LEGOID 111 - Transparent Brown 0 !COLOUR Trans_Black                                          CODE  40  VALUE #635F52  EDGE #171316  ALPHA 128 0                              // LEGOID  41 - Transparent Red 0 !COLOUR Trans_Red                                            CODE  36  VALUE #C91A09  EDGE #880000  ALPHA 128 0                              // LEGOID  47 - Transparent Fluorescent Reddish Orange 0 !COLOUR Trans_Neon_Orange                                    CODE  38  VALUE #FF800D  EDGE #BD2400  ALPHA 128 0                              // LEGOID 182 - Trans Bright Orange 0 !COLOUR Trans_Orange                                          CODE  57  VALUE #F08F1C  EDGE #A45C28  ALPHA 128 0                              // LEGOID 157 - Transparent Fluorescent Yellow 0 !COLOUR Trans_Neon_Yellow                                    CODE  54  VALUE #DAB000  EDGE #C3BA3F  ALPHA 128 0                              // LEGOID  44 - Transparent Yellow 0 !COLOUR Trans_Yellow                                          CODE  46  VALUE #F5CD2F  EDGE #8E7400  ALPHA 128 0                              // LEGOID  49 - Transparent Fluorescent Green 0 !COLOUR Trans_Neon_Green                                      CODE  42  VALUE #C0FF00  EDGE #84C300  ALPHA 128 0                              // LEGOID 311 / 227 - Transparent Bright Green / Transparent Bright Yellowish Green 0 !COLOUR Trans_Bright_Green                                    CODE  35  VALUE #56E646  EDGE #9DA86B  ALPHA 128 0                              // LEGOID  48 - Transparent Green 0 !COLOUR Trans_Green                                          CODE  34  VALUE #237841  EDGE #1E6239  ALPHA 128 0                              // LEGOID  43 - Transparent Blue 0 !COLOUR Trans_Dark_Blue                                      CODE  33  VALUE #0020A0  EDGE #000064  ALPHA 128 0                              // LEGOID 143 - Transparent Fluorescent Blue 0 !COLOUR Trans_Medium_Blue                                    CODE  41  VALUE #559AB7  EDGE #196973  ALPHA 128 0                              // LEGOID  42 - Transparent Light Blue 0 !COLOUR Trans_Light_Blue                                      CODE  43  VALUE #AEE9EF  EDGE #72B3B0  ALPHA 128 0                              // LEGOID 229 - Transparent Light Bluish Green 0 !COLOUR Trans_Very_Light_Blue                                CODE  39  VALUE #C1DFF0  EDGE #85A3B4  ALPHA 128 0                              // LEGOID 236 - Transparent Bright Reddish Lilac 0 !COLOUR Trans_Bright_Reddish_Lilac                            CODE  44  VALUE #96709F  EDGE #5A3463  ALPHA 128 0                              // LEGOID 126 - Transparent Bright Bluish Violet 0 !COLOUR Trans_Purple                                          CODE  52  VALUE #A5A5CB  EDGE #280025  ALPHA 128 0                              // LEGOID 113 - Transparent Medium Reddish Violet 0 !COLOUR Trans_Dark_Pink                                      CODE  37  VALUE #DF6695  EDGE #A32A59  ALPHA 128 0                              // LEGOID 230 - Transparent Bright Pink 0 !COLOUR Trans_Pink                                            CODE  45  VALUE #FC97AC  EDGE #A8718C  ALPHA 128 0                              // LEGOID 285 - Transparent Light Green 0 !COLOUR Trans_Light_Green                                    CODE  285  VALUE #7DC291  EDGE #52805F  ALPHA 128 0                              // LEGOID 234 - Transparent Fire Yellow 0 !COLOUR Trans_Fire_Yellow                                    CODE  234  VALUE #FBE890  EDGE #BAAB6A  ALPHA 128 0                              // LEGOID 293 - Transparent Light Royal Blue 0 !COLOUR Trans_Light_Blue_Violet                              CODE  293  VALUE #6BABE4  EDGE #4D7BA3  ALPHA 128 0                              // LEGOID 231 - Transparent Flame Yellowish Orange 0 !COLOUR Trans_Bright_Light_Orange                            CODE  231  VALUE #FCB76D  EDGE #BD8951  ALPHA 128 0                              // LEGOID 284 - Transparent Reddish Lilac 0 !COLOUR Trans_Reddish_Lilac                                  CODE  284  VALUE #C281A5  EDGE #82566E  ALPHA 128 0 // LDraw Chrome Colours 0                              // LEGOID 299 - Warm Gold Drum Lacq 0 !COLOUR Chrome_Gold                                          CODE 334  VALUE #BBA53D  EDGE #BBB23D                              CHROME 0                              // LEGOID 298 - Cool Silver Drum Lacq 0 !COLOUR Chrome_Silver                                        CODE 383  VALUE #E0E0E0  EDGE #A4A4A4                              CHROME 0                              // LEGOID 187 - Metallic Earth Orange 0 !COLOUR Chrome_Antique_Brass                                  CODE  60  VALUE #645A4C  EDGE #281E10                              CHROME 0 !COLOUR Chrome_Black                                          CODE  64  VALUE #1B2A34  EDGE #595959                              CHROME 0                              // LEGOID 185 - Metallic Bright Blue 0 !COLOUR Chrome_Blue                                          CODE  61  VALUE #6C96BF  EDGE #202A68                              CHROME 0                              // LEGOID 147 - Metallic Dark Green 0 !COLOUR Chrome_Green                                          CODE  62  VALUE #3CB371  EDGE #007735                              CHROME 0 !COLOUR Chrome_Pink                                          CODE  63  VALUE #AA4D8E  EDGE #6E1152                              CHROME 0 // LDraw Pearl Colours 0                              // LEGOID 183 - Metallic White 0 !COLOUR Pearl_White                                          CODE 183  VALUE #F2F3F2  EDGE #333333                              PEARLESCENT 0                              // LEGOID 150 - Metallic Light Grey 0 !COLOUR Pearl_Very_Light_Grey                                CODE 150  VALUE #BBBDBC  EDGE #333333                              PEARLESCENT 0                              // LEGOID 179 / 296 / 131 / 315 - Silver Flip-flop / Cool Silver / Silver / Silver Metallic 0 !COLOUR Pearl_Light_Grey                                      CODE 135  VALUE #9CA3A8  EDGE #333333                              PEARLESCENT 0                              // LEGOID 131 - Silver 0 !COLOUR Flat_Silver                                          CODE 179  VALUE #898788  EDGE #333333                              PEARLESCENT 0                              // LEGOID 148 - Metallic Dark Grey 0 !COLOUR Pearl_Dark_Grey                                      CODE 148  VALUE #575857  EDGE #333333                              PEARLESCENT 0                              // LEGOID 145 - Sand Blue Metallic 0 !COLOUR Metal_Blue                                            CODE 137  VALUE #5677BA  EDGE #333333                              PEARLESCENT 0                              // LEGOID 127 - Gold 0 !COLOUR Pearl_Light_Gold                                      CODE 142  VALUE #DCBE61  EDGE #333333                              PEARLESCENT 0                              // LEGOID 297 - Warm Gold 0 !COLOUR Pearl_Gold                                            CODE 297  VALUE #CC9C2B  EDGE #333333                              PEARLESCENT 0                              // LEGOID 147 - Metallic Sand Yellow 0 !COLOUR Flat_Dark_Gold                                        CODE 178  VALUE #B4883E  EDGE #333333                              PEARLESCENT 0                              // LEGOID 139 - Copper 0 !COLOUR Copper                                                CODE 134  VALUE #964A27  EDGE #333333                              PEARLESCENT 0                              // LEGOID 189 - Reddish Gold 0 !COLOUR Reddish_Gold                                          CODE 189  VALUE #AC8247  EDGE #333333                              PEARLESCENT 0 // LDraw Metallic Colours 0                              // LEGOID 315 - Silver Metallic 0 !COLOUR Metallic_Silver                                      CODE  80  VALUE #A5A9B4  EDGE #333333                              METAL 0                              // LEGOID 200 - Lemon Metallic 0 !COLOUR Metallic_Green                                        CODE  81  VALUE #899B5F  EDGE #333333                              METAL 0                              // LEGOID 310 / 335  Metalized Gold / Gold Ink 0 !COLOUR Metallic_Gold                                        CODE  82  VALUE #DBAC34  EDGE #333333                              METAL 0                              // LEGOID 149 - Metallic Black 0 !COLOUR Metallic_Black                                        CODE  83  VALUE #1A2831  EDGE #333333                              METAL 0                              // LEGOID 309 / 336 - Metalized Silver / Silver Ink 0 !COLOUR Metallic_Dark_Grey                                    CODE  87  VALUE #6D6E5C  EDGE #333333                              METAL 0                              // LEGOID 300 / 334 - Copper Drum Lacq / Copper Ink 0 !COLOUR Metallic_Copper                                      CODE 300  VALUE #C27F53  EDGE #333333                              METAL 0                              // LEGOID 184 - Metallic Bright Red 0 !COLOUR Metallic_Bright_Red                                  CODE 184  VALUE #D60026  EDGE #333333                              METAL 0                              // LEGOID 186 - Metallic Dark Green 0 !COLOUR Metallic_Dark_Green                                  CODE 186  VALUE #008E3C  EDGE #333333                              METAL 0 // LDraw Milky Colours 0                              // LEGOID  20 - Nature 0 !COLOUR Milky_White                                          CODE  79  VALUE #FFFFFF  EDGE #C3C3C3  ALPHA 240 0                              // LEGOID 294 - Phosphorescent Green 0 !COLOUR Glow_In_Dark_Opaque                                  CODE  21  VALUE #E0FFB0  EDGE #A4C374  ALPHA 240  LUMINANCE 15 0                              // LEGOID  50 - Phosphorescent White 0 !COLOUR Glow_In_Dark_Trans                                    CODE 294  VALUE #BDC6AD  EDGE #818A71  ALPHA 240  LUMINANCE 15 0                              // LEGOID 329 - White Glow 0 !COLOUR Glow_In_Dark_White                                    CODE 329  VALUE #F5F3D7  EDGE #B5B49F  ALPHA 240  LUMINANCE 15 0 // LDraw Glitter Colours 0                              // LEGOID 114 - Tr. Medium Reddish-Violet w. Glitter 2% 0 !COLOUR Glitter_Trans_Dark_Pink                              CODE 114  VALUE #DF6695  EDGE #9A2A66  ALPHA 128                  MATERIAL GLITTER VALUE #923978 FRACTION 0.17 VFRACTION 0.2 SIZE 1 0                              // LEGOID 117 - Transparent Glitter 0 !COLOUR Glitter_Trans_Clear                                  CODE 117  VALUE #FFFFFF  EDGE #C3C3C3  ALPHA 128                  MATERIAL GLITTER VALUE #FFFFFF FRACTION 0.08 VFRACTION 0.1 SIZE 1 0                              // LEGOID 129 - Tr. Bright Bluish Violet w. Glitter 2% 0 !COLOUR Glitter_Trans_Purple                                  CODE 129  VALUE #640061  EDGE #280025  ALPHA 128                  MATERIAL GLITTER VALUE #8C00FF FRACTION 0.3 VFRACTION 0.4 SIZE 1 0                              // LEGOID 302  Tr. Light Blue with Glitter 2% 0 !COLOUR Glitter_Trans_Light_Blue                              CODE 302  VALUE #AEE9EF  EDGE #72B3B0  ALPHA 128                  MATERIAL GLITTER VALUE #923978 FRACTION 0.17 VFRACTION 0.2 SIZE 1 0                              // LEGOID 339  Tr Fluorescent Green with Glitter 2% 0 !COLOUR Glitter_Trans_Neon_Green                              CODE 339  VALUE #C0FF00  EDGE #84C300  ALPHA 128                  MATERIAL GLITTER VALUE #923978 FRACTION 0.17 VFRACTION 0.2 SIZE 1 0 // LDraw Speckle Colours 0 !COLOUR Speckle_Black_Silver                                  CODE 132  VALUE #000000  EDGE #898788                              MATERIAL SPECKLE VALUE #898788 FRACTION 0.4 MINSIZE 1 MAXSIZE 3 0                              // LEGOID 132 - Black Glitter 0 !COLOUR Speckle_Black_Gold                                    CODE 133  VALUE #000000  EDGE #DBAC34                              MATERIAL SPECKLE VALUE #DBAC34 FRACTION 0.4 MINSIZE 1 MAXSIZE 3 0 !COLOUR Speckle_Black_Copper                                  CODE  75  VALUE #000000  EDGE #AB6038                              MATERIAL SPECKLE VALUE #AB6038 FRACTION 0.4 MINSIZE 1 MAXSIZE 3 0 !COLOUR Speckle_Dark_Bluish_Grey_Silver                      CODE  76  VALUE #635F61  EDGE #898788                              MATERIAL SPECKLE VALUE #898788 FRACTION 0.4 MINSIZE 1 MAXSIZE 3 0 // LDraw Rubber Colours 0 !COLOUR Rubber_Yellow                                        CODE  65  VALUE #F5CD2F  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Trans_Yellow                                  CODE  66  VALUE #CAB000  EDGE #8E7400  ALPHA 128                  RUBBER 0 !COLOUR Rubber_Trans_Clear                                    CODE  67  VALUE #FFFFFF  EDGE #C3C3C3  ALPHA 128                  RUBBER 0 !COLOUR Rubber_Black                                          CODE 256  VALUE #212121  EDGE #595959                              RUBBER 0 !COLOUR Rubber_Blue                                          CODE 273  VALUE #0033B2  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Red                                            CODE 324  VALUE #C40026  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Orange                                        CODE 350  VALUE #D06610  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Light_Grey                                    CODE 375  VALUE #C1C2C1  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Dark_Blue                                      CODE 406  VALUE #001D68  EDGE #595959                              RUBBER 0 !COLOUR Rubber_Purple                                        CODE 449  VALUE #81007B  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Lime                                          CODE 490  VALUE #D7F000  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Light_Bluish_Grey                              CODE 496  VALUE #A3A2A4  EDGE #333333                              RUBBER 0 !COLOUR Rubber_Flat_Silver                                    CODE 504  VALUE #898788  EDGE #333333                              RUBBER 0 !COLOUR Rubber_White                                          CODE 511  VALUE #FAFAFA  EDGE #333333                              RUBBER 0 // LDraw Internal Common Material Colours 0 !COLOUR Main_Colour                                          CODE  16  VALUE #FFFF80  EDGE #333333 0 !COLOUR Edge_Colour                                          CODE  24  VALUE #7F7F7F  EDGE #333333 0                              // LEGOID 109 - Black IR 0 !COLOUR Trans_Black_IR_Lens                                  CODE  32  VALUE #000000  EDGE #333333  ALPHA 210 0 !COLOUR Magnet                                                CODE 493  VALUE #656761  EDGE #595959                              METAL 0 !COLOUR Electric_Contact_Alloy                                CODE 494  VALUE #D0D0D0  EDGE #333333                              METAL 0 !COLOUR Electric_Contact_Copper                              CODE 495  VALUE #AE7A59  EDGE #333333                              METAL 0

I tested the script with the 4186.dat and it works fine. The result can be viewed in https://ldr.netlify.app/

That was a funny sunday afternoon task :-)
Reply
RE: Generate MPD with all dependency parts
#4
Great you found a solution!
Now I need to install a Windows Python (I only use the Spike Prime and PyBricks versions...)
Reply
RE: Generate MPD with all dependency parts
#5
(2020-12-20, 17:22)Philippe Hurbain Wrote: Great you found a solution!
Now I need to install a Windows Python (I only use the Spike Prime and PyBricks versions...)

The script is very buggy right now. I did a few corrections.
But the viewer has problems with file references like "s\10s01.dat".
I had to replace the backslash with __ for example. 
Now a few other files works. But most files don't.  

Is there a mpd file verifier script so that I can check if the generated file is correct?

Cheers,
Bernhard
Reply
use MPDCenter
#6
I think this could be achieved by using MPDCenter (contained inside the All-in-one-installer).
Simply configure in its options that the "official" files setting points to an empty folder,
and let the "unofficial parts" folder point to the LDRAW folder.
Reply
RE: use MPDCenter
#7
(2020-12-21, 2:33)Steffen Wrote: I think this could be achieved by using MPDCenter (contained inside the All-in-one-installer).
Simply configure in its options that the "official" files setting points to an empty folder,
and let the "unofficial parts" folder point to the LDRAW folder.
That's whet I tried first, but it doesn't seem to work...
Reply
RE: Generate MPD with all dependency parts
#8
(2020-12-20, 12:57)Bernhard Wrote: Hi guys,

I'm totally new and very fascinated by ldraw. Smile Smile
I'm a software engineer and would like to view custom created models using this software: https://github.com/EvanBacon/Lego-Expo
Here is an online demo of the viewer: https://ldr.netlify.app/
The tools read MPD files. Example files can be found here: https://github.com/EvanBacon/Lego-Expo/t...ary/models

My understanding is that the files have to contain the declaration of all parts used in the model. No external references are allowed.

As a test, I would like to use a simple baseplate and view it using Lego-Expo. I found this baseplate: https://www.ldraw.org/parts/official-par...artid=4186

Is there a way to generate an MPD file with all the referenced parts based on a DAT-file (like the parts/4186.dat) ?

I couldn't found such a tool.  Undecided
Thanks for your help!

Cheers,
Bernhard

Hi Bernhard,
you should try my program MPDCenter for your purpose.
cu
Mikeheide
Reply
RE: Generate MPD with all dependency parts
#9
(2020-12-20, 12:57)Bernhard Wrote: Is there a way to generate an MPD file with all the referenced parts based on a DAT-file (like the parts/4186.dat) ?
Hi Bernhard,

I'm late, but if you would like to give LDInspector (very beta) a chance, you can point to your mpd-file ("File" from the top menu), then select "Edit" pane and therein "Inline Parts" - "All used". Back on the "Item" pane click "Save item as new file" to have a mpd-file without external reference (hopefully).

Best regards
Stefan
Reply
RE: Generate MPD with all dependency parts
#10
(2020-12-30, 22:48)Stefan Frenz Wrote: Hi Bernhard,

I'm late, but if you would like to give LDInspector (very beta) a chance, you can point to your mpd-file ("File" from the top menu), then select "Edit" pane and therein "Inline Parts" - "All used". Back on the "Item" pane click "Save item as new file" to have a mpd-file without external reference (hopefully).

Best regards
Stefan
Can prove useful! Thanks for the tip!!!
Reply
« Next Oldest | Next Newest »



Forum Jump:


Users browsing this thread: 1 Guest(s)