[PR] [0.18-0.21_pre] Arch Stair - More Geometry Control? Profile Generator
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Hi, bypassing the problem 'missing railing on one side', I return to the Very Original intent of attempt to tweak the code - setting Tread Depth and Riser Height (in addition to setting Landing Depth)! The updated ArchStairs.py with this feature and some minor bug fix is attached.
Setting Tread Depth and Riser Height
The existing Tread Depth and Riser Height attributes in the properties are 'result' calculated from other parameters.
Now, following attributes / properties are introduced. They could be set rather than auto-generated similar to Landing Depth.
- Tread Depth Enforce *
- Riser Height Enforce *
What are Overridden?
The result is it overrides following cases:-
- Length is ignored: The overall length would be Tread Depth Enforce x Nos. of Steps
- Height is ignored: The overall height would be Riser Height Enforce x Nos. of Steps
- If base object like DLine, DWire, Sketch is used, their length / height are also ignored
- The above point would have issues when multiple objects are used to general 'multi-segment stairs' - e.g. when the 1st segment length is overridden, there would be a gap or overlapping - have idea how to treat this...later
* Remark:
Should they be better called below?
- Tread Depth Override
- Riser Height Override
p.s.
You can see the 'connecting bit' between flight and landing is 'out-of-sync' - haven't fixed yet...
Setting Tread Depth and Riser Height
The existing Tread Depth and Riser Height attributes in the properties are 'result' calculated from other parameters.
Now, following attributes / properties are introduced. They could be set rather than auto-generated similar to Landing Depth.
- Tread Depth Enforce *
- Riser Height Enforce *
What are Overridden?
The result is it overrides following cases:-
- Length is ignored: The overall length would be Tread Depth Enforce x Nos. of Steps
- Height is ignored: The overall height would be Riser Height Enforce x Nos. of Steps
- If base object like DLine, DWire, Sketch is used, their length / height are also ignored
- The above point would have issues when multiple objects are used to general 'multi-segment stairs' - e.g. when the 1st segment length is overridden, there would be a gap or overlapping - have idea how to treat this...later
* Remark:
Should they be better called below?
- Tread Depth Override
- Riser Height Override
p.s.
You can see the 'connecting bit' between flight and landing is 'out-of-sync' - haven't fixed yet...
- Attachments
-
- ArchStairs.py
- (47.81 KiB) Downloaded 52 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
The connecting bit is fixed... along with a nos. of bug found along with...
Note that the Tread Depth as calculated is not correct (not about Tread Depth Enforce)...
Note that the Tread Depth as calculated is not correct (not about Tread Depth Enforce)...
- Attachments
-
- ArchStairs.py
- (49.24 KiB) Downloaded 56 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Hi, it turn out the stairs object should be forced recomputed before makeWire...
Solved, thanks.
Code: Select all
stair.recompute()
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Some findings and progress...
Should use rectangular profiles?
- For reason unknown, the experimental makeRailing() in Win 7 still only produce railing on 1 side
- The makeRailing() on my Fedora 27 produce railing on both 2 sides
- Now, the makeStairs() produce railings on straight stair flight in addition to multi-edge landing
Should use rectangular profiles?
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Hey nice to see your stair progress, will be joining you as soon as I can get my linux mint system setup right. Got a couple random ideas about this stairs I'll like to check with you when I am ready.paullee wrote: ↑Tue Jul 17, 2018 10:40 pm Some findings and progress...
I suspect the circular extrusion (testing with ArchPipe) is expensive in cpu calculation and graphic demand?
- For reason unknown, the experimental makeRailing() in Win 7 still only produce railing on 1 side
- The makeRailing() on my Fedora 27 produce railing on both 2 sides
- Now, the makeStairs() produce railings on straight stair flight in addition to multi-edge landing
Should use rectangular profiles?
Screenshot from 2018-07-18 06-29-05.png
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Hey lots of kudos on that stair stuff, it is really dope, works right out of the box, and so smooth, I don't know that yet, I haven't even tried to play and tweak the settings, it just works as expected.
So I did a new Linux re-install and tried to rebuild my system up partially somewhat,
So I had to do all the app image things one more time, but this time I organised the files in a way not to get mixed up etc.
So I just tried the file out of curiosity, and i'm not having the same problems as before. so cool. I'm impressed.
Nice work.
So I did a new Linux re-install and tried to rebuild my system up partially somewhat,
So I had to do all the app image things one more time, but this time I organised the files in a way not to get mixed up etc.
So I just tried the file out of curiosity, and i'm not having the same problems as before. so cool. I'm impressed.
Nice work.
- Attachments
-
- Screenshot from 2018-07-24 21-08-58.png (249.72 KiB) Viewed 1595 times
-
- Screenshot from 2018-07-24 21-06-50.png (234.06 KiB) Viewed 1595 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Your stair landing tool is pretty cool, when drawing a simple non linear shape on the ground plan it creates a landing on the ground,
this is so cool because it even provides for the possibility of creating side walks, curbs etc, and linking this with a profile tool like
railing enhances the possibilities even further. Nice development.
this is so cool because it even provides for the possibility of creating side walks, curbs etc, and linking this with a profile tool like
railing enhances the possibilities even further. Nice development.
- Attachments
-
- Screenshot from 2018-07-24 21-29-41.png (302.38 KiB) Viewed 1592 times
-
- Screenshot from 2018-07-24 21-20-04.png (305.81 KiB) Viewed 1593 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Hi, thanks! And try the latest ArchStair.py
I don't have much time to work recently - though i find I have been obsessed with this coding for 4 weeks or more!
(I should be working on some other 'experiment'...)
By memory, this version:-
I don't have much time to work recently - though i find I have been obsessed with this coding for 4 weeks or more!
(I should be working on some other 'experiment'...)
By memory, this version:-
- Should create 2 railings on both sides
- For 'multi-segment' staircases, the railing created should now be a continuous bar, rather then segments for different 'segments of staircases'
- Now, change the width of each 'segment of staircases', the continuous railing bar should follow
(of cos, w/o proper 'offset' at those 'turns' between different segments...) - Currently the railing is formed by ArchPipe
- Hard-coded the height (900mm by memory), offset from edge (90mm if not wrong)
- But you can tweak the ArchPipe attributes/properties
- E.g. you can 'Offset End' and 'Offset Start'
- Can customize the 'Profile'
- No separate tool to create back the railing/ArchPipe if it is deleted by accident
(can use python to do that just not automated...)
- I am hesitating where should i put the properties of the railing, e.g. height, offset...
- e.g. make a new object similar to ArchPipe but with above properties
- Should have a boolean "Railing" "No Railing"?
- What 'features' are most commonly wanted for railing? 'End Treatment'?
- I have not tried to make the landing accept different width for each 'turn'...
- Or a vertical shaft of staircase repeating for 50 storeys...
- or more landings / customise steps for each of the flight in a simple stairs...
- Attachments
-
- ArchStairs.py
- (57.22 KiB) Downloaded 53 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Does work well on my end so far.paullee wrote: ↑Wed Jul 25, 2018 3:29 pm Hi, thanks! And try the latest ArchStair.py
I don't have much time to work recently - though i find I have been obsessed with this coding for 4 weeks or more!
(I should be working on some other 'experiment'...)
By memory, this version:-Some questions / survey hopefully can direct what should be done / more intuitive for users:-
- Should create 2 railings on both sides
- For 'multi-segment' staircases, the railing created should now be a continuous bar, rather then segments for different 'segments of staircases'
- Now, change the width of each 'segment of staircases', the continuous railing bar should follow
(of cos, w/o proper 'offset' at those 'turns' between different segments...)- Currently the railing is formed by ArchPipe
- Hard-coded the height (900mm by memory), offset from edge (90mm if not wrong)
- But you can tweak the ArchPipe attributes/properties
- E.g. you can 'Offset End' and 'Offset Start'
- Can customize the 'Profile'
- No separate tool to create back the railing/ArchPipe if it is deleted by accident
(can use python to do that just not automated...)Bits of ideas only...
- I am hesitating where should i put the properties of the railing, e.g. height, offset...
- e.g. make a new object similar to ArchPipe but with above properties
- Should have a boolean "Railing" "No Railing"?
- What 'features' are most commonly wanted for railing? 'End Treatment'?
- I have not tried to make the landing accept different width for each 'turn'...
- Or a vertical shaft of staircase repeating for 50 storeys...
- or more landings / customise steps for each of the flight in a simple stairs...
Hesitating between what ideas? The way it looks to me is that railings are their own thing,
so they have their own property, just like windows can fit in a wall and have their won properties.
Perhaps what I see is how to control segmented railings.
For example there might be corners which don't need railings on the same draft-wire that defines.
So an option similar to the windows in menu where you can add elements or subtract elements that constitute the railing as per what was selected.
But nice job.
- Attachments
-
- Screenshot from 2018-07-25 20-12-18.png (305.55 KiB) Viewed 1569 times
Re: Arch Stair - Control Length of Landing? More Geometry Control? + Bug Report ['pre-Pull Request' ?]
Thanks for testing and ideas.
Maybe in the meantime I just add properties in the Stairs Object to control simple railing Height and Offset. Yes could have a menu to add / remove element constitute railing - seem not having the knowledge to do it by myself yet Though you can manually create which segment of railing through python
Maybe in the meantime I just add properties in the Stairs Object to control simple railing Height and Offset. Yes could have a menu to add / remove element constitute railing - seem not having the knowledge to do it by myself yet Though you can manually create which segment of railing through python
- Every Stairs Object now has attributes of OutlineLeft, OutlineRight, OutlineLeftAll, OutlineRightAll - which simply is the wire geometries of the railing you see generated by code
- OutlineLeft(Right)All is simply the wire geometry connecting all its 'last segment' stairs railing gemetries
- So if s = Gui.Selection.getSelection()[0] of your selected 'segment' of stairs.
- import Draft, w = Draft.makeWire(s.OutlineLeft) will make a 3d wire of the railing skeleton
- import Arch, Arch.makePipe(w) should make only just the segment of railing you want...
- ... maybe I should current Arch.makeStairs to just do the above 'semi-automate' it