Close
0%
0%

enSweepen [gd0096]

Procedural and parametric, node-based CAD for 3D modelling with sketches.

Public Chat
Similar projects worth following
A subproject to implement commonly used Fusion360 modelling functionality into gd0045. Currently in the researching phase.

Navigation

The title tag system is explained here, and the table is updated when a change occurs. Notable logs have bold L# text.

L1
[R] Functional Languages
L2
[R] ImplicitCAD
L3
[A] Shelving this project
L4
[A] Subproject for gd0045 CAD functionality
L5
[R] Node-based CAD
L6
[R] Nodi, and other research
L7
[T] Project and feature plans
L8
[T] Starting to plan a concept workflow
L9
[R] Geometric Modelling Kernel
L10
[A][T] Branding and potentially shelving
L11
[T] Branding
L12
[T] Name Idea: enSweepen

L13
[T] Kernel Choice: Fornjot over OCCT?
L14
[T] Fusion 360 Used Modelling Features
L15
[A] Project renamed to enSweepen
- Project was called enSketchen before
L16
[R] Smartwatch Screens
- And how I found the watch that would lead to #Tetent TimerSpy [gd0136] 
L17
[T] Bullet-based CAD
L18
[C] Markdown Based CAD
L19
[C] It doesn't seem that bullet/markdown CAD is going to work
L20
[T] Keyboard Shortcut Abstraction Layer

  • [T] Keyboard Shortcut Abstraction Layer

    kelvinA06/17/2023 at 21:39 4 comments

    I'm mainly going to develop the workflow for #Tetent [gd0090] first, but I was also thinking about how I was going to handle keyboard shortcuts. 

    Similar to FreeCAD, I'm going to have the feature where you can press 2 keys (like Key Q, Key E) to do a function (in this case, switch to the Equalize constraint). The thing is, these shortcuts are chosen by where the key physically is on the keyboard. Thus, the idea I've got is to have a feature where the keyboard layout is determined or input by the user and then the software bulk-switches all the shortcuts to match up. Thus something like CTRL+Q in QWERTY would be CTRL+A in AZERTY.

  • [C] It doesn't seem that bullet/markdown CAD is going to work

    kelvinA08/28/2022 at 15:08 1 comment

    Today I tried to model the Lerge heatsink for the SecSavr Sublime, and I ran out of mental power 34 mins in.

    Like I noticed in the previous log, things get difficult when describing sketches. This is where I got to:

    For reference, this is about halfway though the model and Me In The Past finished the entire thing in less time, even though I didn't even know how I was going to model it back then:

    Thus, a solution... fails.

  • [C] Markdown Based CAD

    kelvinA08/28/2022 at 01:40 3 comments

    [C] = Code project log

    With the requirement of research for #SecSavr Suspense [gd0105] dwindling down, I'm starting to suspect that all my projects seem to slow down or stall because of Fusion360. I'm wondering if it's just modelling in CAD in general, but I don't like the idea of spending 10s of hours in Fusion for what I think should take 1/10th the time. Even if I get to the other side with a completed model, projects like #Revolving Hotend [gd0012] just take a hard stall straight after and this seemingly random phenomenon could actually be attributed to all my mental energy being spent on Fusion360!

    My research concludes that creating a new CAD package is a long and multi-year process, and I don't really have that kind of time, so I'm hoping to meet in the middle somewhere and feed my custom stuff with all the instructions into a Fusion360 plugin, kind of like Grasshopper or CAD Sketcher.

    Suprisingly, searching "markdown based CAD" on the internet produces no relevant results. I was under the impression that, similar to many things being written in JavaScript, if a task is doable in text it's been done in Markdown. So I opened Obsidian and got to writing some clamps I modelled for gd0036. Here's the raw:

    # Create Clamps
    - Notes:
        - This is a script to create the clamps used in the SecSavr Sublime. It acts like a "Live Script" in MATLAB. Things like some explainations of the file and licencing info would probably be at the top in this section. 
        - "Note:", "Notes:" and "Note that" are comment nodes. Any bullet under it will also be a comment.
        - I'm thinking of calling the Fusion360 extension enFusion Me and calling this scripting design patten enSoapen, even though it's just Markdown.
        - If the first word of the bullet point isn't a keyword, the second word is checked. This means that "Also note that" and "However, note that" would make a comment node.
    
    
    ## Create Starter Clamp
    - Node StarterClamp
        - Input ExposureNode
            - Note that this can also be written as en->, Input Exposure or Exposure. "Output ExposureNode" can also be written as ->en or Expose.
            - tubeDiam = [44.4, 55.2]
            - height = 45.9
            - {clamp} = [insert node name here]
                - Note: [insert node name here] is a keyword. I want to avoid "this" or "self" keywords.
            - tube = 42.4
            - filletEnds? yes
            - jointableDist = height/2
        - Timeline {clamp}
            - Note: Timelines are used for multithreading in enSweepen. Fusion360 doesn't support this, so the Fusion360 timeline would be as if a single thread traversed through the document line by line.
            ### Creating the tube cylinder
            - Create component called {clamp}
                - Note that "Component {clamp}" can also be used.
            - Joint {clamp} to Origin
                - Note: Nothing extra has been specified, so it is assumed to be an asbuilt rigid joint.
            - Activate {clamp} 
            - XYSketch s.{clamp} Tube
                - Note: Can also be written as "Sketch [s.{clamp} Tube] from XY" or "Create sketch called [s.{clamp} Tube] from XY". It is also assumed that everything after the keyword is the name unless the next thing in the line is [].
                - Create 2 circles concentric to Origin
                    - Lock diameter to tubeDiam
                - Profile around point [tubeDiam[1] + 0.001, 0]
                    - Note that I was thinking of a way to do the extrude straight after this sketch and couldn't think of a way to specify a profile, so I had the idea to actually not make a profile automatically. This allows multiple named profile selections for when the profile you want actually spans multiple valid profile areas. Anyway, since this is the only profile, it doesn't need to be named and the extrude will know what profile to use.
                    - Also note that the array starts from 1
            - Symmetrically Extrude [e.Top Tube] by [height] using s.{clamp}
                - Note: [height] and height are more or less the same thing here, it just makes it more obvious that [height] is a variable.
            ### Create the grub screw cone
            - TangentPlane [p.Tube Front] from [>X] face of [e.Top Tube]
     - Note: This acts like Fusion360 in that the...
    Read more »

  • [T] Bullet-based CAD

    kelvinA08/16/2022 at 07:59 1 comment

    I just got an idea. I've been thinking about Fornjot-developer's stance on code-based CAD and I saw the appeal in everything (like git versioning and vast text editor options) except the code. Now I'm thinking that I just need to think differently on how the "code" is layed out. With bullet points, I can visualise a solution that works like the node-based solution, just in raw text. It's like the merge of HTML, the "with" keyword from Visual Basic, indentation from Python, CLI syntax and a dash of cadquery.

    For those unaware, if I recall correctly, the with keyword in VBA went something like this:

    with Application.Current()
        .action1
        .action2
    end with
    

     Searches it up...

    Yeah something like that.

    The reason I prefer this idea to something like codeblocks (think Scratch) is that the path of operations is linear by scrolling down, and features aren't encapsulated inside other features. I'd very much like to be able to use 1 sketch for more than 1 extrude.

    CadQuery is pretty cool in that it captures more design intent. The main showcase is with .faces(">Z"), which finds and selects the face of the parent object with the highest Z elevation.

    Proposed Example

    - Exposurenode in     - CarriageLength = 40     # Exposurenodes are all the things you want to expose to other     # files. "Exposurenode in" works like function arguments for     # the group (each feature bullet is a group, like Timeline or     # Sketch) and "Exposurenode" is the output. The vast majority     # of Exposurenodes don't need to be visible or specified by the     # user. - Timeline MainTimeline

        - Joint Carriage to Rail         - Slider along XZ # Specify if joint type is different from                           # file defaults         - Jointpoint1              - Select centre snap position from <Z face         - Jointpoint2             - Select centre snap position from >Z face - Timeline CreateRail     # This bullet is actually minimised     # Each Timeline is computed from the start at the same time. This     # is why the MainTimeline can reference from Timeline's under it.     # Unless you make a sub-timeline, features under a timeline are     # procedural. You can think of Timeline's more like media tracks     # in video editing software. Want max multithreading? You gotta     # bump those Timeline's up. - Timeline CreateCarriage     - Sketch from XZ Plane         - Centerpoint Rectangle from Origin             # In Fusion, the above would be clicking "Center Rectangle"             # and clicking from the origin. Using "coincident to"             # instead of "from" would apply a constraint to the centre             # of the rectangle.             - Width: 20mm Locked    # Locked = Dimension to this value             - Height: 10mm Locked         -...
    Read more »

  • [R] Smartwatch Screens

    kelvinA06/22/2022 at 11:17 0 comments

    So I decided to scan the Android smartwatch market to see if I can replace my aging Zeblaze Thor Pro and I thought that it would also be a good time to see what kind of variance there is in smartwatch screens these days. 

    UI Sketch

    For starters, it seems I forgot to write a log about the UI design I started on the train from the Birmingham, UK TCT show.

    So the arrows show things like design progression. I'm thinking of a thick line that has a smooth bend when hitting the corners. As seen in this log, there would be a press and a press+hold function of the buttons. Then I thought about how a new user would think when they just started the app for the first time and added a swipe gesture to open a tooltip with a 5 second timeout.

    Then I started thinking about the look of the area behind the buttons. Should it be acrylic like Windows 10/11, black bars or maybe even something like the edge of the windows in the train I was in:The Black Dots on Car Windows Are There for a Reason | Reader's DigestAfter that, I started thinking about some example nodes so that I could create a UI for it. There would be a lock button next to entries like "Diameter" which will set a dimension constraint without having to add seperate nodes.

    I also thought of a desktop UI feature where the user could toggle what constraints to apply whilst something like a line was being dragged. For example, you want to keep the vertical constraint of the line you're currently dragging, but aren't aligned with the midpoint of the horizontal line below. The user should be able to press 2 on the keyboard to say to the software "I want to keep the vertical constraint, but also apply a midpoint constraint to the endpoint I'm currently dragging.".

    Read more »

  • [A] Project renamed to enSweepen

    kelvinA06/18/2022 at 11:38 0 comments

    [A] = Announcement

    I've decided to go though with the name change.

  • [T] Fusion 360 Used Modelling Features

    kelvinA06/16/2022 at 17:59 0 comments

    I've compiled a list of features, in order of importance, required in another program to be able to port over my Fusion 360 designs. Some features have been grouped together and there are some additional features I wish Fusion had sprinked about. The grouped together features aren't in any particular order.

    • Parameters / functions
    • Components
    • Sketches
      • Constraints
        • Coincident
        • Equal
        • Midpoint
        • Horz/vert
        • Tangent
        • Symmetry
        • Planar
        • Colinear
        • Parallel
        • Perpendicular
        • Lock
      • Dimension Tool
      • Profiles
      • Project / include
      • Redefine sketch plane
      • Offset
      • Text
      • Extend / trim
      • Polygon
      • Helix
    • 3D / 2D Patterns
      • Circular
      • Rectangular
      • On path
    • Joints
      • Rigid
      • As-built
      • Slider
      • Revolve
      • Rigid body 
    • Extrude To
      • Revolve
      • Loft
      • Sweep 
    • Chamfer / fillet
      • Variable
      • Different angle
      • Different lengths
    • Mirror
    • Combination
    • Defeature
    • Align
    • Patch / thicken
    • Scale
    • Shell
    • Version history
    • Name features
    • Groups
    • Timeline
    • Split body/face
    • Measure distances
    • Planes
      • Midplane
      • Tangent
    • Appearance
    • Selecting through faces
      • Section view
    • Procedural move/rotate faces
      • Draft
      • Push-pull
    • Threads
      • Modelled / textured
    • Sheet Metal
    • Emboss/cut onto curve
    • Import/export
      • .step
      • .dxf
      • .svg
      • Image canvas
      • 3MF/STL

    Whilst the list of features is long, it does make the problem feel a measurable amount more feasible to achieve.

     Looking at the development of Fornjot (video below), it seems that the timescale would be quite long to get to a desirable stage, thus I should continue modelling in Fusion 360 while I slowly work on this project on the side. I still think gd0096 would still be useful as a tool to plan designs before modelling it in CAD if it wasn't connected to a geometric kernel.

  • [T] Kernel Choice: Fornjot over OCCT?

    kelvinA06/10/2022 at 18:47 0 comments

    Maybe OCCT's gotten better in the past few months/years, but I've heard that FreeCAD's been kind of rocky with bugs because of it. It's also decades old, which is a double edged sword from my point of view; while feature rich, it may be difficult to add new features, understand old ones or implement Quality Of Life (QOL) enhancements, as seen in FreeCAD. I've also heard that OCCT also takes a considerable amount of time to learn.

    Fornjot is the new kernel on the block, has similar goals to this project and seems to get a considerable amount of progress done each week. It could also help both projects progress, as explained in this blog post.

    I've still got a lot of work to do before I even need to start interfacing with a geometric kernel, so there is the option of delaying the decision until I get to that point.

  • [T] Name Idea: enSweepen

    kelvinA06/10/2022 at 18:33 0 comments

    Reasons why I thought of this:

    • Sounds smoother to say than "sketch", especially the phrase "enSweepen me!" over "enSketchen me!".
    • Seems more consistent of a name than "loft" when looking at it with the rest of the SecSavr ecosystem.
    • Sweep is one of the main 4 body creation tools, and one that usually requires more than one sketch in other CAD programs, showcasing the multi-plane sketch workflow of this project.
    • Timeline / file cleanliness and housekeeping is a priority.
    • Sounds refined because it is similar in sound to "ensuite".
    • Timelines could possibly look like a 2D sweep operation, maybe?

  • [T] Branding

    kelvinA05/30/2022 at 08:12 0 comments

    Some branding ideas to further explore the idea of "enLoften" over "enSketchen".

View all 20 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates