Ramp feature for profile (patch included)
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Ramp feature for profile (patch included)
Dear all,
in case anyone is interested, I made a small patch to (optionally) add ramping to the PathProfile Command. There is a new property "Ramp Angle" with which the downwards angle of the ramp can be specified. See https://github.com/dev-at-stellardeath- ... ramp_angle
Kind regards,
lorenz
in case anyone is interested, I made a small patch to (optionally) add ramping to the PathProfile Command. There is a new property "Ramp Angle" with which the downwards angle of the ramp can be specified. See https://github.com/dev-at-stellardeath- ... ramp_angle
Kind regards,
lorenz
Re: Ramp feature for profile (patch included)
Got around to building your branch. The ramp is a nice feature. Do you have plans to add the feature to the other Path profiles and Pocket operations?
Mark
Mark
This post made with 0.0% Micro$oft products - GOT LINUX?
Re: Ramp feature for profile (patch included)
I have not tested yet, but i was wondering if you knew about this helix and ramp feature in this commit https://github.com/sliptonic/FreeCAD/co ... 9553b95b10 made in sliptonics path improve branch.
Need help? Feel free to ask, but please read the guidelines first
Re: Ramp feature for profile (patch included)
Ah, cool - I was not aware, I will have a look. For others interested: You do not need to compile a whole FreeCAD, my changes only touch two python files,i was wondering if you knew about this helix and ramp feature in this commit c81a012
https://github.com/dev-at-stellardeath- ... Profile.py
https://github.com/dev-at-stellardeath- ... thUtils.py
which you can just copy over to an existing up-to-date FreeCAD.
I don't know, maybe. This is my first contribution so farDo you have plans to add the feature to the other Path profiles and Pocket operations?
Last edited by lorenz on Sat Mar 19, 2016 6:24 pm, edited 1 time in total.
Re: Ramp feature for profile (patch included)
I am terribly sorry, for missing your firs post, without giving you a big hug and welcome to the FreeCAD forum
Need help? Feel free to ask, but please read the guidelines first
Re: Ramp feature for profile (patch included)
Thanks for the warm welcome!cox wrote:I am terribly sorry, for missing your firs post, without giving you a big hug and welcome to the FreeCAD forum
What I initially wanted to do next was a command to make circular drill holes (larger than the tool) with multiple helix motions. However, I have a hard time figuring out the topology of Faces/Edges of a Shape. For example, supposing a user has selected a circular edge, I want to figure out how deep to drill by looking at the adjacent Face.
Does anybody know where information about the adjacency of different Faces/Edges is stored, exactly?
Ciao,
Lorenz
Re: Ramp feature for profile (patch included)
Coollorenz wrote:make circular drill holes (larger than the tool) with multiple helix motions.
I am very new to this, but I have been reading some path code lately. And this question has been bouncing around in my head.
The way I have ben thinking about this is brute force and probably not very efficient, if functional a all
1. Find all faces that have same normal as your circles direction
2. Sort that selection by CenterOfMass z distance from your circles CenterOfMass z possition
3. Iterate over the selection starting with the closest one
4. Make a copy of your circle and the current face and move to x/y plane.
5. If part union yields a result, you should have the closest adjacent face.
Please do not be shy in criticising this solution, I want to learn
I guess you could consider this as a special form of pocket operation? Would it be a idea to extend the PathPocket operation with a pattern?
Need help? Feel free to ask, but please read the guidelines first
Re: Ramp feature for profile (patch included)
Is this really the only way? Isn't the connectivity between objects stored somewhere? Maybe it is just not exposed to the Python layer...cox wrote:brute force
Re: Ramp feature for profile (patch included)
Sorry, I have no idea, but my guts tel me that if there where relationship information between all items and shapes in a document, the document would have to be huge. This information would also have to be recalculated witch I guess would spend some serous processing power during every update of a shape.lorenz wrote:Is this really the only way? Isn't the connectivity between objects stored somewhere? Maybe it is just not exposed to the Python layer...
Hope there is a function somewhere that could do this in a more efficient way.
Do not loose hope, there are many brilliant people here on the forum that will provide sensible guidance.
Need help? Feel free to ask, but please read the guidelines first
Re: Ramp feature for profile (patch included)
The connectivity must be stored, there is no way for working modeling operations without that. The access from python is somewhat limited, but it works. It is a unidirectional connectivity from top to bottom:
1. A solids holds all its Faces/Edges/Vertices which you can access with Shape.Faces .Edges .Vertexes etc.
2. A Face holds all it Edges/Vertices which you access with Shape.Esges .Vertexes
3. A Edge holds ...
What does not work is to get from bottom to top, for example a Edge to the faces it is owned by. This is also the case because a edge can be part of multiple faces. So if you have a selected edge you need iterate all faces in the document object and test all edges of the faecs with the isSame/isPartner/isEqual methods to the selected one.
1. A solids holds all its Faces/Edges/Vertices which you can access with Shape.Faces .Edges .Vertexes etc.
2. A Face holds all it Edges/Vertices which you access with Shape.Esges .Vertexes
3. A Edge holds ...
What does not work is to get from bottom to top, for example a Edge to the faces it is owned by. This is also the case because a edge can be part of multiple faces. So if you have a selected edge you need iterate all faces in the document object and test all edges of the faecs with the isSame/isPartner/isEqual methods to the selected one.