msx80

[Software] Blueprint, a building instruction generator for LDD

Recommended Posts

Yes, it's Chrome. I think it's becouse the file is new (obviously) and the server i'm hosting it sees very little traffic (it's a personal space of mine). I still think google should apply presumption of innocence, but that's another story.

The only issue for me now is running the 64-bit version with 64-bit Windows. I can run the 32-bit version fine.

Strange, you have a 64bit setup but can't run the 64 bit executable? Maybe you have a 32bit java installed? You could check by opening the command prompt and entering the command:

java -d64 -version

I haven't have any crashes, and the only issue I've seen in my limited use is some extra ghost item callouts, A part is called out in an assembly step, with a quantity, e.g. "1x" but there's nothing there, and nothing missing.

I'm not sure what those are. Possibly some part that could not be found.. Could you post a screenshot of the problem if you have the time?

Thanks :)

Edited by msx80

Share this post


Link to post
Share on other sites

I haven't have any crashes, and the only issue I've seen in my limited use is some extra ghost item callouts, A part is called out in an assembly step, with a quantity, e.g. "1x" but there's nothing there, and nothing missing.

have you deleted certain substep, callout, or submodel step related to that particular step? if so, that's probably why. i once deleted a submodel step on a certain step, and it result of giving that "ghost". my solution was deleting that particular step, and redo it.

Edited by bacem

Share this post


Link to post
Share on other sites

Regarding the ghost items, yes, it's connected to submodel step deletion. I am able to replicate the issue,

1) Create a submodel step.

2) Delete the submodel step. Now, there's a thin horizontal "frame" or thick vertical line left behind in Step design.

3) Go to Page layout, and then (Re)Generate from steps, there's the ghost item in the callouts, denoted with a 1x, but no item picture.

But bacem's workaround (deleting the steps that have the horizontal line or thin, empty frame attached to them) works for me, thanks!

Also, I do not have the 64-bit JRE installed (doh!).

Edited by sparkart

Share this post


Link to post
Share on other sites

Thanks for the report, it actually happened to me some times. It's becouse when you remove the last step from a submodel, the submodel is still there but cannot be interacted with (as you only interact to steps) and cannot be deleted.

Share this post


Link to post
Share on other sites

Hello msx80,

I've downloaded your project onto my Machintosh, and when I try to open the .bat file, it tells me that it cannot access jarfile binblueprint.jar

Is there a way to work around this? I'm not very experienced with terminal (or whatever they call the command runner), so if you could give me some advice...

P.S. what I believe is going on, is that the system doesn't recognize that the first section of bin/blueprint.jar is actually the directory path. Just guessing.

Edited by vl_cn

Share this post


Link to post
Share on other sites

Hello msx80,

I've downloaded your project onto my Machintosh, and when I try to open the .bat file, it tells me that it cannot access jarfile binblueprint.jar

Is there a way to work around this? I'm not very experienced with terminal (or whatever they call the command runner), so if you could give me some advice...

P.S. what I believe is going on, is that the system doesn't recognize that the first section of bin/blueprint.jar is actually the directory path. Just guessing.

Hi there, the bat files are supposed to run on windows. On Mac there should be other "startup script" but i don't have access to a mac machine to develop them.

If you can open the terminal, you could go to the program folder and give this command:

java -Djava.library.path=./native/macosx/x64 -jar ./bin/blueprint.jar

Let me know what it says

Share this post


Link to post
Share on other sites

today i found out that saving your progress by pressing ctrl+S don't work. the "save" button still works tho, so it's not big of a deal, but just wanna mention it.

Share this post


Link to post
Share on other sites

Is this where you want to get feedback/suggestion/bugs? Working on that assumption...

I made my first set of instructions today using Blueprint. There were some definite difficulties, but overall I was surprised at how well things turned out.

Some observations:

  • Thank you thank you thank you for putting undo/redo in. I had started with 0.0.14 and it was painful.
  • Page setup could use top and bottom margins, as well as minimum padding between steps.
  • The empty submodel issue is really hard to deal with - please fix soon :)
  • In Step Design, using the context menu for rotation is quite painful because you often need a great many rotation attempts before figuring out which ones you want and being happy with the result. I suggest tying step rotation to the arrow keys and model rotation to the arrow keys with the shift key in addition to the context menu. Even better would be to have drag-rotate like you can do in the palette in LDD.
  • The submodel background colors are not configurable but should be. One of the default ones didn't look good with black parts and pink highlighted ones.
  • If I have step that places two 4x4 plates of different colors, the current highlighting scheme means that image is useless. You have to look at the next step image to figure out the placement. It seems an unnecessary restriction to split every color part into a different step. Would it be possible to simply highlight the outline of the parts in the step image?
  • Page Layout view could use drag-select (thank you for multi-click-select).
  • It would be nice if page layout view could also allow movement of selected items by arrow keys. That way, if you just want to make some vertical space between steps you could use the up and down arrows without messing up your horizontal alignment.
  • I appreciate the power to move steps around freely on the page, but how about some way (context menu?) to distribute them evenly on the page and another to return it to the default layout? That particular option could also have a default in page setup, but you would still have to be able to override it per page.
  • I think the current submodel scheme has a flaw.
    • If I have a model that has a single submodel in the middle, the current scheme is fine. It generates steps [1, 2, 3, 4, 5, [sub1, Sub2, Sub3, Sub4], 6, 7...] where the brackets indicate page groupings and step 6 integrates the submodel back into the main step flow.
    • My model had three submodels to build and then then put together at the end. Lets call the submodels A, B and C and their submodel steps A1, A2, etc. When the instructions are generated, I get steps [[A1, A2, etc.], [1], [b1, B2, etc.], 2, 3]. So step 1 ends up on its own page and just repeats the last image from the submodel with every part highlighted. It would have been better to have [[A1, A2, etc.], [b1, B2, etc.], [1, 2]], where step one joins the first two submodels.
    • To make things worse, submodel A has two submodels of its own (AA and AB). This generates [[[AA1, AA2, etc.], [A1], [AB1, AB2, etc.], [A2], [1], [b1, B2, etc.]. [2, 3, etc.] so we have even more single-step pages that are isolated in the instructions, and both A1 and 1 are simply repeats of the previous image but with everything highlighted.
    • Not sure of the best solution, but the current way isn't right.

    [*]Overall I'm very upbeat about this - Nice job! Is this something you are going to open source so that others can contribute to it? I'm a Java developer (although not really a GUI developer), so I am curious.

Share this post


Link to post
Share on other sites

Is this where you want to get feedback/suggestion/bugs? Working on that assumption...

Yes, and what a feedback you gave :) Very much appreciated! Here's my response (i haven't quoted each point for quickness :P)

  • Page setup could use top and bottom margins, as well as minimum padding between steps.

Yes the page layout is kind of the weak point, more later

  • In Step Design, using the context menu for rotation is quite painful because you often need a great many rotation attempts before figuring out which ones you want and being happy with the result. I suggest tying step rotation to the arrow keys and model rotation to the arrow keys with the shift key in addition to the context menu. Even better would be to have drag-rotate like you can do in the palette in LDD.

Not a bad idea actually, that of using keys! The drag rotate would be the definitive solution but also the most time consuming

  • The submodel background colors are not configurable but should be. One of the default ones didn't look good with black parts and pink highlighted ones.

Yes, that could be done!

  • If I have step that places two 4x4 plates of different colors, the current highlighting scheme means that image is useless. You have to look at the next step image to figure out the placement. It seems an unnecessary restriction to split every color part into a different step. Would it be possible to simply highlight the outline of the parts in the step image?

Actually i made highlighting optional since i had negative feedback on it. I tryed to only highlight the outline some time ago but it looked not that good. Maybe i'll retry

  • Page Layout view could use drag-select (thank you for multi-click-select).

Yeah, i totally agree! There are some things to adjust in there, before it. Actually the objects in the page are organized hierarchically (for example the part box is the parent of all the single parts, which themself are boxes with the part picture and the Nx counter). This is helpful for some things (like "elastic" black borders or mass-moving), but painful for fine picking and also confusing. With drag select, i could flatten the hierarchy and still have easy mass-moving.

  • It would be nice if page layout view could also allow movement of selected items by arrow keys. That way, if you just want to make some vertical space between steps you could use the up and down arrows without messing up your horizontal alignment.

