[ Comments Request /PR ] Intuitive Automatic Windows/Doors + Equipment Placement

WOW, amazing progress! Now windows with general base-sketch-positions are supported! :smiley:
BTW can you please have a look at my attached nodel where I found a behavior that seams strange to me.
If I try to input a window on a wall with Align-property set to Right, all Offset-properties set to zero and AttachmentAlignment-property set to EdgeGroupWidthRight then IMO the resulting window position is shifted by half the wall thickness too much (in my example 40/2=20cm)
Thank you for your help and for putting all this energy in this topic!
@balrobs
Direct_windows_input_ArchSketch_r3.png
Direct_windows_input_ArchSketch_ r3.FCStd (183 KB)

Thanks and glad to know it works.

The answer to your question is simple - the code to tackle Wall / Wall Segment not Centre has not exposed yet - it is in my own chaotic file, yet need some more spare time to single out to the Github :smiley:


Before then, I am posting another use case example.

Just want to remind / highlight the ability of automatic placement is originally built-in ArchSketch.

So one may simply use an ArchSketch as Base of Window, and tell this ArchSketch to place itself as this thread show. In the ArchSketch -

  1. Ensure ArchSketch’s “Attach To Axis or Sketch” to “MasterSketch”
  2. Select ArchSketch “Master Sketch” to the Base Sketch of the Wall
  3. “Attachment Offset Extra Rotation” to “X-Axis CCW90” to make it upright

See ‘WindowWall’ object in attached file.

Just note -

  1. When the Base ArchSketch is already in desirable position, no need the Window to Attach anything, so
  2. Ensure Window’s “Attach To Axis or Sketch” to “None”
  3. Ensure Window’s Placement Position is (0,0,0), Angle (0)
  4. Ensure Window’s Host set to the Wall

You may think what is the difference with this workflow :smiley: - this is the workflow I use in some window wall in the Villa Savoye model.

Test_ Link_ ArchWindow_ 04h.FCStd (475 KB)
Screenshot from 2020-12-05 18-53-41.png
Screenshot from 2020-12-05 18-54-14.png
Screenshot from 2020-12-05 18-55-13.png
Screenshot from 2020-01-31 02-21-47.png

Thanks @paullee for clarification! I will wait patiently till your next goodie will be ready :laughing:
In the meantime I will study your new workflow. Therefore I downloaded your Villa Savoye model from github
https://github.com/paullee0/FreeCAD_Villa-Savoye/blob/master/Villa%20Savoye.FCStd
Loading it throws me following error

19:10:44  Traceback (most recent call last):
  File "<string>", line 1, in <module>
<class 'OSError'>: Invalid project file /home/balrobs/Desktop/Villa Savoye.FCStd: basic_ios::clear: iostream error

Any idea what could be the culprit?
Thanks again for your support.

OS: Ubuntu 20.04.1 LTS (ubuntu:GNOME/ubuntu)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.
Build type: Release
Branch: unknown
Hash: 53eb15fe50306294551f7a5fffcab218b7a4d13b
Python version: 3.8.5
Qt version: 5.12.8
Coin version: 4.0.0
OCC version: 7.3.0
Locale: English/United States (en_US)

Do Not right click to save link, find the download button to save the fcstd file.

Thanks @paullee, would never have thought of it alone.
Your model is just amazing.
I will study it carefully because I am convinced that I can learn a lot from it.
Kind regards

Thanks, just note I use a few of ‘experimental’ features, though ‘dangerous’ which are not yet available in the Github :slight_smile:

One question about the ‘Attachment Alignment Offset’ - the direction of offset is different when the figure is +positive, or -negative, fine; but now it seems to me the direction of offset should be in Opposite direction by intuition.

What do you think ?

Thanks :slight_smile:

I would agree. Would expect the window to move in the opposite direction by entering a positiv ‘Attachment Alignment Offset’ value too.
Cheers

Thanks for the comment :slight_smile:

Because of trying to build some furniture, a table with a few chairs, start thinking how they could group and move together. Library of Coloured Textured Wall / Furnitures / Floor Finishes / Light ?

