Page 1 of 1

Arrays, snap and origins

Posted: Mon Jul 08, 2019 11:30 pm
by nohspamjose
Hi,

Having used FreeCAD 0.18 to fairly comprehensively CAD my bathroom, I have come across at least three issues for which I'd like to propose enhancements. It's entirely possible that some/all of these are possible but even if they are, the usability is impenetrable to me.

Arrays
  • When I want to tile something (ceramic tiles), I created a prototype tile, copied it and then created a rectangular array, separating the tiles by the grouting distance. There are several shortcomings
  • The array of tiles (like the real thing), is highly likely to extend beyond the boundaries of the surface, particularly for non rectangular shapes, such as a floor - I suggest being able to use a shape that shares the tiled plane, as a clipping mask for the array.
  • The array should include and visually differentiate the original prototype item being cloned in the array - modifications to that original should be propagated across the array.
  • Options, such as space between (in x, y or z dimensions) could be specified as a fixed, proportional or calculated value, so that the recalc on the mod of the original item can be achieved dynamically.
  • The array of items should include a relative offset or a means to centre a space or an item relative to another shape in one or more of the x, y and z dimensions) - like tiling a bathroom.
  • 3D arrays. This may already be available.
Snap & Origin
  • When creating or adding/importing an item, I really want to be able to snap it to another item
  • This leads me to the origin. I really need to be able to specify an item's origin and it should be easy to specify it in terms of an intersection, centre of a selected edge, centre of gravity, a universal drawing origin, another item's origin (particularly useful for an assembly, I think) or presumably a bunch of others.
  • An ability to programatically rationalise the various different origins in an assembly or group, to share a single origin. If I construct an engine block, for example, I should be able to assign a common origin to a group of primitives, while I'm working on them as a sub-part of the block and do that for all the groups but at the end consolidate the origin for the whole engine block

Re: Arrays, snap and origins

Posted: Mon Jul 08, 2019 11:52 pm
by chrisb
Hi and welcome to the forum!

Some of your proposals are already implemented:
nohspamjose wrote: Mon Jul 08, 2019 11:30 pm The array of tiles (like the real thing), is highly likely to extend beyond the boundaries of the surface, particularly for non rectangular shapes, such as a floor - I suggest being able to use a shape that shares the tiled plane, as a clipping mask for the array.
You can extrude a clipping sketch and use a boolean common operation to clip.
nohspamjose wrote: Mon Jul 08, 2019 11:30 pm The array should include and visually differentiate the original prototype item being cloned in the array - modifications to that original should be propagated across the array.
You should use the tree view for that: The original prototype is the element below the array item in the tree. Edit it and the changes will be propagated across the array.
nohspamjose wrote: Mon Jul 08, 2019 11:30 pm 3D arrays. This may already be available.
It is available. You can array an object in X, Y, and Z dimension.

Re: Arrays, snap and origins

Posted: Tue Jul 09, 2019 10:54 pm
by nohspamjose
Many thanks for the update. The one that isn't implemented; offsetting an array would be very useful. Using the tiling example, it would allow me to accurately plan the tile arrangement and also align tiles on the floor plane and wall planes.

Re: Arrays, snap and origins

Posted: Tue Jul 09, 2019 11:33 pm
by Kunda1
nohspamjose wrote: Tue Jul 09, 2019 10:54 pm Many thanks for the update. The one that isn't implemented; offsetting an array would be very useful. Using the tiling example, it would allow me to accurately plan the tile arrangement and also align tiles on the floor plane and wall planes.
Please check the bugtracker to see if this feature request exists, if not then create it and link to this thead (and x-post back to the ticket)