Good idea!

  • I appreciate the power to move steps around freely on the page, but how about some way (context menu?) to distribute them evenly on the page and another to return it to the default layout? That particular option could also have a default in page setup, but you would still have to be able to override it per page.

Actually the distrubution of steps is only done model-wide (and destructively :P) for all page. It really need some finer redistribution!

  • I think the current submodel scheme has a flaw.
    • If I have a model that has a single submodel in the middle, the current scheme is fine. It generates steps [1, 2, 3, 4, 5, [sub1, Sub2, Sub3, Sub4], 6, 7...] where the brackets indicate page groupings and step 6 integrates the submodel back into the main step flow.
    • My model had three submodels to build and then then put together at the end. Lets call the submodels A, B and C and their submodel steps A1, A2, etc. When the instructions are generated, I get steps [[A1, A2, etc.], [1], [b1, B2, etc.], 2, 3]. So step 1 ends up on its own page and just repeats the last image from the submodel with every part highlighted. It would have been better to have [[A1, A2, etc.], [b1, B2, etc.], [1, 2]], where step one joins the first two submodels.
    • To make things worse, submodel A has two submodels of its own (AA and AB). This generates [[[AA1, AA2, etc.], [A1], [AB1, AB2, etc.], [A2], [1], [b1, B2, etc.]. [2, 3, etc.] so we have even more single-step pages that are isolated in the instructions, and both A1 and 1 are simply repeats of the previous image but with everything highlighted.
    • Not sure of the best solution, but the current way isn't right.

I see what you mean, there's a way around: instead of having one submodel for each step, put all submodels on the same step one after the other. That way you have: [a1,a2,a3][b1,b2,b3][c1,c2,c3][1] . In the step 1, you'll have all three subassemblies. (i know there's no functionality to move a submodel from a step to another. You have to move all the parts manually).

Or you could simply delete the pages with the subassemblies :) After all some gimp retouching is always expected.

  • Overall I'm very upbeat about this - Nice job! Is this something you are going to open source so that others can contribute to it? I'm a Java developer (although not really a GUI developer), so I am curious.

Thanks! Actually i would love to make it open source (i have some open source projects around), but the problem is with intellectual property. As far as i know, TLG don't want to disclose the format of their geometry database. The programs that access it are tolerated (like LDDtoPovray), but should not be usable to export the geometries. LDDtoPovray actually use a virtual file system to "covertly" feed data to POV-Ray. Open sourcing Blueprint would provide a complete library to access the data. I designed both Bluerender and Blueprint with a goal to keep the format private.

Edited by msx80

Share this post


Link to post
Share on other sites

Actually i made highlighting optional since i had negative feedback on it. I tryed to only highlight the outline some time ago but it looked not that good. Maybe i'll retry

Hmmm... Options are good, but what about this idea? "Fade" all the parts placed in previous steps. I'm not sure of the best way to do it, but maybe change the transparency (alpha value)? That would "fade" the bricks you aren't as interested in while leaving the "new" bricks normal looking, but highlighted by comparison.

You could allow a choice between multiple highlighting options (outline, pink, fade other bricks, none).

Actually the distribution of steps is only done model-wide (and destructively :P) for all page. It really need some finer redistribution!

Yeah, about that. As I worked on moving steps and submodels around, I had no idea what the pages would look like until I switched modes and rebuilt the Page View. There are a couple of ways to solve that. One way would be to have some sort of preview window that would show you the pagination in real time (something like the "filmstrip" view in PowerPoint that shows you small versions of all the slides).

I can see a lot of problems with that, though, so how about this idea which would be much easier. In Step Design, you could put an inert vertical bar between steps every place there would be a page break. Depending on the time cost, that might require a new way of doing incremental repagination (ouch).

I see what you mean, there's a way around: instead of having one submodel for each step, put all submodels on the same step one after the other. That way you have: [a1,a2,a3][b1,b2,b3][c1,c2,c3][1] . In the step 1, you'll have all three subassemblies. (i know there's no functionality to move a submodel from a step to another. You have to move all the parts manually).

Or you could simply delete the pages with the subassemblies :) After all some gimp retouching is always expected.

I tried that suggestion and it has its own drawbacks.

  • You can't change the order of the submodels once they are created (also later created submodels appear first).
  • You end up with that one step with all the subassemblies together. Yes, you can rearrange them on the page but what you really need is the ability to use other steps to assemble them. It's also silly to have this big complicated "Step 1" and no other steps.

Any way we could make submodels end up producing a "virtual part" that could then be used in parent model steps? That would allow for ordering, rotation, etc., as it may be very important how they are stuck together.

Thanks! Actually i would love to make it open source (i have some open source projects around), but the problem is with intellectual property. As far as i know, TLG don't want to disclose the format of their geometry database. The programs that access it are tolerated (like LDDtoPovray), but should not be usable to export the geometries. LDDtoPovray actually use a virtual file system to "covertly" feed data to POV-Ray. Open sourcing Blueprint would provide a complete library to access the data. I designed both Bluerender and Blueprint with a goal to keep the format private.

I see your dilemma. Perhaps you could recruit some private help then, as we expect a lot from you now! ;)

Additional ideas:

  • You should have a way to change the order of submodels within a parent model.
  • If a context item is not valid (such as delete step because there are parts or submodels), disable the context item rather than allow the click.
  • Better yet, lets put a tool bar on an edge of the step image:
    • A red X button to delete the step (disabled if invalid because of parts or submodels). That will save a lot of time for me too as I delete steps often.
    • Left and right arrow buttons to facilitate horizontal step movement
    • Up and down arrow buttons to allow steps to be demoted to a submodel or promoted to the parent (tricky as there may be multiple submodels - also disabled as appropriate). Each demotion now requires three steps: making a new step in the submodel, moving all the parts, and deleting the old step.

    [*]A way to "collapse" and "expand" a submodel into a single column. This would make it easier to navigate. You could use another button for that action like you often see in tree views (perhaps shifting between + and -).

    [*]With multiple submodels it's not easy to see the hierarchy. There could be some low-tech ways to do that, such as a bar above the models that shows the groupings graphically, or possibly by "indenting" submodels by adding some headroom for each depth level.

Sorry to be so full of advice on multiple subgroups but I think this is an area that needs to be dealt with or you won't be able to effectively handle large assemblies.

Share this post


Link to post
Share on other sites

Hmmm... Options are good, but what about this idea? "Fade" all the parts placed in previous steps. I'm not sure of the best way to do it, but maybe change the transparency (alpha value)? That would "fade" the bricks you aren't as interested in while leaving the "new" bricks normal looking, but highlighted by comparison.

You could allow a choice between multiple highlighting options (outline, pink, fade other bricks, none).

That was the first thing i tried, unfortunately with "fade" all bricks "shift" in grey tonality so that black looks like dark blue gray, dark blue gray like light blue gray etc. Same for all other shaded, it makes it impossible to tell the colors.

I tried that suggestion and it has its own drawbacks.

  • You can't change the order of the submodels once they are created (also later created submodels appear first).
  • You end up with that one step with all the subassemblies together. Yes, you can rearrange them on the page but what you really need is the ability to use other steps to assemble them. It's also silly to have this big complicated "Step 1" and no other steps.

Any way we could make submodels end up producing a "virtual part" that could then be used in parent model steps? That would allow for ordering, rotation, etc., as it may be very important how they are stuck together.

I think the solution i'll go with is making submodels "movable" (just like steps) so that you can reorder them or move to other "parent" steps. Doesn't solve all problems but most of the ones you explained plus other.

Additional ideas:

  • You should have a way to change the order of submodels within a parent model.
  • If a context item is not valid (such as delete step because there are parts or submodels), disable the context item rather than allow the click.
  • Better yet, lets put a tool bar on an edge of the step image:
    • A red X button to delete the step (disabled if invalid because of parts or submodels). That will save a lot of time for me too as I delete steps often.
    • Left and right arrow buttons to facilitate horizontal step movement
    • Up and down arrow buttons to allow steps to be demoted to a submodel or promoted to the parent (tricky as there may be multiple submodels - also disabled as appropriate). Each demotion now requires three steps: making a new step in the submodel, moving all the parts, and deleting the old step.

    [*]A way to "collapse" and "expand" a submodel into a single column. This would make it easier to navigate. You could use another button for that action like you often see in tree views (perhaps shifting between + and -).

    [*]With multiple submodels it's not easy to see the hierarchy. There could be some low-tech ways to do that, such as a bar above the models that shows the groupings graphically, or possibly by "indenting" submodels by adding some headroom for each depth level.

Sorry to be so full of advice on multiple subgroups but I think this is an area that needs to be dealt with or you won't be able to effectively handle large assemblies.

The first version had a toolbar like you said but looked kind of bad, it was repeated for each step and was kind of confusing. The idea of using key arrow is nice! I also like the idea of the colored bar over submodels, i already considered adding it but it was conflicting with the layout of the gui, i have to try more :)

Share this post


Link to post
Share on other sites

Hi there, so i'm almost ready for the new version! It will feature a lot of improvements, i'm particulary happy with new submodel management commands and the reworking of page layout (which still needs a lot of work, but it's getting better).

  • Removed some bug on outlining for multisurface parts
  • Copy/paste submodel command to move submodels around
  • Unwrap submodel command to move all steps in a submodel to the parent
  • Pink highlight now optional
  • Avoid generating page on lxf import (just a waste of time)
  • Pdf/cbr/zip export
  • Drag-select for page layout
  • Page layout is now flat, not hierarchical
  • Much improved memory usage (just a single page is now kept in memory)
  • Textured parts support

I don't remember if there's more :P

Share this post


Link to post
Share on other sites

Hi there, so i'm almost ready for the new version! It will feature a lot of improvements, i'm particulary happy with new submodel management commands and the reworking of page layout (which still needs a lot of work, but it's getting better).

  • Removed some bug on outlining for multisurface parts
  • Copy/paste submodel command to move submodels around
  • Unwrap submodel command to move all steps in a submodel to the parent
  • Pink highlight now optional
  • Avoid generating page on lxf import (just a waste of time)
  • Pdf/cbr/zip export
  • Drag-select for page layout
  • Page layout is now flat, not hierarchical
  • Much improved memory usage (just a single page is now kept in memory)
  • Textured parts support

I don't remember if there's more :P

interesting. when will this come out? i have a model ready to be exported to blueprint, but if this version doesn't take too long, i'll wait a little bit.

Share this post


Link to post
Share on other sites

interesting. when will this come out? i have a model ready to be exported to blueprint, but if this version doesn't take too long, i'll wait a little bit.

Well here's a preview, if you want to proceed :) Most probably i'll release as it is, but i'll make some more testing first.

Share this post


Link to post
Share on other sites

Well here's a preview, if you want to proceed :) Most probably i'll release as it is, but i'll make some more testing first.

Nah, I'll just wait until you release it officially :)

Share this post


Link to post
Share on other sites

Ok i managed to squeeze in another feature: updating the models from lxf. This way if you change your original LXF you can update the blueprint file without having to redo everything.

The new released is uploaded, the download is here.

Share this post


Link to post
Share on other sites

Yeah java is wasteful by itself, but it's javafx (the new java interface library) that's sucking up more memory than i anticipated. I kind of regret choosing it over other alternatives, it looks great but gave me many problems.

Good to hear, I also don't like Java, it is so much overrated in a lot of universities etc.

I'm getting "java.lang.IllegalStateException: GLFW error [0x10007]: WGL: A forward compatible

OpenGL context requested but WGL_ARB_create_context is unavailable" in Windows 7.

Hi there, the bat files are supposed to run on windows. On Mac there should be other "startup script" but i don't have access to a mac machine to develop them.

If you can open the terminal, you could go to the program folder and give this command:

java -Djava.library.path=./native/macosx/x64 -jar ./bin/blueprint.jar

Let me know what it says

In my case it doesn't say anything at all it only seems to draw a lot of resources.

Share this post


Link to post
Share on other sites

Yeah java is wasteful by itself, but it's javafx (the new java interface library) that's sucking up more memory than i anticipated. I kind of regret choosing it over other alternatives, it looks great but gave me many problems.

Actually, Java is not particularly wasteful of memory but it can appear so because it uses garbage collection for memory management. With C, you explicitly return every chunk of storage to the storage pool when you are done (and woe to you if you forget!), so your memory-in-use stays at a minimum. By default, Java tends to be very lazy with GC and will allow unused blocks of memory to accumulate until you either run out of memory or some other event occurs that triggers GC and it reclaims the storage. That often means the working set size of the process stays fairly large. Choosing a more aggressive GC algorithm would help keep that from happening.

As in most languages, knowing how memory works and using good algorithms is more important than exactly how the language manages memory. For example, only keeping one page of graphics in memory at once versus the entire instruction book.

Signed, Java defender ;)

Share this post


Link to post
Share on other sites

Yeah, you're totally right. Btw i love Java, never said i don't like it, it's currently my favourite language. I think it's a little more wasteful than it needs to, but up to an acceptable limit. But JavaFX.. man it sucks up a LOT of memory.

Btw, i located two people who could lend me a mac.. I hope to deliver sooner or later :)

