HeeksCNC

New Home Forum Software Development HeeksCNC

This topic contains 4 replies, has 4 voices, and was last updated by  Ryan 6 months, 2 weeks ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #5175

    Chris
    Participant

    I just got my MPCNC up and running but I had a hard time getting CAM software that I both liked and could afford. I started with ESTLCam but the interface didn’t make sense to me and it seemed to crash on me often creating a big annoyance when the demo period timeout increased quickly due to the repeated crashes. Maybe worth the $50 in the long run, but my problems with it drove me to keep looking. Other options gave me difficulty as well. Either overly complicated, too expensive or just didn’t work for me (CamBam, Fusion, MasterCam, etc).

    I ended up settling on HeeksCNC for now. The interface just seemed to *click* with me. But I had a problem getting usable gcode from it b/c there were no suitable post processors. The resulting code seemed close but it wasn’t right. I looked into it and tweaked an included post processor to support Marlin firmware.

    If anyone’s interested, I created a file called marlin.py in C:\Program Files (x86)\HeeksCNC 1.1\HeeksCNC\nc and modified machines.xml in the same directory to add the marlin post processor. This works with the demo and the full software.

    I realized it’s somewhat limited but IMHO well worth the $15!

    Chris

    marlin.py:

    #marlin.py based on emc2b.py
    
    import nc
    import iso_modal
    import math
    import datetime
    import time
    
    now = datetime.datetime.now()
    
    class Creator(iso_modal.Creator):
        def __init__(self):
            iso_modal.Creator.__init__(self)
            self.output_block_numbers = False
            self.output_tool_definitions = False
            self.output_g43_on_tool_change_line = True
            self.g0123_modal = False
            self.drill_modal = False
            self.up_z = 20
    
        def SPACE(self):
            if self.start_of_line == True:
                self.start_of_line = False
                return ''
            else:
                return ' '
    
        # Marlin doesn't support these M commands
        #  so override the defines to not use them
        def SPINDLE_CW(self): return('')
        def SPINDLE_CCW(self): return('')
        def COOLANT_OFF(self): return('')
        def COOLANT_MIST(self): return('')
        def COOLANT_FLOOD(self): return('')
        def INTERNAL_COOLANT_ON(self): return('')
        def INTERNAL_COOLANT_OFF(self): return('')
    
        def PROGRAM(self): return None
        def PROGRAM_END(self): return( 'T0' + self.SPACE() + 'M06' + self.SPACE() + 'M02')
            
    ############################################################################
    ## Begin Program 
    
        def program_begin(self, id, comment):
            if (self.useCrc == False):
                self.write( ('(Created with Marlin post processor ' + str(now.strftime("%Y/%m/%d %H:%M")) + ')' + '\n') )
            else:  
                self.write( ('(Created with emc2b Cutter Radius Compensation post processor ' + str(now.strftime("%Y/%m/%d %H:%M")) + ')' + '\n') )
    
    # ADD CUSTOM START CODES HERE
            self.write('(--- Start Custom Startup Code ---)\n')
            self.rapid(0,0,15,0,0,0)  # Set the start point
            self.write('(--- End Custom Startup Code ---)\n')
    
            iso_modal.Creator.program_begin(self, id, comment)
    
    nc.creator = Creator()

    machines.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Machine post="emc2b" reader="iso_read" suffix=".ngc" description="LinuxCNC"/>
    <Machine post="siegkx1" reader="iso_read" suffix=".tap" description="Mach3 Machine Controller"/>
    <Machine post="DeckelFP4Ma" reader="iso_read" suffix=".ngc" description="Deckel FP4Ma"/>
    <Machine post="marlin" reader="iso_read" suffix=".ngc" description="RepRap Marlin"/>
    
    1 user thanked author for this post.
    #5196

    Ryan
    Keymaster

    Nice, I didn’t even know where to start so I abandoned heekscnc really fast once I got to the post processor part. I used cambam until the trial expired after that.

    #5252

    Richard
    Participant

    This sounds very promising. I googled HeeksCNC and found some YouTube videos, I think I see your reasoning for the easier user experience.

    Currently, I’m trying to bring my machine to life. Once running and stable, I may swing back and see what your doing and give it a try.

    Congratulation on the solution.

    Richard

    #31234

    christian ritchie
    Participant

    Guys, I haven’t tried the gcode features in onShape yet, but I really like the ui for modeling in it. I have been a user of parametric, feature-based cad software for about 15 years now, and onShape fits right in with that.

    It can create toolpaths, so I think a post file is all it would need.

    https://www.onshape.com/cad-blog/how-to-create-machining-operations-and-nc-file-output-for-your-onshape-models?utm_campaign=Newsletter&utm_source=hs_email&utm_medium=email&utm_content=50184740&_hsenc=p2ANqtz-_iHT4PJ6CI9snQRDtuuWzqmOCftE6ah3cB9OWGnk1uSAMtpnTdxj-OGFTfM70KUf5vaiAcNR9D_KxaIxeFyAveSoznjg&_hsmi=50255311

    #31235

    Ryan
    Keymaster

    Onshape has been pretty good for me as well, but I am a little afraid of their “app” structure. A few paid Apps can add up very quickly, I hope it works out well, I am afraid we just won’t know for a while to see if the developers stick around and the kind of pricing that shakes out of this whole thing.

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.