LDraw.org Discussion Forums

Full Version: LDCad 1.4b (win+linux)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Due to a very nasty bug I'm releasing the 1.4b version only 4 days after 1.4a, it's a new record Smile

This only difference in this version to the previous one are two bugfixes related to path content.

You'll find the update here:

http://www.melkert.net/LDCad/download

If you don't want to do a complete reinstall (e.g. due custom modified bin/gui files) you can also upgrade to 1.4b by getting the archive version and manually coping the main executable inside it over the 1.4a one at your install location.

Hopefully this version will last longer.
User interface wishes...
- I think that when you change filter field the parts scroll bar should be reset to top (often wonder why I don't see the part I look for because I begin to scroll down...)
- When I switch to another program window and come back to LDCad, the 1st click activates LDCad window but doesn't do the action (eg. when clicking on a toolbar button). This can be considered a design choice, but next clicks on the same button are not active either unless you move mouse.
- I wish I had a "move selection to current step" in reorganize menu
...of course these are only wishes Wink
(edit) I also have issues figuring in advance what will be the rotation performed by arrow keys / pgup pgdn when placing a part. I think it would be easier if orientation was fixed (eg. left-right aways rotate around world Y axis), regardless of view direction. I know I can toggle auto editing plane, but it's too convenient with move or rotate tools...
You are right the filter should cause a scroll reset, I'll change that for the next version.

The program switch protection is in place as it caused problems (more so in Linux) not doing so. I'll see if I can improve it so wont' need to wait for a mouse move.

"move selection to current step" is already in the reorganize menu, the first item, it's called "move to step". It opens a submenu listing all steps (which you can pin if you have multiple selections to move). A follow up click on any of those step numbers will move the selection there.

The new part rotation currently tries to map the keys in releation to the view direction, so up/down is always horizontal rotation, left/right vertical and pgup/pgdn 'clock' rotation. But this is not always perfect as it depends on the parts orientation and camera etc. I do agree it's not perfect though, as I too sometimes need to do a couple of wrong rotations before getting it right. The home key might help as it resets the part rotation to the current grid orientation.

I'll see if I can improve and or add an option like you described to this feature.
Quote:"move selection to current step" is already in the reorganize menu, the first item, it's called "move to step". It opens a submenu listing all steps (which you can pin if you have multiple selections to move). A follow up click on any of those step numbers will move the selection there.
Yes, I use that. What I meant is really "current" step, I find it convenient to select parts, move to the step where they should be and then place parts in current step. This offer visual feedback that a single step number doesn't provide. Now I am aware that this works nicely only to move parts to a later step, so it may not be such a good idea...
(edit) maybe the solution could be - with current move to step implementation - to scroll and highlight current step in the list...
I completely read over the 'current step' part, sorry.

I'll add the option to the reorganize menu as it's a simple variant of the other moves.
I also like your idea of highlighting the current step in the step list menu, so I'll add that too.

Thanks.
Hi all,

At the moment I haven't got the time to make some real progress with 1.5, so I decided to put some time into setting up better documentation as I can do that in smaller blocks of time.

It's a work in progress but I've rewritten the getting started page and created a general gui introduction page as the first part of a full manual which will replace the old quick manual in time.

Over the next couple of days (weeks) I'll be adding more and more pages but I was wondering if people could proof read along and or give me some pointers on the content etc.

Also if anyone would like to see some specific subjects / tasks documented let me know.
I like documentation, I have a bad habit of doing things the hard way. I'd love to read it.
I've added (the start of) the FAQ page

Feel free to post additional questions you like to see answered on that page here.
You are doing a very useful job here Wink

A few typos...
in Getting started page:
- Windows LDraw AIOI Probalby the easist -> Probably the easiest
In GUI intro:
- (icons) Go to the fist building step of the current model/li> (/li> at the end, same on few following lines)
- (parts bin) ether links to groups or things -> either links to groups or things
- (parts bin) In order to get the hang of the part bin it self -> In order to get the hang of the part bin itself
- (editing) It will load the LDCad mascot model you'll probably seen -> It will load the LDCad mascot model you've probably seen
- (editing)therefore to big a subject to do in this general GUI introduction. It will off course -> therefore too big a subject to do in this general GUI introduction. It will of course

About icons: Manual selection move/rotation/center move, maybe numerical instead of manual would be better?

In FAQ:
- (red crosses) or it's not available readable at all -> or it's not available or readable at all (???)
- (red crosses) would be to reset the (main.cfg) LDCad configuration -> would be to delete the (main.cfg) LDCad configuration (???)
- (red crosses) re-asking of the LDraw library at it's next start up -> re-asking of the LDraw library at its next start up
- Where does LDCad keep it's configuration files? -> Where does LDCad keep its configuration files? (I remember the early days of my website, a guy contacted me about the confusion I made often between "it's" and "its" Wink - there are a few more instances of this one later on in faq.
Thanks Philippe, I've fixed your findings.

Pretty obvious the thing about it's and its but somehow I almost always automatically type it's. I used to do the same thing with your and you're Smile
I have a question.
Is it possible to use the rubber band templates to transform the rubber band instead of only making the circle larger or smaller (a bit like how the pneumatic hoses or flex axles can be transformed in LDCad)?
For example, if I want to make a connection between two technic bushes, I need a long, more straight band instead of just a normal circle.

Is that currently possible with LDCad and if so, how exactly?
You mean deform like in this picture:

http://www.melkert.net/img/mel/screenShot07.png

If so you just add additional 'circles' for that by selecting an existing one and pressing the ins key. Also keep an eye on the current grid plane (e.g. side view etc).
Yes, exactly like that. For some reason I can't get it to work (although I have the feeling I'm the problem and not LDCad Wink ).

I tried the ins key again (I already tried that, since it's also used for other flexible parts). This time though, something happened instead of just nothing: a 2nd rubber band appeared. Just a normal, standalone rubber band. I tried the ins key again, and the second rubber band started to transform, but the first didn't.

I closed LDCad, opened it again, started a new model, inserted a new rubber band, tried the ins key again, but nothing is appearing, just like before.

Do I have to select a certain part of the rubber band to make it work?
Ins will always insert the last used part / duplicate the selection so you might have not selected a circle last.

Also as the rubber band you drop into your model lives inside it's own ldr, so you must make sure you are editing that model or use the nested editing mode from the top level model.

Nested editing will be the easier way as you keep your whole model in view. You go into nested editing mode by selecting its tab in the top right session label panel.

I know nested editing can be confusing (I've been told Smile )

The pneumatic hose tutorial clip on youtube might give some insight into using nesting mode.

I'm also in the midst of writing documentation about generic (nested) editing.
I'm 100% sure I have the circle rubber band selected.
I've tried both the rubber band ldr and the nested mode.
I've also watched the youtube video ( a few days ago already actually) and unless I'm just being blind, I'm not doing anything wrong.

One thing that just started appearing when I press ins while having the rubber band selected: a little box with the text "click anywhere to insert a new skin meta". Is it maybe that I have accidently turned a setting on/off that causes it to not work (seems unlikely though, since other flex parts are just working)?

I find it really annoying that I can't get it to work. Don't get me wrong, it's not your fault, I just have the feeling that I'm being a bit stupid and completely missing something Wink
Seems you are on the right track as the 'click anywhere...' message can only appear when you are working at the band level.

But apparently you clicked the skin (rubber band itself) last, so you are inserting/duplicating invisible control metas (those control how the rubber band segments are generated).

To change the band shape, you need to duplicate / add control points. Which you do by clicking the red/green/blue crossed center of the white placeholder circles (I thought you mend those when writing 'circle').

edit: talking about stupid I just noticed I connected the pneumatics wrong in that tutorial clip Smile
Ah! I found it. I have to select the center of the cirle, where the 3 little arrows are. I was constantly trying to select the band itself or selecting one of those yellow balls. I was pretty sure though, that I already tried it numerous times by selecting the center.

Well, anyway, I got it working. It's actually even more powerful than I was expecting. You really did a great job on the creation and editing of flexible parts. It's going to save me tons and tons of time! Thanks!
Just got a crash when trying to create a very complex group in nested mode, that included parts from main model, parts from a submodel and (this is probably the source of crash) all parts of a shock absorber, inserted as a template and used twice in the group.
Fortunately I somehow expected problems with this nightmare and saved before Wink
Angles, angles everywhere...
- Is there a way in LDCad to get the angle you must rotate a part with some offset between ends (typically a shock absorber in a suspension)? Nothing fancy of course since it is simply (**) arcsin(offset/length)
- it would be nice to display (in selection property) the angle of a part (selection) in working plane
- What about having a stepless rotation mode with part snapping enabled?

(**) Maybe not so simply after all...
Shock length is 110 ldu, offset is 20ldu, giving an angle of 10.47°. I select the shock, press O to get local orientation, then enter value in rotation tool. Visually, it's too far away, and when I check the angle using selection info, I read 13.18°. What happens???

[attachment=1495]
You are right it's probably the shock parts as those have slightly different processing when grouping etc. I'll try to reproduce it and fix it for the next version.

In the meantime you can probably avoid the problem by not putting (generated) template parts in groups and instead add their reference. You add the whole shock as one to a group during nesting mode by 'excluding' it. To do that click any of it's parts and click exclude selection from the menu or press 'e'. It will then behave as a single model / part again even during nesting.
Philippe Hurbain Wrote:Is there a way in LDCad to get the angle you must rotate a part with some offset between ends (typically a shock absorber in a suspension)? Nothing fancy of course since it is simply (**) arcsin(offset/length)
I usually put a tmp axle or something somewhere in a streight line from the rest position and dest position. And then use those combined with the base of the spring. After the rotation you can use ''o' to move the shock's length by the difference in length (blue info labels minus the starting length). I'll add a selection info mode for getting that difference in the next version.

Philippe Hurbain Wrote:it would be nice to display (in selection property) the angle of a part (selection) in working plane
I'm not sure what you mean, to get any angle you need a reference which is usually at least two vectors. The selection info uses the two sides of the triangle for that but I don't have that info with editing plane orientations.

Philippe Hurbain Wrote:What about having a stepless rotation mode with part snapping enabled?
I wanted to write it's allready there but for some reason disabling the grid still applies stepping to rotations. I'll correct that in the next version.

Philippe Hurbain Wrote:Shock length is 110 ldu, offset is 20ldu, giving an angle of 10.47°. I select the shock, press O to get local orientation, then enter value in rotation tool. Visually, it's too far away, and when I check the angle using selection info, I read 13.18°. What happens???
Is/was selection info set to be relative to the editing plane? You could get slightly wrong values if it's not as it measure the angles of the selection 'triangle' otherwise.

Could you post (or email me) the model in it's current state so I can see exactly what you are trying to do.
Mmhhhh... "e" seems to do nothing - or I don't use that properly. Does pressing "e" change something in the way selection is displayed? Anyway I still get the crash.
Quote:I'll try to reproduce it and fix it for the next version.
Very easy, just a part and a shock absorber is enough.
Sorry it seems exclusion is also somewhat broken combined with spring templates. It currently only seems to work when using 'e' while the spring part is selected during nesting.

I might do a 1.4c version for these problems as 1.5 is still far from stable it self Sad
Roland Melkert Wrote:After the rotation you can use ''o' to move the shock's length by the difference in length (blue info labels minus the starting length). I'll add a selection info mode for getting that difference in the next version.
Ah - yes, a good method for a shock absorber. But that wouldn't work for a fixed length part (typical example: links between ball pins).

Quote:I'm not sure what you mean, to get any angle you need a reference which is usually at least two vectors. The selection info uses the two sides of the triangle for that but I don't have that info with editing plane orientations.
OK, what I had in mind is meaningless. Kind of "absolute angle" projected in working plane. The purpose was to be able to rotate a part the same way as another. But I now realize that there is a much simpler way using local axes and ctrl+home...

Quote:Is/was selection info set to be relative to the editing plane? You could get slightly wrong values if it's not as it measure the angles of the selection 'triangle' otherwise.
Could you post (or email me) the model in it's current state so I can see exactly what you are trying to do.
I think I did the things well. At least the rotation window (see screen shot) says "current editing plane rotation". Two things I am sure:rotation angle value is correct, and rotationresult is wrong (regardless of display value, but this value seems right!)

I'll send you the model tomorrow (don't have it here).
I did some quick debugging and it seems both this issue and the grouping one are caused by the auto group(s) in the spring part. you can therefore prevent both issues by ungrouping the spring parts first (ether in their own subfile or through nesting).

Hope that at least lets you do what you originally intended to do.
I think I might know what's going on here.

The selection info angles (while rel to grid) are measured against the imaginary 2D plane of the grid, when the shock starts out in some odd orientation and you gather the sel info in that state you actually measuring it as if the shock was in abs/grid orientation.

If you then change the grid to match the shock in order to do the rotation you will get the wrong result as the angles had the wrong reference.

In short you need to set the grid orientation to the same plane as the segment it most be rotated over. The is usually done by setting the grid to the shocks orientation before getting the angles.

Hope this is somewhat clear.
Quote:In short you need to set the grid orientation to the same plane as the segment it most be rotated over. The is usually done by setting the grid to the shocks orientation before getting the angles.
Mmhhh... I set grid orientation to shock before rotating it, so angle is set (and measured) in the same coordinate frame. And the problem is not a measurement one, but a rotation one, the shock is really rotated by a greater angle than the on calculated.
Quote:Hope that at least lets you do what you originally intended to do.
No problem, I did it another way (removed parts from the submodel that forced me to do nested edition, made the rotation in normal mode, and replaced rotated parts in the submodel).
Very frustrating I'm still not sure what the underlying problem is but I'm reasonably sure it's not a bug in the rotation dialog.

Is this an official model, if so what's its number? I would like to setup that suspension myself later tonight in order to ether find a bug or the reason for this behavior. I'm a sucker for these kinds of puzzles Smile
It's the 42038 Artic truck...
Ah that's a though one indeed. There are multiple variables in play.

I think the main problem lies in the fact angles change when the shock length changes, because it's using a non aligned hinge.

During a quick test using a mockup I think this problem needs additional selection info to help calculate the needed shock length as it's actually a side of a triangle in this case. It's like the triangle sel info while having the angles but not the lengths.

So in order to solve the whole assembly problem you first need to get the length of the shock assembly (in my example) from 150.33 to 162.4. Afterward you can rotate it towards it destination on the steering hub

see pic 1

I'm cheating a bit and just move the whole steering stuff so the shock doesn't need resizing, something you can't do your model due to other contrains, you'll have to do the math Wink but it won't matter for the following.

Next you move the 92207 part and its axles 20ldu. Set the grid to the shock ori and rotate it 10.3 deg (I have the same angle as your because I cheated with the shock length) using its natural hinge.

see pic 2

Set the grid to the new shock orientation again and change it's length to match the sell info distance (111.8 in my case so a rel y move of 1.8)

see pic 3

side note: I wish the forum auto rized pictures again Sad
OK, I tracked down the problem, a VERY funny one Wink
Say I want to rotate something by arcsin(0.55), about 33.367. Enter that value in manual rotation field, verify the resulting rotation with selection info - perfect!
Now for more precision (???) calculate a more precise arcsin value using Windows calculator, you get a whooping 33 digits value (33.367012969231750012250966510535), copy/paste that in manual rotation value field... and... arghhl, when you verify rotation value in selection info, you get 35.07450 degrees! So it turns out that manual rotation doesn't like getting too many decimals!

Now just for the fun, enter an intermediate precision value (33.36701296923175001225096). Here the rotation almost reaches 90° (86.51408°)!!!

Hilarious, isn't it? Wink

And - Yipeee! I now have a perfect fit in my model (current state attached)
Philippe Hurbain Wrote:Hilarious, isn't it? Wink
You got a weird sense of humor.

Thanks for tracking this down. Now I think about it, it's kinda logical as I'm handling the string to double conversion myself using 64 bit integers etc. So there is probably some overflow at play around the 64 bit number range.

I'll limit the input field and or try to improve the conversion code for additional precision (e.g. 128 bit).

ps: sorry I doubted your rotational skills Smile
Roland Melkert Wrote:You got a weird sense of humor.
Indeed Wink
Quote:ps: sorry I doubted your rotational skills Smile
No problem, now completed without further problems. Again the flex part creation made wonders for string and tracks!!!
Philippe Hurbain Wrote:No problem, now completed without further problems. Again the flex part creation made wonders for string and tracks!!!
No thanks,

Minor detail I downloaded the model and noticed the spring meshes are listed in the mpd content group (So LDCad does not consider them maintained LDraw code). This is because MPDCenter changed the model names but as it is not aware of the LDCad meta's it did not update the connection between the shock part and its spring sub part. As a result you will end up with duplicate spring meshes the next time you save the model after spring regeneration.

You can prevent that by changing the spring part names inside LDCad before running MPDCenter. Or update the link by hand after MPDCenter has been run look for lines like:

Code:
0 !LDCAD GENERATED [generator=LDCad 1.4b] [master=shock-06_5L-soft-2.ldr]

And update the master part to the new name "42038 - shock-06_5L-soft-2.ldr" in this case.
Ah, got caught again with this one.... I'll update file!
I've added a page about basic editing, I hope it's somewhat understandable as I find it somewhat difficult to describe the process. I might add a youtube clip showing the same things as described to make it more understandable later.

With this page I think the old short manual can be dropped as it offers no additional info, next I will be working on an 'advanced editing' page dealing with submodels / MPD / nesting mode and flexible parts etc.

Any comments / suggestions are welcome.
File updated. What about a LDCad option to assist OMR compliant MPD generation? As far as I can tell, it could be as simple as a field asking for a set number when starting a new model, and prepend that set number to all files in mpd. Of course if field is left empty LDCad would fold back to current behaviour.
Yes, maybe some sort of mass renaming / beautify tool (incl unoff part packing). Not sure if I will add it in 1.5 though, as its to todo list is getting bulky Smile
Hi Roland.

I've finally found the time to have a go with LDCad. It certainly has come a long way since I tried to break it by loading calc.ldr in the 1.0 public alpfa release!
I'm really impressed with the Relative Grid, and the Selection Info option (once I was able to find it!).

Of course, I now have a couple of suggestions.
* In the Manual Movement/Rotation boxes (and presumably in other dialogs as well), it would be nice if the Enter key was bound to the Apply button so that I didn't have to tab several times to get the button in focus or use the mouse to close the dialog.
* Somewhat similarly, the Reference/Selection properties (the one that comes up when you hit Enter with a selection) looks like the Apply button is the default action, but hitting Enter closes the dialog without applying any changes.
* In the parts bin, it would be really nice to have some visual indicator of which items are parts (that I can put into my model) and which are groups of (possibly other groups of) parts. It's can be particularly confusing when the icon for a parts group is the same as the picture of a part. I know that I can look at the status bar and if it has a part number in parentheses, then it's a part not a group, but that's a relatively large amount of mental effort (I have to look at a different part of the screen, and I have to parse the text there)
* Everything else I had has either already been brought up in either this or a previous thread, or else it's something that I'm sure is a non-issue (like a shortcut key that probably already exists). Seriously, almost every time I've thought "this program really needs Feature X", I find that Feature X is there after all - I was either looking in the wrong place, or I hadn't understood what the option did.

It should be noted that I didn't stray at all into the advanced features like flexible parts or animation.

Looking forward to what I've seen of 1.5!

Owen.
Owen Dive Wrote:[...]
* In the Manual Movement/Rotation boxes (and presumably in other dialogs as well), it would be nice if the Enter key was bound to the Apply button so that I didn't have to tab several times to get the button in focus or use the mouse to close the dialog.
[...]

I second this. It's very annoying when I manually input some rotation/transformation data using the numpad and then hitting enter automaticly. Instead of applying the new data it just closes the dialog without doing anything.
It's especially annoying because I'm constantly hitting enter automaticly without even thinking about that I shouldn't do that Wink
Probably no need to third, but... I agree!
I am the fourth Smile
Owen Dive Wrote:I've finally found the time to have a go with LDCad. It certainly has come a long way since I tried to break it by loading calc.ldr in the 1.0 public alpfa release!
Hi Owen, been a long time indeed.

Owen Dive Wrote:* In the Manual Movement/Rotation boxes (and presumably in other dialogs as well), it would be nice if the Enter key was bound to the Apply button so that I didn't have to tab several times to get the button in focus or use the mouse to close the dialog.
* Somewhat similarly, the Reference/Selection properties (the one that comes up when you hit Enter with a selection) looks like the Apply button is the default action, but hitting Enter closes the dialog without applying any changes.
You are right I will setup default actions for all dialogs in the next version.


Owen Dive Wrote:* In the parts bin, it would be really nice to have some visual indicator of which items are parts (that I can put into my model) and which are groups of (possibly other groups of) parts.
I like this idea, maybe I'll add some small icon to group cells as I'm already planning to add some other indications to the bin cells anyway. Might not be in the first 1.5 beta though, but maybe the second or so.


Owen Dive Wrote:Seriously, almost every time I've thought "this program really needs Feature X", I find that Feature X is there after all - I was either looking in the wrong place, or I hadn't understood what the option did.
I'm working on documentation, added basic editing last week so the more hidden features will be next. But if you have any thoughts on how to improve the accessibility of those features let me know. The menu structures aren't set in stone and it's also possible to have certain items at multiple places which might help.

Thanks for the feedback.
Another little (?) wish: Double clicking on a part in parts bin currently replaces selected part. Good thing... But I'd like (when no part is selected) this double click to create a new part placed and oriented like the last selected one. This would help with parts with no connectivity, we would start in a known place then use move/rotate tools. Dragging a new part from parts bin is not so convenient, especially when using a fine grid. On a new model/submodel (thus with no previous part selected) the new part would be created at origin with default orientation.
And probably pressing insert while hovering over parts bin should do the same as double click.
I like the ins key suggestion.

Inserting parts without something selected isn't a big deal I'm just a bit concerned the less experienced user might end up with lots of duplicate parts at the same location. So I'll add it as an option disabled by default.

Thanks for the suggestions.
Quote:So I'll add it as an option disabled by default
Seems wise!
I've added a technical section which, over time, will contain info about all configuration files and LDCad specific LDraw meta's.

Starting with the color bin configuration files.

I also changed the general layout of the site and merged / split / moved some content around.

If anyone would like to see a particular config file or meta explained before the others let me know as it could take awhile for me to document everything Smile
Found some time to finish the technical info about

part bin configuration files

It documents everything about the *.pbg files including things never used in the default part bin groups. Things which as a result of that might not have been fully tested yet.
Found a bit of time for some more reading... Mainly trivial typos but... (as I am not a native English speaker either, I can be wrong sometimes... or I may have let things get through!)

- In Bins preparation, shouldn't "(e.g. Technic of Creative)" be rather "(e.g. Technic or Creator)"?

- End of Camera control: " it is therefor possible to set rotation control to the more a beginner friendly spin method " -> "it is therefore possible to set rotation control to the more beginner friendly spin method" and "But please don't give up to quickly" -> "But please don't give up too quickly"

- Start of Editing Compass: "ignored the briefly discusses compass in the left bottom corner." -> "ignored the briefly discussed compass in the left bottom corner." . Later on: "as a result of the grid using to large a step." -> "as a result of the grid using too large a step.". At the end: "and is therefor one of the most important things during editing." -> "and is therefore one of the most important things during editing."

- Building using parts snapping: "You might wonder way I wasted your time" -> "You might wonder why I wasted your time". Then "is set to manual (MEP) while part editing is enabled" -> "is set to manual (MEP) while part snapping is enabled" (I guess?). "as it large influence how LDCad tries to 'guess' part " -> "as it has a large influence on how LDCad tries to 'guess' part" (I guess too?). "While adding bricks you willt need to rotate parts" -> "While adding bricks you will need to rotate parts". "(as long things are at 90 deg angels." -> "(as long as things are at 90 deg angles).". " select the first angles brick again." -> "select the first angled brick again." "being it's rectangular in relation to the angles brick." -> "being it's rectangular in relation to the angled brick."

- Conclusion: "get more and more use to things" -> "get more and more used to things". Then "most out of the LDraw format. Things step editing, using submodels (MPD) and flexible parts." -> most out of the LDraw format, like step editing, using submodels (MPD) and flexible parts." (?)
Pages: 1 2