Share this post


Link to post
Share on other sites

Of course discussions about programming language are easily turing into religious affairs ;) I grew up with Object Pascal, turned to C++, now more into Swift for iOS (but still need to use Java now and then, Processing is a great mix, you don't see the disadvantages of Java there).

@msx80, great to hear you can test it soon ;)

Share this post


Link to post
Share on other sites

Citizen congratulations on your work, it helped me a lot, thank you thank you thank you...

I would appriciate if in the next release it is possible to:

  • Make comments in the page layout, eg. put an arrow indicating the direction of an assembly;
  • Change the background color;
  • Have a keyboard shortkey for step rotation (at least one for each direction), it tooks a lot of time to access the menu every time I need to rotate a assembly.

Congratulations and thank you again...

Share this post


Link to post
Share on other sites

Of course discussions about programming language are easily turing into religious affairs ;) I grew up with Object Pascal, turned to C++, now more into Swift for iOS (but still need to use Java now and then, Processing is a great mix, you don't see the disadvantages of Java there).

@msx80, great to hear you can test it soon ;)

Yeah programming language flames are all over :) Btw i also loved Object Pascal, Delphi was a super IDE. Made some videogames back then, i frequented Pascal Game Programming and other community :)

Citizen congratulations on your work, it helped me a lot, thank you thank you thank you...

