Organizing the parts library


Organizing the parts library
#1
The present LDraw library is divided into primitives, subparts, and parts. Each part can be assigned to a category and have zero or more keywords to aid searching. However, there is not yet any coherent structure for organizing similar parts.

Patterned versions of parts are primarily identified by a part number extension, while distinct underside reinforcements may be indicated with a letter (a, b, c...), a different part number, or some other extension to the part number. How would a prospective digital builder known which version to use without getting lost in the jungle of similar parts?

I propose using an ontology where the different versions of a brick are organized in a hierarchical manner. It could for example be possible to define a 'generic' brick and all its known variants of underside reinforcements in a consistent manner. This ontology could then be used to filter the library to produce different official subsets of the library for different stakeholders.


Reusing dat files is an efficient way of constructing complex structures out of modular subunits while maintaining editability on all levels without redundancy. However, each additional subpart requires its own review and approval on the parts tracker before becoming eligible for inclusion into the library. The low number of part reviewers effectively limit the realistic number of subunits of a part, thus hindering adequate reuse of subunits in different bricks. Consequentially, subunits tend to be large and highly specialized, thus of little use in other parts. Additionally, I would prefer having access to box primitives where the origin is at the end of the box rather than the middle and understud primitives with the origin at the bottom end of the primitive rather than the top to simplify scaling and placement.

The above can be achieved in at least two approaches; 1. allowing subparts within a file and 2. by expanding the 'primitives' library with structures that are repeatedly constructed in part after part. Examples of the latter include boxjcyl, a halfway truncated stud8, and all-edge versions of some boxes.

Solution 1 would enable more consistent parts as modular intermediates can be constructed in a "for this part only" manner. Solution 2 would enable more broader reuse of modular subparts. Neither excluding the other.


I would also prefer more standardized naming of parts, consistent part orientation, regularized primitive sizes, and circular segments other than those starting from a 0 or 90 degree angle.
Reply
RE: Organizing the parts library
#2
Thanks for your input, it is always good to see a new part author's view.

(2024-11-08, 21:30)Peter Blomberg Wrote: Reusing dat files is an efficient way of constructing complex structures out of modular subunits while maintaining editability on all levels without redundancy. However, each additional subpart requires its own review and approval on the parts tracker before becoming eligible for inclusion into the library. The low number of part reviewers effectively limit the realistic number of subunits of a part, thus hindering adequate reuse of subunits in different bricks. Consequentially, subunits tend to be large and highly specialized, thus of little use in other parts.
We could indeed need more reviews, that is an eternal thing. People like to create things, reviewing is a necessary task but it is not that fun as authoring a part.

Using sub-parts is encouraged due to the exact reason you mention above, finding the required sub-parts is then another challenge, requiring quote some knowledge of the available parts, and scanning them for reusable sub-parts.

(2024-11-08, 21:30)Peter Blomberg Wrote: Additionally, I would prefer having access to box primitives where the origin is at the end of the box rather than the middle and understud primitives with the origin at the bottom end of the primitive rather than the top to simplify scaling and placement.
The primitive refernce gives a pretty good overview of how those boxes are constructed and where their origin is placed. As this is not consistent through them, I can understand that this is confusing. Changing them would mean to add a whole new set of prims with the origin at one side.

The studs generally have their origin at the same place, understuds need to be scaled reverse.

(2024-11-08, 21:30)Peter Blomberg Wrote: The above can be achieved in at least two approaches; 1. allowing subparts within a file and 2. by expanding the 'primitives' library with structures that are repeatedly constructed in part after part. Examples of the latter include boxjcyl, a halfway truncated stud8, and all-edge versions of some boxes.

Solution 1 would enable more consistent parts as modular intermediates can be constructed in a "for this part only" manner. Solution 2 would enable more broader reuse of modular subparts. Neither excluding the other.
1) is allowed an encouraged, I may miss your point, may be you can give an example
2) prims can always be added, they might not be there because there was not yet a need for them. If you think you got a useful one, add it.