Tried App:Part, and now the feature allow to attach an object to another object the latter of which without an underlying Sketch:-

Workflow to Attach an ArchEquipment to another ArchEquipment

  • Example : 1 Table + 4 Chairs
  1. Select the ArchEquipment of the Chair
  2. Set AttachToAxisOrSketch : Hosts
  3. Set AttachToSubelementOrOffset : FollowOnlyOffsetXYZ&Rotation
  4. Set Host : ArchEquipment of Table
  5. Now set Attachment Offset XYZ & Rotation : e.g. X : -500, Y : -900
  6. Create several Links to the ArchEquipment of Chair and repeat above setting

Now move ArchEquipment of the Table, all Chairs move like a group. Turn the Table Visibility on/off by space bar, the whole set of furniture including the chairs turn on /off altogether.


SketchArch WB / Python Updated

  1. SketchArch WB in https://github.com/paullee0/FreeCAD_SketchArch
  2. Or simply replace with below 1 file
    ArchSketchObject.py (51.2 KB)
  3. Replace ArchEquipment.py
    ArchEquipment.py (17.3 KB)

Table_and_Seats_01.FCStd (82 KB)
Screenshot from 2020-12-13 03-00-47.png

Sorry, found a series of regression, hang on :blush:

Not sure all regression fixed, anyone would like to help testing ? :smiley: (Seem still some problem if wall placement not (0,0,0)(0) )

SketchArch WB / Python Updated

  1. SketchArch WB in https://github.com/paullee0/FreeCAD_SketchArch
  2. Or simply replace with below 1 file
    ArchSketchObject.py (52.4 KB)
  3. Replace ArchEquipment.py
    ArchEquipment.py (17.3 KB)

More fixes :laughing:

SketchArch WB / Python Updated

  1. SketchArch WB in https://github.com/paullee0/FreeCAD_SketchArch
  2. Or simply replace with below 1 file
    ArchSketchObject.py (53.1 KB)
  3. Replace ArchEquipment.py
    ArchEquipment.py (17.3 KB)

Test_ Link_ ArchWindow_ 04i.FCStd (319 KB)
Screenshot from 2020-12-16 02-06-21.png

Youtube demo

Grouping of Arch Equipment Automatic Placement

Attaching 4 Chairs to a Table

https://youtu.be/uGY1ScR_Fxo

Is there any synergy between this development and the various kinds of assembly workbenches? To me it looks like they are trying to solve the same issues, but from different points of view. Your system seems to be much simpler to understand. The assembly workbenches on the other hand are more powerful with regards to what they can achieve.

For FreeCAD as a whole, I believe it would be beneficial to unify similar workbenches to reduce unnecessary diversity. Having a lot of features is a good idea, but if there are many different ways of somewhat (but not exactly) achieving the same goal, it makes teaching and learning FreeCAD more difficult. Having one powerful assembly/placement module that can deal with both assembly of parts and placement/alignment of architectural features would be ideal.

I think to improve ArchWB with some improved basic features, does not overlap the features of other more advanced WB. In a workflow, it is more practical if you keep working with one WB when you don’t need more complex operations.

This part, to me, sounds like the usual assembly problem. I have to parts I want to assemble/place in a certain orientation to each other. The offsets are constraints to be adhered to.



In fact, there is some indirect synergy - peoples like @abdullah etc. are helping somehow :slight_smile: I started this by using the Attachment Extension - to my understanding one of the foundation for assembly.

Then I find there are a lot of thing they wouldn’t do - like placing Door 200mm from corner of a Wall, a Bed or a Fireplace (maybe an ArchEquipment) against that Wall, a Room (maybe an ArchSpace) etc. That’s some semantic meaning / architectural spatial concept about that placement that are beyond topological attachment / assembly.

In fact, I am like building something a layer on top of the current Attachment Extension - translating the common architectural terms (being an architect) into Attachment Extension (but I am only a python beginner, so no knowledge about FC corecode, C++ etc.)

Maybe you can test and comment what is a better workflow etc. ? Thanks :smiley: