LDraw.org Discussion Forums
LPUB - Some Ideas for Improvement - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: LDraw Programs (https://forums.ldraw.org/forum-7.html)
+--- Forum: LDraw File Processing and Conversion (https://forums.ldraw.org/forum-22.html)
+--- Thread: LPUB - Some Ideas for Improvement (/thread-9029.html)



LPUB - Some Ideas for Improvement - Gerald Lasser - 2013-05-09

Hello,

After working on an instruction for a few days I came across some issues that bugged me quite a lot and the workarounds with the existing tools are either tideous or I simply did not know them, in this case I gladly take some advice from you :-)

For the issues where I did not see any obvious workaround I would have some suggestions concerning mainly MLCAD, LSYNTH and LPUB. I would like to get your opinions.

Those are the concerns:
1.) "One Part Movements" e.g. sliding a bush on an axle
2.) Moving parts later during construction
3.) Re-Routing of Cables during construction

And here are the ideas:
ad 1.) "One Part Movements"
Sometimes in the instructions you want to show a part being moved or added, so you put it a bit away from the model and add an arrow.
BUFFER exchange does to job pretty well and straight forward. However, it clutters the MLCAD file quite a lot. Not so much in the code, but visually. So it gets difficult to identify parts and e.g. if you want to move them later on, you need to move the buffered parts as well.

The file looks like this:
[sub]1 4 124 0 0 1 0 0 0 1 0 0 0 1 32054.dat
0 BUFEXCHG A STORE
1 0 -4 0 0 1 0 0 0 1 0 0 0 1 4519.dat
0 MLCAD ARROW 0 72.001 0 0 -1 0 0 0 1 0 0 0 -1 15 6 18 50 1 30 1 2 1 1
0 MLCAD SKIP_BEGIN
3 1 90.001 0 0 71.001 -7.5 0 72.6677 0 0
3 1 90.001 0 0 71.001 7.5 0 72.6677 0 0
3 1 72.6677 0 0 72.001 -3 0 72.001 3 0
4 1 72.001 -3 0 22.001 -3 0 22.001 3 0 72.001 3 0
0 MLCAD SKIP_END
0 STEP
1 0 84 0 0 1 0 0 0 1 0 0 0 1 4519.dat[/sub]

And displays in MLCAD as:
[Image: suggest_01.png]

To avoid this a META command either directly within MLCAD or in LPUB could be used that applies to the part following the command. e.g.:

[sub]0 OFFSET PART [Matrix where to show the part/or a delta position]
1 0 84 0 0 1 0 0 0 1 0 0 0 1 4519.dat[/sub]

MLCAD would the show only the part in its final position

-> The command could be realized in e.g. LPUB only (make it LPUB OFFSET)
-> Additionally an arrow could be added as it is currently done in MLCAD ARROW

ad 2.) Moving parts later during construction
Sometimes a part is added during construction that will be used in a later step to fasten an additional part, e.g. pushing in the long pin with bush during technic construction or movin an axle.

The only way how to realize this is putting a lot of parts into the buffer exchange. This disadvantage here is that multiple STEPS within the BUFFER exchange commands make LPUB not displaying the amount of bricks correctly. (MLCAD does show a correct inventory) .
Also a disadvatage of this method is not so much cluttering the view, but when parts are moved, you need to take care of many parts within the buffer.

A better way to handle would be to put only this one or more parts into a buffer and retreive them, respectively replace them later. Realization would require an extension to the BUFFER meta command:
e.g. define the parts that need to be moved between a START/STOP bracket and later remove them with a REMOVE command and place the same part in the final position.

[sub]0 BUFEXCHG A START
1 4 124 0 0 1 0 0 0 1 0 0 0 1 32054.dat -> Part in pulled out position
0 BUFEXCHG A END
0 BUFEXCHG A STORE

....

0 BUFEXCHG A REMOVE
1 4 124 0 0 1 0 0 0 1 0 0 0 1 32054.dat -> Part in final Position[/sub]

ad 3.) Re-Routing of Cables during construction
This concerns instructions where a cable needs to be included (as later parts would block the routing at the time the destination is inserted) and needs to be re.routed once or several times during constructions.
Theoretically this could already be addressed with the proposal of the second point. But to make instructions easier to do and better to read some improvements can be done like:

- entering a "name" for the cable (or LSynth element) to make identification for re-routing easier.
- adding a color identifier to the cable to show the destination when multiple cables are used.

Possibly two meta commands in LSynth could help here e.g. NAME and LABEL

[sub]0 SYNTH BEGIN ELECTRIC_POWER_FUNCTIONS_CABLE 16
0 SYNTH NAME CABLE-1
0 SYNTH LABEL START/STOP SQUARE/CIRCLE/DIAMOND/TRIANGLE UP/DOWN Size Color
0 SYNTH SHOW
...
0 SYNTH SYNTHESIZED BEGIN
...
0 SYNTH SYNTHESIZED END
0 SYNTH END[/sub]

The LABEL command would add a color identifier to the cable hovering above the cable before the plugs.

The NAME command could identify a cable and when preparing instructions e.g. LPUB can take care to use now the next instance of e.g. CABLE-01


So, that was quite a lot, may be too much, but I would be happy to hear your opinions.

Thansk for reading
Gerald