(2024-11-08, 21:30)Peter Blomberg Wrote: I would also prefer more standardized naming of parts, consistent part orientation, regularized primitive sizes, and circular segments other than those starting from a 0 or 90 degree angle.
The naming of parts, ensuring consistency, proper/useful orientation etc, is part of the review process.

What do you mean with the circular segments starting at other angles? Do you have an example?

BR
Gerald
Reply
RE: Organizing the parts library
#3
Thanks Gerald, it seems I still need to learn at least two things.

How do I create/define a subpart within a file so that the parts tracker doesn't list it as a separate subpart, but I can refer to it from elsewhere within the file? At the moment I only know how to define a subpart as a separate #####s0#.dat file.

1-8edge contains two line segments, each corresponding to a 22.5° angle starting at 0° and moving counterclockwise. The segments thus cover angles from 0° to 45°. What should I do to 'rotate' the primitive by 22.5° so that the segments cover angles from 22.5° to 67.5°? How about rotating a primitive by 1/48ths, 3/48ths, or say 7/48ths? After rotating a primitive, will it still yield the same coordinates (rounded to 4 decimals) as a larger, but unrotated primitive?
Reply
RE: Organizing the parts library
#4
(2024-11-14, 16:24)Peter Blomberg Wrote: How do I create/define a subpart within a file so that the parts tracker doesn't list it as a separate subpart, but I can refer to it from elsewhere within the file? At the moment I only know how to define a subpart as a separate #####s0#.dat file.

sub-parts are always a seperate file, they are never "hidden" in the main file itself

(2024-11-14, 16:24)Peter Blomberg Wrote: 1-8edge contains two line segments, each corresponding to a 22.5° angle starting at 0° and moving counterclockwise. The segments thus cover angles from 0° to 45°. What should I do to 'rotate' the primitive by 22.5° so that the segments cover angles from 22.5° to 67.5°? How about rotating a primitive by 1/48ths, 3/48ths, or say 7/48ths? After rotating a primitive, will it still yield the same coordinates (rounded to 4 decimals) as a larger, but unrotated primitive?

As a rule of thumb, wherever possible you sohould try to avoid roating circular prims, better split them e.g.:

better use:
1 16 0 0 0 10 0 0 0 1 0 0 0 10 1-8edge.dat
1 16 0 0 0 10 0 0 0 1 0 0 0 -10 1-8edge.dat

instead of:
1 16 0 0 0 7.07107 0 7.07107 0 1 0 7.07107 0 -7.07107 1-4edge.dat

especially if there are other prims following

if there is no other choice as you mention, rotate it and round the matrix to 5 decimals, placement to 4 or five
Reply
RE: Organizing the parts library
#5
(2024-11-15, 10:26)Gerald Lasser Wrote: sub-parts are always a seperate file, they are never "hidden" in the main file itself

Well, there technically is a way, using the .mpd file structure, but it's likely not allowed on the tracker and I'm 99.9% sure that it would break some editors
Reply
RE: Organizing the parts library
#6
(2024-11-15, 10:57)Max Murtazin Wrote: Well, there technically is a way, using the .mpd file structure, but it's likely not allowed on the tracker and I'm 99.9% sure that it would break some editors

We are talking parts not model (ldr/mpd) files, therefore a strict "no". 

The part specifications don't allow a similar handling within the part (dat) files
Reply
RE: Organizing the parts library
#7
(2024-11-15, 11:09)Gerald Lasser Wrote: We are talking parts not model (ldr/mpd) files, therefore a strict "no". 

The part specifications don't allow a similar handling within the part (dat) files

Would be pretty neat if it did though. Most subfiles are essentially just a way to reduce file size and never reused outside the part they were made for. The spacing would be even more optimized if there was no need for precise names and separate files for data that's used for only a single part
Reply
« Next Oldest | Next Newest »



Forum Jump:


Users browsing this thread: 3 Guest(s)