[SOLVED] Wall position is independent from sketch. How do I make it dependent?

A forum dedicated to the Draft, Arch and BIM workbenches development.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
Moult
Posts: 321
Joined: Sat Jan 05, 2019 11:46 am
Contact:

[SOLVED] Wall position is independent from sketch. How do I make it dependent?

Post by Moult »

I recently noticed that if I create an arch object (say, a wall), then move the wall, the sketch stays where it is.

Although I understand how this is incredibly flexible, I find it quite jarring. It means that my sketch could be very far away or offset from my wall, which makes editing unintuitive. I understand how there are usecases for this (e.g. modeling a railing which needs an offset), but for the most part, wouldn't it make more sense to move the sketch too when I move the wall? How do I do this? I don't see a "moves with host" option (I guess because the wall isn't a host).

At the moment, if I wanted to maintain the sketch<->wall relationship I need to make sure to only move the sketch, and not the wall. This is very difficult with a draft line because it seems I can only move a draft line one vertex at a time (I can't seem to select an edge), and with the Sketcher feature, it lacks the ability to move a sketch by a specific dimension locked to an axis quickly (I can do it slowly by adding construction lines and constraints, I guess).

Hoping to learn what I am doing wrong.
Last edited by Moult on Fri Feb 08, 2019 9:17 am, edited 1 time in total.
I also blog about 3D rendering, architecture, software and other on thinkMoult.com. RSS / Atom feed available for your convenience.
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: Wall position is independent from sketch. How do I make it dependent?

Post by paullee »

Moult wrote: Sat Jan 19, 2019 11:28 am I recently noticed that if I create an arch object (say, a wall), then move the wall, the sketch stays where it is.

Although I understand how this is incredibly flexible, I find it quite jarring. It means that my sketch could be very far away or offset from my wall, which makes editing unintuitive. I understand how there are usecases for this (e.g. modeling a railing which needs an offset), but for the most part, wouldn't it make more sense to move the sketch too when I move the wall? How do I do this? I don't see a "moves with host" option (I guess because the wall isn't a host).

At the moment, if I wanted to maintain the sketch<->wall relationship I need to make sure to only move the sketch, and not the wall. This is very difficult with a draft line because it seems I can only move a draft line one vertex at a time (I can't seem to select an edge), and with the Sketcher feature, it lacks the ability to move a sketch by a specific dimension locked to an axis quickly (I can do it slowly by adding construction lines and constraints, I guess).

Hoping to learn what I am doing wrong.

The current Arch/BIM behaviour is:-
  1. If create an Arch Object based on an underlying Base object, the Arch Object would have a placement of '0,0,0' - by memory, correct if wrong
  2. If you move the underlying Base object of an Arch object, the Arch Object 'move' together - as the Arch Object is 'constructed' based on the Base object taking into account of its Placement
  3. As you said, if you move an Arch Object, the underlying Base object like DWire / Sketch / etc. won't move but only the Arch Object - as you are 'adding' placement on top of the 'original Arch object'
Personally, I also want to have another 'mode' for ArchWall's behaviour (- due to my very limited knowledge in Python / programming / FC and time, I have not attempted to add / tweak the ArchWall code after attempting to understand it.)

I would like the Arch Object won't move even though the underlying Base object move. See if you would like to add some code and Yorik accept it :)
User avatar
yorik
Founder
Posts: 13630
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Wall position is independent from sketch. How do I make it dependent?

Post by yorik »

PartDesign does as you say. For example if you build a Pad on a Sketch, you cannot move the Pad directly. Only by moving the sketch.

We could easily make it that if you move the wall, you are in reality moving the underlying 2D object. However, what if another object is based on that 2D object? We would then need to change quite a lot of paradigms, prohibit having more than one object built from a same 2D object, etc. I think this would bring as many disadvantages than advantages. Simplifying should never be at the expense of power and freedom.

I'd rather favour another path, which is what I'm currently doing with the Stretch tool. Try it on any BIM object, it basically allows you to edit the underlying 2D object "transparently". Ideally, when our tools will reach a decent state, a new user would be able to forget entirely that there is an underlying 2D object, and modify the BIM objects directly. But working with the 2D objects directly would still be there for advanced users.

The final aim would be to have something between the stretch tool and the draft edit tool, you click/edit a wall, you'd be able to move it's underlying points...
User avatar
Roy_043
Veteran
Posts: 8410
Joined: Thu Dec 27, 2018 12:28 pm

Re: Wall position is independent from sketch. How do I make it dependent?

Post by Roy_043 »

Related issue:
If a wall is moved as a result of moving its base, windows (Move with host = true) inserted in the wall are left behind. If, on the other hand, the same wall is moved independent of its base, the windows follow (but their sketches are left behind). The base of the wall can be a Draft line or a sketch.
User avatar
yorik
Founder
Posts: 13630
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Wall position is independent from sketch. How do I make it dependent?

Post by yorik »

Yeah that's logical, the placement of the wall didn't change, so the windows are not triggered. I'm not sure we should in this case, actually...
User avatar
Moult
Posts: 321
Joined: Sat Jan 05, 2019 11:46 am
Contact:

Re: Wall position is independent from sketch. How do I make it dependent?

Post by Moult »

I think we agree the following:

1. If the base and the object are displaced, then editing becomes unintuitive for the user because the visual feedback of moving something here, instead moves the result somewhere else.
2. Right now, it takes multiple clicks to select an object's base, and so although a user can take care to select the base and move that instead, it is not user friendly. This problem is exacerbated when there are multiple hosted objects, each with their own base, which the user must all select in turn.
3. We cannot do what partdesign does and disallow selection of the object as that then requires multiple clicks and is not user friendly to quickly modify shapes
4. In some scenarios, it may be useful to have a displaced base and object, so we shouldn't remove the underlying flexibility / functionality.

I propose:

1. Add a new property called "Move base", similar to "Moves with host". It is set to TRUE by default, and it means that by default the object stays at 0,0,0 and transformations are done to the base.
2. Set "Moves with host" to TRUE by default. People can set to FALSE if needed, but TRUE is the more common scenario.
3. Make sure that if I move a host's base (I.e. the host has "Move base = TRUE"), all hosted bases are also moved with the host.
I also blog about 3D rendering, architecture, software and other on thinkMoult.com. RSS / Atom feed available for your convenience.
Renato Rebelo
Posts: 255
Joined: Mon May 19, 2014 1:14 pm
Location: Vouzela - Portugal

Re: Wall position is independent from sketch. How do I make it dependent?

Post by Renato Rebelo »

Moult wrote: Wed Jan 23, 2019 9:32 pm I think we agree the following:

1. If the base and the object are displaced, then editing becomes unintuitive for the user because the visual feedback of moving something here, instead moves the result somewhere else.
2. Right now, it takes multiple clicks to select an object's base, and so although a user can take care to select the base and move that instead, it is not user friendly. This problem is exacerbated when there are multiple hosted objects, each with their own base, which the user must all select in turn.
3. We cannot do what partdesign does and disallow selection of the object as that then requires multiple clicks and is not user friendly to quickly modify shapes
4. In some scenarios, it may be useful to have a displaced base and object, so we shouldn't remove the underlying flexibility / functionality.

I propose:

1. Add a new property called "Move base", similar to "Moves with host". It is set to TRUE by default, and it means that by default the object stays at 0,0,0 and transformations are done to the base.
2. Set "Moves with host" to TRUE by default. People can set to FALSE if needed, but TRUE is the more common scenario.
3. Make sure that if I move a host's base (I.e. the host has "Move base = TRUE"), all hosted bases are also moved with the host.
I agree with this ...
my native language is not English, please excuse me any incorrectness, I apologize for any inconvenience caused, thank you
paullee
Veteran
Posts: 5092
Joined: Wed May 04, 2016 3:58 pm

Re: Wall position is independent from sketch. How do I make it dependent?

Post by paullee »

Currently the Placement relationship between an Arch Object and lead to some confusion for me.

e.g.
- a Sketch at (1000,1000,1000), resultant ArchWall at (0,0,0)
- move the sketch to (2000,2000, 2000), ArchWall wil be (1000,1000,1000) (if not mistaken )
- This 'inconsistency in placement' is one of the aspect confuse me :)
User avatar
Roy_043
Veteran
Posts: 8410
Joined: Thu Dec 27, 2018 12:28 pm

Re: Wall position is independent from sketch. How do I make it dependent?

Post by Roy_043 »

@Moult:
I find your proposals hard to understand.
1 + 3
If 'Move base' is TRUE, moving a wall should result in changes to its base instead. Other walls derived from the same base should then also change. Is the interpretation correct?
2.
Walls do have a 'Moves with host' property. But what would constitute a host in the case of a wall? Note that a wall does not have the accompanying 'Hosts' property. Which is a bit strange.

How should sketches of windows be handled?
When you insert a window the selected face is used to position the sketch and to determine the window's host. But the sketch is not linked to the face of the wall or the base of the wall.
User avatar
yorik
Founder
Posts: 13630
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Wall position is independent from sketch. How do I make it dependent?

Post by yorik »

I agree with Moult's proposal (in fact we discussed it already on IRC :) )

The placement system is always confusing. Each object has its own placement, and when you have one object based on another, the placements add up. This is inherently complex, and there is hardly an easy way out of it. And you can see that the IFC format, which also makes all this stacked placements available to the user, has the same difficulties as we have in making all this swallowable...

But it is also extremely powerful. We could do like revit, and have a wall object that doesn't have any underlying object (in fact you can, just do Arch.makeWall() and adjust the parameters), we would loose quite a lot of power and flexibility. In FreeCAD, you can make just about any kind of wall imaginable by just defining its "path". In revit not.

But I think we're on the right path here, this functionality needs to stay, but we can find ways to make it more intuitive. This is all UX work.

A thing one has to bear in mind here (same with the Move with Host property), is that if another bim object is based on the same base object, that other object will get moved as well if the base is moved. It might be good to issue some warnings here or there.

Also, note that the default Move With Host state (True or False) is user-settable in Preferences->Arch. The same should be done for Move Base maybe.
Post Reply