I would appriciate if in the next release it is possible to:

  • Make comments in the page layout, eg. put an arrow indicating the direction of an assembly;
  • Change the background color;
  • Have a keyboard shortkey for step rotation (at least one for each direction), it tooks a lot of time to access the menu every time I need to rotate a assembly.

Congratulations and thank you again...

Thanks! Great to hear some compliments :) About your requests:

  • This will definitely happen, but first i have to finalize how page layout will work. That part need some serious redesign.
  • It can be done :)
  • Yes, others proposed that too.. It's actually a little complex to do becouse step boxes doesn't receive focus, so there's no obvious way to tell which step should rotate (and no obvious place to attach the keyboard callback). But i'll think something

Share this post


Link to post
Share on other sites

Yeah, you're totally right. Btw i love Java, never said i don't like it, it's currently my favourite language. I think it's a little more wasteful than it needs to, but up to an acceptable limit. But JavaFX.. man it sucks up a LOT of memory.

Btw, i located two people who could lend me a mac.. I hope to deliver sooner or later :)

Hello msx80 and thanks for wonderful program!

if you need beta tester on MAC (macbook pro retina 13 with yosemite and waiting for el capitan) considering me.. i will do every test you need :D

thanks

regards

Simon

Share this post


Link to post
Share on other sites

Well, I finally got round to using the program, and I've got to say, I'm very impressed so far! My only real bugbear with it is that pasting submodels, and undoing creation of submodels seems to be painfully slow (it can take >1 minute to put a submodel somewhere else in the layout) compared to other actions such as moving steps. A function to be able to move whole submodels (not just steps within submodels) like you can normal steps would be welcome (rather than having to cut and paste them, which as I said is very slow and can make the program unresponsive), as everything else I've tried doesn't get submodels to move. Unless there's something obvious that I've completely missed of course :blush:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.