├── .gitignore ├── Plugins ├── GPlot.help ├── Phlatboyz │ ├── Constants.rb │ ├── MyConstants-example.rb │ ├── Observers.rb │ ├── PSUpgrade.rb │ ├── Phlat3D.rb │ ├── PhlatCut.rb │ ├── PhlatEdge.rb │ ├── PhlatMill.rb │ ├── PhlatOffset.rb │ ├── PhlatProgress.rb │ ├── PhlatScript GNU Licence Info │ │ ├── COPYING.txt │ │ ├── COPYING_LESSER.txt │ │ ├── Copyright_Information.txt │ │ └── lgplv3-147x51.png │ ├── PhlatTool.rb │ ├── PhlatboyzMethods.rb │ ├── Phlatscript.rb │ ├── Resources │ │ └── en-US │ │ │ ├── PhlatBoyz.strings │ │ │ └── localizable.strings │ ├── html │ │ ├── afterinstall.html │ │ ├── changes.html │ │ ├── edgemenu.html │ │ ├── help.html │ │ ├── howto-changegplot.html │ │ ├── howto_3d.html │ │ ├── howto_chamfer.html │ │ ├── howto_changeconstants.html │ │ ├── howto_options.html │ │ ├── howto_phlatbones.html │ │ ├── howto_profileexchange.html │ │ ├── howto_ramping.html │ │ ├── images │ │ │ ├── SketchUcam-Window-Logo.png │ │ │ ├── bones01.png │ │ │ ├── bones02.png │ │ │ ├── bones03.png │ │ │ ├── bones04.png │ │ │ ├── bones05.png │ │ │ ├── bones06.png │ │ │ ├── bones07.png │ │ │ ├── bones08.png │ │ │ ├── bones08png.png │ │ │ ├── bones09.png │ │ │ ├── bonesbit.png │ │ │ ├── chamfer-diag.png │ │ │ ├── chamfer-s1.png │ │ │ ├── chamfer-s2.png │ │ │ ├── chamfer-s3.png │ │ │ ├── chamfer01.png │ │ │ ├── chamfer02.png │ │ │ ├── chamfer03.png │ │ │ ├── csink01.png │ │ │ ├── csink02.png │ │ │ ├── csink03.png │ │ │ ├── csink04.png │ │ │ ├── csinkwooda.png │ │ │ ├── edgecontext.png │ │ │ ├── holepattern01.png │ │ │ ├── holepattern02.png │ │ │ ├── holepattern03.png │ │ │ ├── howto01.png │ │ │ ├── howto02.png │ │ │ ├── howto03.png │ │ │ ├── laser1a.png │ │ │ ├── laser2a.png │ │ │ ├── laser3a.png │ │ │ ├── options-feature.png │ │ │ ├── options-file.png │ │ │ ├── options-holefeatures.png │ │ │ ├── options-machine.png │ │ │ ├── options-misc.png │ │ │ ├── options-tool.png │ │ │ ├── options.png │ │ │ ├── optsummary.png │ │ │ ├── params.png │ │ │ ├── phlat01.png │ │ │ ├── phlatbones.png │ │ │ ├── pocket1.png │ │ │ ├── pocket2.png │ │ │ ├── pocket3.png │ │ │ ├── pocket4.png │ │ │ ├── profileload.png │ │ │ ├── profiles.png │ │ │ ├── profilesave.png │ │ │ ├── quicktoolbar.png │ │ │ ├── ramp01.png │ │ │ ├── ramp01a.png │ │ │ ├── ramp02.png │ │ │ ├── ramp03.png │ │ │ ├── ramp04.png │ │ │ ├── ramp05.png │ │ │ ├── ramp06.png │ │ │ ├── ramp07.png │ │ │ ├── ramp08.png │ │ │ ├── ramp09.png │ │ │ ├── ramp10.png │ │ │ ├── ramplimit.png │ │ │ ├── sfm.png │ │ │ ├── sfm2.png │ │ │ ├── toolbar.png │ │ │ ├── toolchange01.png │ │ │ └── toolsmenu.png │ │ ├── machelp.html │ │ ├── quicktools.html │ │ ├── setParamsWebDialog.html │ │ ├── sketchucamtoolbar.html │ │ ├── style.css │ │ └── toolsmenu.html │ ├── images │ │ ├── OBicon_large.png │ │ ├── OBicon_small.png │ │ ├── Pocket_large.png │ │ ├── Pocket_small.png │ │ ├── andy.png │ │ ├── bracket_large.png │ │ ├── bracket_small.png │ │ ├── cboretool_large.png │ │ ├── cboretool_small.png │ │ ├── centerlinetool_large.png │ │ ├── centerlinetool_small.png │ │ ├── comment_large.png │ │ ├── comment_small.png │ │ ├── csinktool_large.png │ │ ├── csinktool_small.png │ │ ├── cursor_centerlinetool.png │ │ ├── cursor_erase_centerlinecut.png │ │ ├── cursor_erase_foldcut.png │ │ ├── cursor_erase_insidecut.png │ │ ├── cursor_erase_outsidecut.png │ │ ├── cursor_erase_plungecut.png │ │ ├── cursor_erase_tabcut.png │ │ ├── cursor_erasetool.png │ │ ├── cursor_foldtool.png │ │ ├── cursor_insidecuttool.png │ │ ├── cursor_outsidecuttool.png │ │ ├── cursor_plungetool.png │ │ ├── cursor_safetool.png │ │ ├── cursor_tabtool.png │ │ ├── cursor_vtabtool.png │ │ ├── erasetool_large.png │ │ ├── erasetool_small.png │ │ ├── foldtool_large.png │ │ ├── foldtool_small.png │ │ ├── gcode_large.png │ │ ├── gcode_small.png │ │ ├── helptool_large.png │ │ ├── helptool_small.png │ │ ├── insidecuttool_large.png │ │ ├── insidecuttool_small.png │ │ ├── joiner_large.png │ │ ├── joiner_small.png │ │ ├── outsidecuttool_large.png │ │ ├── outsidecuttool_small.png │ │ ├── parameterstool_large.png │ │ ├── parameterstool_small.png │ │ ├── phlatboyz_homepage_large.png │ │ ├── phlatboyz_homepage_small.png │ │ ├── plungetool_large.png │ │ ├── plungetool_small.png │ │ ├── reorder_large.png │ │ ├── reorder_small.png │ │ ├── rotate_large.png │ │ ├── rotate_small.png │ │ ├── safetool_large.png │ │ ├── safetool_small.png │ │ ├── tabtool_large.png │ │ ├── tabtool_small.png │ │ ├── toolchange_large.png │ │ ├── toolchange_small.png │ │ ├── zerotool_large.png │ │ └── zerotool_small.png │ ├── tools │ │ ├── CenterLineCut.rb │ │ ├── CenterLineTool.rb │ │ ├── ChamferWizard.rb │ │ ├── CutTool.rb │ │ ├── EraseTool.rb │ │ ├── FoldCut.rb │ │ ├── FoldTool.rb │ │ ├── GcodeUtil.rb │ │ ├── HelpTool.rb │ │ ├── HomepageTool.rb │ │ ├── Ky_Reorder_Groups.rb │ │ ├── OBCtool.rb │ │ ├── OffsetCut.rb │ │ ├── ParametersTool.rb │ │ ├── PhJoiner.rb │ │ ├── PhOptions.rb │ │ ├── PhPocketCut.rb │ │ ├── PhPocketTool.rb │ │ ├── PhlatArc.rb │ │ ├── PhlattenTool.rb │ │ ├── PlungeCut.rb │ │ ├── PlungeTool.rb │ │ ├── ProfilesTool.rb │ │ ├── Quicktools.rb │ │ ├── RampTabTool.rb │ │ ├── SafeTool.rb │ │ ├── TabCut.rb │ │ ├── TabTool.rb │ │ ├── TestTool.rb │ │ └── ZeroTool.rb │ └── utils │ │ ├── IniParser.rb │ │ └── SketchupDirectoryUtils.rb ├── _gplot.exe ├── airfoil_dat.rb ├── attributes.rb ├── gplot.exe ├── gplot.rb ├── phlatBone.rb ├── phlatBone │ ├── cursor_radbone.png │ ├── cursor_radbone_multi.png │ ├── cursor_tbone.png │ ├── cursor_tbone_multi.png │ ├── radBoneMultiIn.png │ ├── radBoneMultiOut.png │ ├── radBoneSingle.png │ ├── tBoneMultiIn.png │ ├── tBoneMultiOut.png │ ├── tBoneSingle.png │ └── toolDiameter.png ├── phlatboyz.rb ├── phlatboyztools.rb └── test │ ├── data │ ├── sample.ini │ └── wrong-sample.ini │ └── tests │ ├── HashableTest.rb │ ├── IniGeneratorTest.rb │ ├── IniParserTest.rb │ ├── PhlatTests.rb │ └── TestBase.rb ├── README.md ├── docs ├── afterinstall.html ├── changes.html ├── edgemenu.html ├── howto-changegplot.html ├── howto_3d.html ├── howto_chamfer.html ├── howto_changeconstants.html ├── howto_options.html ├── howto_phlatbones.html ├── howto_profileexchange.html ├── howto_ramping.html ├── icons │ ├── OBicon_large.png │ ├── OBicon_small.png │ ├── Pocket_large.png │ ├── Pocket_small.png │ ├── SketchUcam-Window-Logo.png │ ├── andy.png │ ├── bones01.png │ ├── bones02.png │ ├── bones03.png │ ├── bones04.png │ ├── bones05.png │ ├── bones06.png │ ├── bones07.png │ ├── bones08.png │ ├── bones08png.png │ ├── bones09.png │ ├── bonesbit.png │ ├── bracket_large.png │ ├── bracket_small.png │ ├── cboretool_large.png │ ├── cboretool_small.png │ ├── centerlinetool_large.png │ ├── centerlinetool_small.png │ ├── chamfer-diag.png │ ├── chamfer-s1.png │ ├── chamfer-s2.png │ ├── chamfer-s3.png │ ├── chamfer01.png │ ├── chamfer02.png │ ├── chamfer03.png │ ├── comment_large.png │ ├── comment_small.png │ ├── csink01.png │ ├── csink02.png │ ├── csink03.png │ ├── csink04.png │ ├── csinktool_large.png │ ├── csinktool_small.png │ ├── csinkwooda.png │ ├── cursor_centerlinetool.png │ ├── cursor_erase_centerlinecut.png │ ├── cursor_erase_foldcut.png │ ├── cursor_erase_insidecut.png │ ├── cursor_erase_outsidecut.png │ ├── cursor_erase_plungecut.png │ ├── cursor_erase_tabcut.png │ ├── cursor_erasetool.png │ ├── cursor_foldtool.png │ ├── cursor_insidecuttool.png │ ├── cursor_outsidecuttool.png │ ├── cursor_plungetool.png │ ├── cursor_safetool.png │ ├── cursor_tabtool.png │ ├── cursor_vtabtool.png │ ├── edgecontext.png │ ├── erasetool_large.png │ ├── erasetool_small.png │ ├── foldtool_large.png │ ├── foldtool_small.png │ ├── gcode_large.png │ ├── gcode_small.png │ ├── helptool_large.png │ ├── helptool_small.png │ ├── holepattern01.png │ ├── holepattern02.png │ ├── holepattern03.png │ ├── howto01.png │ ├── howto02.png │ ├── howto03.png │ ├── insidecuttool_large.png │ ├── insidecuttool_small.png │ ├── joiner_large.png │ ├── joiner_small.png │ ├── laser1a.png │ ├── laser2a.png │ ├── laser3a.png │ ├── options-feature.png │ ├── options-file.png │ ├── options-holefeatures.png │ ├── options-machine.png │ ├── options-misc.png │ ├── options-tool.png │ ├── options.png │ ├── optsummary.png │ ├── outsidecuttool_large.png │ ├── outsidecuttool_small.png │ ├── parameterstool_large.png │ ├── parameterstool_small.png │ ├── params.png │ ├── phlat01.png │ ├── phlatbones.png │ ├── phlatboyz_homepage_large.png │ ├── phlatboyz_homepage_small.png │ ├── plungetool_large.png │ ├── plungetool_small.png │ ├── pocket1.png │ ├── pocket2.png │ ├── pocket3.png │ ├── pocket4.png │ ├── profileload.png │ ├── profiles.png │ ├── profilesave.png │ ├── quicktoolbar.png │ ├── ramp01.png │ ├── ramp01a.png │ ├── ramp02.png │ ├── ramp03.png │ ├── ramp04.png │ ├── ramp05.png │ ├── ramp06.png │ ├── ramp07.png │ ├── ramp08.png │ ├── ramp09.png │ ├── ramp10.png │ ├── ramplimit.png │ ├── reorder_large.png │ ├── reorder_small.png │ ├── rotate_large.png │ ├── rotate_small.png │ ├── safetool_large.png │ ├── safetool_small.png │ ├── sfm.png │ ├── sfm2.png │ ├── tabtool_large.png │ ├── tabtool_small.png │ ├── toolbar.png │ ├── toolchange01.png │ ├── toolchange_large.png │ ├── toolchange_small.png │ ├── toolsmenu.png │ ├── zerotool_large.png │ └── zerotool_small.png ├── images │ ├── SketchUcam-Window-Logo.png │ ├── bones01.png │ ├── bones02.png │ ├── bones03.png │ ├── bones04.png │ ├── bones05.png │ ├── bones06.png │ ├── bones07.png │ ├── bones08.png │ ├── bones08png.png │ ├── bones09.png │ ├── bonesbit.png │ ├── chamfer-diag.png │ ├── chamfer-s1.png │ ├── chamfer-s2.png │ ├── chamfer-s3.png │ ├── chamfer01.png │ ├── chamfer02.png │ ├── chamfer03.png │ ├── csink01.png │ ├── csink02.png │ ├── csink03.png │ ├── csink04.png │ ├── csinkwooda.png │ ├── edgecontext.png │ ├── holepattern01.png │ ├── holepattern02.png │ ├── holepattern03.png │ ├── howto01.png │ ├── howto02.png │ ├── howto03.png │ ├── laser1a.png │ ├── laser2a.png │ ├── laser3a.png │ ├── options-feature.png │ ├── options-file.png │ ├── options-holefeatures.png │ ├── options-machine.png │ ├── options-misc.png │ ├── options-tool.png │ ├── options.png │ ├── optsummary.png │ ├── params.png │ ├── phlat01.png │ ├── phlatbones.png │ ├── pocket1.png │ ├── pocket2.png │ ├── pocket3.png │ ├── pocket4.png │ ├── profileload.png │ ├── profiles.png │ ├── profilesave.png │ ├── quicktoolbar.png │ ├── ramp01.png │ ├── ramp01a.png │ ├── ramp02.png │ ├── ramp03.png │ ├── ramp04.png │ ├── ramp05.png │ ├── ramp06.png │ ├── ramp07.png │ ├── ramp08.png │ ├── ramp09.png │ ├── ramp10.png │ ├── ramplimit.png │ ├── sfm.png │ ├── sfm2.png │ ├── toolbar.png │ ├── toolchange01.png │ └── toolsmenu.png ├── index.html ├── machelp.html ├── make.bat ├── make.php ├── quicktools.html ├── setParamsWebDialog.html ├── sketchucamtoolbar.html ├── style.css └── toolsmenu.html ├── howtobuild.txt ├── make.bat ├── make.ex ├── maked.bat ├── move.php ├── notes.html └── phrev.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.skp 2 | *.cnc 3 | *.nc 4 | DD*.* 5 | Components 6 | Materials 7 | Importers 8 | Styles 9 | Tools/* 10 | Resources 11 | *.rbz 12 | SketchUp.exe 13 | *.dll 14 | TIG*.* 15 | smustard* 16 | *.bak 17 | freedxf* 18 | Examples 19 | ModelerGeometry_3.02_8.drx 20 | *.lnk 21 | BsSndRpt.exe 22 | glcards.dat 23 | opensourcecredits.html 24 | phrev.dat 25 | Plugins/phrev.dat 26 | Plugins/examples.rb 27 | Plugins/Ocean/ocean.rb 28 | Plugins/ocean_extension.rb 29 | Plugins/TIG-Smart_offset/Thumbs.db 30 | sdk plugins/COLLADASchema.xsd 31 | Support/SketchUp.dat 32 | Plugins/Utilities/utilitiestools.rb 33 | Plugins/utilities.rb 34 | drivers.ini 35 | makehere.bat 36 | PhlatScript GNU Licence Info 37 | 2DTools 38 | Attribs* 39 | BZ* 40 | Cadalog_Gear* 41 | centerpoint* 42 | DM* 43 | ExtrudeTools* 44 | Plugins/CNC_Files/* 45 | Plugins/CNC-profile.rb 46 | Plugins/ChrisP_RadialMove_EN.rb 47 | Plugins/bezierspline.rb 48 | Plugins/2D#.rb 49 | .DS_Store 50 | Plugins/deBabelizer.rb 51 | Plugins/drawhelix14.rb 52 | Plugins/flattery* 53 | Plugins/Fredo* 54 | Plugins/flightpath.rb 55 | Helix* 56 | Plugins/hideall.rb 57 | Plugins/LibTraductor.rb 58 | Plugins/origPhlat3d.rb 59 | Plugins/phlatBone/phlatBone_prefs 60 | Plugins/Phlatboyz/Profiles/default.tpi 61 | Plugins/Phlatboyz/Profiles/MyOptions.ini 62 | Plugins/Phlatboyz/Profiles/Paul.tpi 63 | Plugins/Phlatboyz/Profiles/phlatBone_prefs 64 | Plugins/Phlatboyz/strscan.rb 65 | Plugins/Phlatboyz/TRUEPLUNGE.TXT 66 | Plugins/PhlatScript Installation Instructions.pdf 67 | Plugins/PocketTool.r_b 68 | Plugins/RepairBL_Phlatten_v1.2.rb 69 | Plugins/skp_to_dxf.rb 70 | Plugins/TRUEPLUNGE.TXT 71 | TT* 72 | Plugins/Phlatboyz/MyConstants.rb 73 | Plugins/Phlatboyz/inifile.rb 74 | Plugins/thing.rb 75 | Plugins/!autoruby.rb 76 | Plugins/Phlatboyz/_MyConstants._rb 77 | Plugins/stray_lines.rb 78 | Plugins/jf_zoom_selection.rb 79 | Plugins/Phlatboyz/html/images/csink02a.png 80 | Plugins/SyncToy_* 81 | Plugins/sr_cutlist* 82 | Plugins/as_facecentroid* 83 | Plugins/PointTool* 84 | Plugins/voronoi* 85 | Plugins/delauney3.rb 86 | Plugins/sketchup-stl* 87 | Plugins/Phlatboyz/doc* 88 | Plugins/nb_skptolaser/nb_skptolaser.rb 89 | Plugins/nb_skptolaser.rb 90 | Plugins/nb_skptolaser/gpl.txt 91 | Plugins/__MACOSX/nb_skptolaser/._.DS_Store 92 | Plugins/__MACOSX/nb_skptolaser/._gpl.txt 93 | doc/created.rid 94 | SyncToy_80174e01-d9bf-4e36-805c-d4d62b03631a.dat 95 | Plugins/cpoints.rb 96 | Plugins/fretboard.rb 97 | Plugins/thesender.bat 98 | Plugins/thesender.rb 99 | -------------------------------------------------------------------------------- /Plugins/GPlot.help: -------------------------------------------------------------------------------- 1 | GPlot 2 | 3 | What is it for? 4 | This program is for previewing Gcode programs so you can see where the tool will move. 5 | Previewing allows you to make sure that you are getting what you expected before you 6 | send the file to the machine. 7 | 8 | How do I manipulate the drawing? 9 | Hold left mouse and drag = move the drawing around 10 | Scroll wheel roll = zoom 11 | Middle/right mouse hold and drag = rotate drawing. 12 | 13 | You can change the line colours by accessing the Plotter|Colours menu. 14 | 15 | Reset to the default view using the Plotter|Refresh from Code menu. 16 | 17 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/Observers.rb: -------------------------------------------------------------------------------- 1 | 2 | #require 'Phlatboyz/Constants.rb' 3 | require 'Phlatboyz/PSUpgrade.rb' 4 | 5 | module PhlatScript 6 | 7 | class AppChangeObserver < Sketchup::AppObserver 8 | 9 | def onNewModel(model) 10 | PhlatScript.setModelOptions(model) 11 | model.add_observer(PhlatScript.modelChangeObserver) 12 | end 13 | 14 | def onOpenModel(model) 15 | if PhlatScript.tryUpgrade? # defaults to false as of V1.4a 16 | PSUpgrader.upgrade 17 | end 18 | PhlatScript.setModelOptions(model) 19 | model.add_observer(PhlatScript.modelChangeObserver) 20 | end 21 | 22 | end 23 | 24 | class ModelChangeObserver < Sketchup::ModelObserver 25 | 26 | def onSaveModel(model) 27 | PhlatScript.doSave(model) 28 | end 29 | 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PSUpgrade.rb: -------------------------------------------------------------------------------- 1 | # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR 2 | # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 3 | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 4 | 5 | # 1.0 (2009-9-1) - Support for upgrading PhlatscripT 0.918 models to 0.919 6 | 7 | 8 | module PhlatScript 9 | 10 | class PSUpgrader 11 | 12 | attr_accessor :upgrade 13 | 14 | def PSUpgrader.upgrade 15 | ps = PSUpgrader.new 16 | ps.upgrade_918 17 | UI.messagebox("Upgrade Complete") if ps.upgrade 18 | return (ps.upgrade ? true : false) 19 | end 20 | 21 | def initialize 22 | @upgrade = nil 23 | end 24 | 25 | def upgrade?(version, raise_on_false=true) 26 | if (@upgrade.nil?) 27 | @upgrade = (6 == UI.messagebox("This model appears to be marked up in version #{version} of the PhlatscripT. Upgrading will remove all grouping. Would you like to upgrade it now?", MB_YESNO)) 28 | end 29 | raise "Upgrade declined" if (!@upgrade && raise_on_false) 30 | return @upgrade 31 | end 32 | 33 | def process_edge_918(e) 34 | ct = e.get_attribute("phlatboyzdictionary", "edge_type", "") 35 | if ["inside_cut", "outside_cut", "fold_cut", "centerline_cut"].include?(ct) 36 | cf = e.get_attribute("phlatboyzdictionary", "cut_depth_factor", nil) 37 | if (cf) && (cf < 2) && (self.upgrade?("0.918")) 38 | new_cf = (cf*100) 39 | e.set_attribute("phlatboyzdictionary", "cut_depth_factor", new_cf) 40 | end 41 | elsif (ct == "vtab_cut") && (self.upgrade?("0.918")) 42 | e.set_attribute("phlatboyzdictionary", "vtab", true) 43 | e.set_attribute("phlatboyzdictionary", "edge_type", "tab_cut") 44 | end 45 | end 46 | 47 | def process_group_918(g) 48 | g.explode.each { |e| 49 | if e.kind_of?(Sketchup::Group) 50 | process_group_918(e) 51 | elsif e.kind_of?(Sketchup::Edge) 52 | process_edge_918(e) 53 | end 54 | } 55 | end 56 | 57 | def upgrade_918 58 | groups = [] 59 | aborted = false 60 | Sketchup.active_model.start_operation "Upgrading 918", true 61 | items = Sketchup.active_model.active_path 62 | items.length.downto(0) { Sketchup.active_model.close_active } if items 63 | begin 64 | Sketchup.active_model.entities.each { |e| 65 | if e.kind_of?(Sketchup::Group) 66 | groups.push(e) 67 | elsif e.kind_of?(Sketchup::Edge) 68 | process_edge_918(e) 69 | end 70 | } 71 | groups.each { |g| process_group_918(g) } 72 | rescue 73 | Sketchup.active_model.abort_operation 74 | aborted = true 75 | end 76 | if (@upgrade && !aborted) 77 | Sketchup.active_model.commit_operation 78 | else 79 | Sketchup.active_model.abort_operation 80 | end 81 | end 82 | 83 | end 84 | end 85 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PhlatCut.rb: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | require 'Phlatboyz/Phlatscript.rb' 3 | 4 | module PhlatScript 5 | 6 | # base class for any cut marks made by phlatboyz tools 7 | class PhlatCut 8 | 9 | attr_accessor :cut_reversed 10 | 11 | def PhlatCut.from_edge(edge) 12 | cutkey = edge.get_attribute(Dict_name, Dict_edge_type, false) 13 | cut = nil 14 | if cutkey 15 | PhlatScript.cuts.each { |cut_class| 16 | next if !cut.nil? 17 | if cut_class.cut_key == cutkey 18 | cut = cut_class.load(edge) 19 | end 20 | } 21 | end 22 | return cut 23 | end 24 | 25 | def PhlatCut.by_cutkey(cut_key) 26 | PhlatScript.cuts.each { |cut_class| 27 | if cut_class.cut_key == cut_key 28 | return cut_class 29 | break 30 | end 31 | } 32 | end 33 | 34 | def processed=(val) 35 | end 36 | 37 | def processed 38 | return false 39 | end 40 | 41 | def erase 42 | end 43 | 44 | def self.cut_key 45 | return false 46 | end 47 | 48 | def can_tab? 49 | return false 50 | end 51 | 52 | def cut_points(reverse=false) 53 | end 54 | 55 | def in_polygon?(vertices) 56 | ret = false 57 | self.cut_points { |cp, cut_factor| ret = (ret || Geom.point_in_polygon_2D(cp, vertices, false)) } 58 | return ret 59 | end 60 | 61 | # returns the dictionary attribute for cut_depth_factor of the first entity 62 | def cut_factor 63 | return 0.0 64 | end 65 | 66 | # sets the cut_depth_factor attribute for all entities that are part of this cut 67 | def cut_factor=(factor) 68 | end 69 | 70 | def vertices 71 | self.edge.vertices if (self.edge) 72 | end 73 | 74 | end 75 | 76 | end 77 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PhlatProgress.rb: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | #need some sort of progress bar, cannot find the dll so just do text in the statusbar 3 | require ('Phlatboyz/Phlatscript.rb') 4 | #require 'Win32API' 5 | 6 | module PhlatScript 7 | 8 | # class ProgressDialog 9 | 10 | # def initialize(caption, steps) 11 | # #Win32API.new( dllname, procname, importArray, export ) 12 | # @dlg = Win32API.new("C:/Program Files/Google/Google SketchUp 8/plugins/Phlatboyz/PhlatDLL.dll","ProgressDlg",['P', 'L'],"V") 13 | # @step = Win32API.new("C:/Program Files/Google/Google SketchUp 8/plugins/Phlatboyz/PhlatDLL.dll","ProgressStep",['L'],"V") 14 | # @close = Win32API.new("C:/Program Files/Google/Google SketchUp 8/plugins/Phlatboyz/PhlatDLL.dll","ProgressClose",[],"V") 15 | # @dlg.call(caption, steps) 16 | # end 17 | # 18 | # def step 19 | # @step.call(0) 20 | # end# 21 | 22 | # def position=(position) 23 | # @step.call(position) 24 | # end# 25 | # 26 | # def close 27 | # @close.call 28 | # end 29 | # 30 | # end 31 | # 32 | 33 | # pb = PhProgressBar.new(items_to_process) 34 | # To update the status bar: 35 | # pb.update(item number) 36 | 37 | class PhProgressBar 38 | 39 | @@background = "-" * 50 40 | @@foreground = "*" * 50 41 | 42 | def initialize(total,msg = nil) 43 | if (!total.integer? or total < 0) 44 | total = 100 45 | end 46 | @total = total.to_i 47 | if (msg == nil) 48 | @msg = "" 49 | else 50 | @msg = msg 51 | end 52 | self.update(1) 53 | #puts "set ppct" 54 | @ppct = 0.to_i # previous percent done 55 | end 56 | 57 | def symbols(back,fore) 58 | @@background = back * 50 59 | @@foreground = fore * 50 60 | end 61 | 62 | def update(progress) 63 | if !progress.integer? 64 | progress = progress.to_i 65 | end 66 | now = progress.abs 67 | if now > @total 68 | now = @total 69 | end 70 | pct = (now*100)/@total 71 | pct = 2 if (pct < 2) 72 | pct = pct.to_f 73 | @ppct = @ppct.to_f 74 | diff = (pct - @ppct).abs.to_i 75 | if diff > 0 # avoid updating screen unless there is real change 76 | pct_p = pct / 2 77 | block = @@foreground[0,pct_p-1] + @@background[0,50-pct_p] 78 | Sketchup.set_status_text(@msg + " " + block) 79 | end 80 | @ppct = pct 81 | end 82 | end 83 | 84 | 85 | 86 | end -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PhlatScript GNU Licence Info/Copyright_Information.txt: -------------------------------------------------------------------------------- 1 | 2 | The Phlatscript program and all its files are protected under the GNU General Public License 3 | 4 | Copyright 2008,2009 Phlatboyz,LLC 5 | 6 | This file is part of Phlatscript. 7 | 8 | Phlatscript is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | Phlatscript is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with Foobar. If not, see . 20 | 21 | The GNU General Public License files are included with this program under the folder GNU 22 | 23 | Thank you, 24 | Mark & Trish Carew Phlatboyz,LLC 25 | www.Phlatboyz.com 26 | www.Phlatforum.com 27 | For more information please contact us at kram2422@comcast.net -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PhlatScript GNU Licence Info/lgplv3-147x51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/PhlatScript GNU Licence Info/lgplv3-147x51.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/PhlatTool.rb: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | require 'sketchup.rb' 3 | #require 'Phlatboyz/Constants.rb' 4 | 5 | module PhlatScript 6 | 7 | class PhlatTool 8 | attr_reader :tooltype, :tooltip, :largeIcon, :smallIcon, :statusText, :menuItem, :menuText 9 | 10 | def initialize 11 | toolname = self.class.to_s.sub('PhlatScript::', '') 12 | @tooltype = (PB_MENU_TOOLBAR | PB_MENU_MENU) 13 | @tooltip = PhlatScript.getString("Phlatboyz #{toolname}") 14 | @largeIcon = "images/#{toolname.downcase}_large.png" 15 | @smallIcon = "images/#{toolname.downcase}_small.png" 16 | @statusText = PhlatScript.getString("Phlatboyz #{toolname}") 17 | @menuText = PhlatScript.getString(toolname) 18 | @ip = nil 19 | cursorPath = Sketchup.find_support_file("cursor_#{toolname.downcase}.png", Cursor_directory) 20 | if(cursorPath) 21 | @cursor = UI.create_cursor(cursorPath, 13, 16) 22 | end 23 | end 24 | 25 | def cut_class 26 | return false 27 | end 28 | 29 | def select 30 | Sketchup.active_model.select_tool self 31 | end 32 | 33 | def getContextMenuItems 34 | return false 35 | end 36 | 37 | def onContextMenu(menuItem) 38 | puts "onContextMenu is not defined for #{self.class.to_s}" 39 | end 40 | 41 | def activate 42 | @ip = Sketchup::InputPoint.new 43 | self.reset(nil) 44 | end 45 | 46 | def deactivate(view) 47 | view.invalidate 48 | end 49 | 50 | def resume(view) 51 | Sketchup.status_text = self.statusText 52 | end 53 | 54 | def reset(view) 55 | if(view) 56 | view.model.selection.clear 57 | view.tooltip = nil 58 | view.invalidate 59 | end 60 | Sketchup.status_text = self.statusText 61 | end 62 | 63 | def onSetCursor() 64 | cursor = UI.set_cursor(@cursor) if !@cursor.nil? 65 | end 66 | 67 | def statusText 68 | return "#{self.class.to_s} selected" 69 | end 70 | 71 | protected 72 | 73 | # utility method for collecting all edges connected to edge and adding them 74 | # to edge_array 75 | def collect_connected_edges(edge, edge_array, include_phlat=false, only_phlat=false) 76 | edges = [] 77 | # if the edge is on the outside of a face we can just grab all the 78 | # edges in the face outer loop 79 | edge.faces.each { |face| 80 | next if !edges.empty? 81 | edges = face.outer_loop.edges if (face.outer_loop.edges.include?(edge)) 82 | } 83 | 84 | if edges.empty? 85 | check = [edge] 86 | while (!check.empty?) 87 | cur_edge = check.pop 88 | edges.push(cur_edge) 89 | cur_edge.vertices.each { |v| 90 | v.edges.each { |e| 91 | check.push(e) if (!edges.include?(e)) 92 | } 93 | } 94 | end 95 | edges.compact! 96 | edges.uniq! 97 | end 98 | 99 | # not part of a face so just get all_connected 100 | edges = edge.all_connected if edges.empty? 101 | 102 | # check if any of the edges meet the criteria 103 | edges.each { |e| 104 | if ((e.kind_of?(Sketchup::Edge)) && (include_phlat || !e.phlatedge?) && (!only_phlat || e.phlatedge?)) 105 | edge_array.push(e) 106 | end 107 | } 108 | end 109 | 110 | end 111 | 112 | end 113 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/afterinstall.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SketchUcam - Thing to do After Instal 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |
After install...
14 |
15 |
16 | Back to help index 17 | 18 |
19 |

After installing Sketchucam all features will work without further setup. 20 | However, there are some settings you will want to change to suite your machines size and capabilities. 21 |

22 | 23 | 24 | To make these changes you need to access the "Tools|Phlatboyz|Options|Machine Options" menu item as illustrated at right. 25 |

Things you may need to change

26 |
27 |
Default_safe_width (X) 28 |
Set this to the largest workpiece your machine can take in the X direction. 29 |
Default_safe_height (Y) 30 |
Set this to the largest workpiece Y size. 31 |
Default_overhead_gantry 32 |
If all you have is a Phlatprinter, set this to false. If all you have is a gantry type machine, set this to true. If you have both styles, set to the one you use the most. 33 |
34 |
35 |
36 |
Min_z 37 | It is VERY IMPORTANT that you get these settings correct. 38 | Do NOT set Min_Z to zero unless you also set Default_tabletop is Z-Zero on the Misc Options dialog to TRUE, and NEVER change it 39 | in the parameters dialog. Failing to do this correctly will result in faulty G-code generation.
40 | Min_z = -maxZtravel
41 | Max_z = maxZtravel
42 | are the preferred settings, allowing both 'material top' and 'table top' as Z-zero to work properly. 43 |
44 |
Set this to negative (-) your Z travel. G-code will never contain negative Z travel more than this figure. 45 |
Max_z 46 |
Set this to your Z travel. G-code will never contain Z travel more than this figure. 47 |
48 | 49 | You can read the full help for that dialog here. 50 | 51 |
52 |
53 |
54 |
55 | 56 | Now visit the "Tools|Phlatboyz|Options|Tool Options" menu item as illustrated at right.
57 | If you have a flat bed machine you will want to set the
58 | Default_cut_depth_factor to 100%
59 | This will prevent it cutting into the table. A cut depth factor greater 100% will cut through the material and into the table.
60 | Read the full help for that dialog here 61 |
62 | 63 |
64 |
65 |
66 | 67 | Now visit the "Tools|Phlatboyz|Options|Feature Options" menu item as illustrated at right.
68 | Read the help for those options and make changes as needed for your machine. 69 | 70 |

GRBL: if you are running the GRBL controller will will want to set 'Use_exact_path' to false 71 |

72 | 73 |
74 | 75 | 76 |
77 | 78 | 79 | 80 |
81 | 82 |
83 |

 

84 |

85 | 86 | Thank you for your interest in the Phlatboyz project. Please take the time to visit the Phlatforum 87 | for lots of great people sharing great ideas and designs created with SketchUcam on their Phlatboyz machines! 88 |

89 |
90 |
91 | 92 | 93 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/edgemenu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Phlatboyz SketchUcam Edge Context Menu 6 | 7 | 8 | 9 | 10 |
11 |
12 | PHLATBOYZ 13 | 14 |
Phlatboyz SketchUcam(PhlatScripT)
SketchUcam Version 1.3
May 2015
15 | 16 |
17 | 18 | 19 | 20 | 23 | 24 | 25 | 28 | 29 | 30 | 34 | 39 | 42 | 43 | 44 | 48 | 53 | 54 | 55 | 59 | 64 | 65 | 66 | 67 | 71 | 78 | 79 | 80 | 81 |
21 | SketchUcam Edge Context Menu
Back to help index
22 |
26 | These menu items appear in the "Phlat Edge" sub menu when right clicking on any edge. 27 |
31 | Inside Edge 32 |   33 | 35 | Selecting this command will mark selected edges as SketchUcam Inside 36 | edge. No other change will be made to the edge. This allows you to 37 | select individual edges in SketchUp and create SketchUcam cut edges from 38 | them.   40 | 41 |
45 | Outside Edge 46 |   47 | 49 | Selecting this command will mark selected edges as SketchUcam Outside 50 | edges. This allows you to select individual edges in SketchUp and 51 | create SketchUcam cut edges from them. No other change will be made to 52 | the edge.  
56 | Erase Selected Phlat Edges 57 |   58 | 60 | This command will clear all selected edges that are currently marked as SketchUcam edges. 61 |

Note: The original design edges will remain but the original SketchUcam edges will be deleted. 62 |   63 |
68 | Phlatten Selected Edges 69 |   70 | 72 | This command will set all selected parts to 0 on the Z plane. This is a 73 | great tool for laying parts out in the safe cutting area before 74 | assigning cuts to them. A great feature of this tool is that it ensures 75 | that the part is perfectly flat and that the proper face (default blue) 76 | is facing upward.   77 |
82 | 83 | 84 |
85 |

 

86 |

87 | 88 | Thank you for your interest in the SketchUcam project. Please take the time to visit the Phlatforum for lots of great people sharing great ideas and designs created with the PhlatScripT on their Phlatboyz machines! 89 |

90 |
91 |
92 | 93 | 94 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/howto_3d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO use the 3D generator 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
Phlatboyz SketchUcam(PhlatScripT) 15 | 16 |
17 |
18 |
19 | Back to help index 20 |

HOWTO use the 3D G-code generator

21 | 22 | The 3D script by Nicholas Peshman has been incorporated into SketchUcam so that it can use 23 | the parameters on the Parameters Dialog. 24 | 25 | It will fetch bit diameter, stepover% and multipass depth from the dialog. 26 | 27 |
    28 |
  1. Move Group or groups (of 3D objects) to within the safe area starting from 0,0 and on the 0 plane 29 |
  2. Tick the 'Generate 3D Gcode' box in the parameters. 30 |
  3. Click 'Generate G-code' 31 |
32 | 33 | WARNING: 34 | This script is still under development and does not produce perfect output, yet. 35 | 36 |

37 | Here is an old video by Nicholas about using this module
38 | https://www.youtube.com/watch?v=HUNpZ0-bFRI
39 | and actually cutting something similar...
40 | https://www.youtube.com/watch?v=BZMKPhxizmM 41 |

42 | 43 |
44 |
45 |
46 |
47 | 48 | 49 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/howto_profileexchange.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO exchange tool profiles with friends 5 | 6 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 |
Phlatboyz PhlatScripT 19 |
SketchUcam Version 1.1c
Feb 2014
20 |
21 |
22 |
23 | Back to help index 24 |

HOWTO exchange tool profiles with friends

25 |
26 | Tool and material profiles can be exchanged between users, sharing the ease of setup for particular materials. 27 | This document will guide you through exchangeing profiles with other users.
28 | NOTE: Profiles only work with Sketchup units set to millimeters or inches (decimal). 29 |
30 | 31 | 32 | 33 | 34 | 37 | 38 | 39 | 42 | 71 | 72 | 73 | 76 | 84 | 85 | 86 |
35 |

Exchanging profiles

36 |
40 | Giving your profiles away 41 | 43 | The profiles are stored in the Sketchup folder within each users APPDATA folder which you can display via the 44 | Tools|Phlatboyz|Display Profiles Folder 45 | menu item. 46 | [MAC: see bottom of page].
47 | Should that menu item not open a file browser in the relevant folder containing a number of .TPR files follow the instructions below
48 | The path to this folder varies between Windows versions but can easily be found by doing the following: 49 |
50 |
51 |
52 |
do this 53 |
Click 'Start' 54 |
Click 'Run' 55 |
Paste '%APPDATA%/Sketchup' 56 |
Press Enter 57 |
or this 58 |
Open 'My Computer' 59 |
Paste '%APPDATA%/Sketchup' in the address bar 60 |
Press Enter 61 |
or this 62 |
Use 'My Computer' to navigate to (may vary between Windows versions)
63 | C:\Users\yourusername\AppData\Roaming\SketchUp
64 |
65 |
66 | Windows will open a file explorer with the folder displayed. 67 | All the 'somename.TPR' files are your profiles. 68 | To give them to someone else, simply email them, transfer them with a flash stick or post them on phlatforum.com 69 | in the 'Material/Bit Specific Feedrates' topic. 70 |
74 | Installing a downloaded profile 75 | 77 | To install a profile that you have downloaded: 78 |
    79 |
  1. Open your APPDATA folder (as above). 80 |
  2. Copy or move the downloaded profile file to that folder. 81 |
  3. Open Sketchup and confirm that you can load it. 82 |
83 |
87 | 88 |
89 |
90 | Mac/Linux users: you will be running Sketchup under Wine and the APPDATA environment variable does not exist.
91 | The folder is in a path similar to
92 | /home/username/.wine/c_drive/users/username/Application Data/Sketchup
93 | You may need to set your folder viewer to 'display hidden files' in order to see the .wine folder 94 |
95 | 96 |
97 |
98 | 99 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/SketchUcam-Window-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/SketchUcam-Window-Logo.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones04.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones05.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones06.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones07.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones08.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones08png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones08png.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bones09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bones09.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/bonesbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/bonesbit.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer-diag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer-diag.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer-s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer-s1.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer-s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer-s2.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer-s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer-s3.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/chamfer03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/chamfer03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/csink01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/csink01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/csink02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/csink02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/csink03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/csink03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/csink04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/csink04.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/csinkwooda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/csinkwooda.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/edgecontext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/edgecontext.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/holepattern01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/holepattern01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/holepattern02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/holepattern02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/holepattern03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/holepattern03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/howto01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/howto01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/howto02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/howto02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/howto03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/howto03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/laser1a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/laser1a.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/laser2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/laser2a.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/laser3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/laser3a.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-feature.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-file.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-holefeatures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-holefeatures.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-machine.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-misc.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options-tool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/options.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/optsummary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/optsummary.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/params.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/phlat01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/phlat01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/phlatbones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/phlatbones.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/pocket1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/pocket1.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/pocket2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/pocket2.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/pocket3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/pocket3.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/pocket4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/pocket4.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/profileload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/profileload.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/profiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/profiles.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/profilesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/profilesave.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/quicktoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/quicktoolbar.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp01a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp01a.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp02.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp03.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp04.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp05.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp06.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp07.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp08.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp09.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramp10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramp10.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/ramplimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/ramplimit.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/sfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/sfm.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/sfm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/sfm2.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/toolbar.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/toolchange01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/toolchange01.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/images/toolsmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/html/images/toolsmenu.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/machelp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO use Ramping 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
Phlatboyz SketchUcam(PhlatScripT) 15 |
16 | SketchUcam Version 1.4d
Jan 2017 17 |
18 |
19 |
20 |
21 | Back to help index 22 |

Help for MAC users

23 | 24 |

Special keys:

25 |

Some Mac keyboards do not have the HOME and END keys (and ALT may not be labelled).

26 |

There are alternate combinations that simulate those keys:

27 |
    28 |
  • HOME = "FN-LEFT ARROW" 29 |
  • END = "FN-RIGHT ARROW" 30 |
  • ALT = OPTION 31 |
32 |

Sometimes you may have to hit the FN-LEFT twice before the dialog comes up.

33 |

Thanks to OpenBuilds user andycbrklyn for help with this.

34 |
35 |
36 |

37 |
38 | 39 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/html/style.css: -------------------------------------------------------------------------------- 1 | body, div, span { 2 | font-family: Verdana; 3 | } 4 | body { 5 | background-color: grey; 6 | text-align: center; 7 | max-width: 1024px; 8 | padding-left:0.5%; 9 | padding-right:0.5%; 10 | margin-left: auto; 11 | margin-right: auto; 12 | } 13 | div.shell { 14 | /*background-color: #eee;*/ 15 | background-color: #ddeeff; 16 | /*background-color: white;*/ 17 | font-size: 1.05em; 18 | } 19 | 20 | div.intro-name { 21 | text-align:center; 22 | font-size: 1.20em; 23 | font-weight: bold; 24 | padding-top:25px; 25 | } 26 | div.intro-name div { 27 | font-size: 0.60em; 28 | font-weight: normal; 29 | } 30 | div.intro-title { 31 | text-align:center; 32 | margin:10px; 33 | font-size: 1.10em; 34 | font-weight: bold; 35 | padding-top: 15px; 36 | } 37 | div.intro { 38 | text-align: justify; 39 | margin:5px; 40 | padding: 5px; 41 | font-size: 0.90em; 42 | } 43 | 44 | 45 | .command-image { 46 | /*background-color: #ededed;*/ 47 | background-color: #ddeeff; 48 | height: 100px; 49 | font-weight: bold; 50 | font-size: 0.90em; 51 | vertical-align:center; 52 | padding:10px; 53 | border-top: thin solid white; 54 | border-left: thin solid white; 55 | border-right: thin solid #cccccc; 56 | border-bottom: thin solid #cccccc; 57 | } 58 | .command-description { 59 | /*background-color: #ededed;*/ 60 | background-color: #eaecfa; 61 | /*margin: 2px;*/ 62 | padding: 15px; 63 | border-top: thin solid white; 64 | border-left: thin solid white; 65 | border-right: thin solid #cccccc; 66 | border-bottom: thin solid #cccccc; 67 | font-size: 0.90em; 68 | vertical-align: top; 69 | } 70 | 71 | .command-title { 72 | font-size: 1.00em; 73 | font-weight: bold; 74 | /*border-bottom: thin solid blue;*/ 75 | text-align: center; 76 | padding-top: 25px; 77 | border-top: thin solid white; 78 | border-left: thin solid white; 79 | border-right: thin solid #cccccc; 80 | border-bottom: thin solid #cccccc; 81 | text-decoration: underline; 82 | } 83 | .command-subtitle { 84 | font-size: 0.70em; 85 | font-style: italic; 86 | } 87 | .newcolour { 88 | color: #000000; 89 | } 90 | hr { 91 | background-color: #6699ff; 92 | height: 2px; 93 | border: 0; 94 | } 95 | td { 96 | text-align: justify; 97 | } 98 | dt { 99 | margin-top: 5px; 100 | font-weight: bold; 101 | } 102 | .index { 103 | line-height: 1.6em; 104 | } 105 | img { 106 | margin-left: 1em; 107 | } -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/OBicon_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/OBicon_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/OBicon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/OBicon_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/Pocket_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/Pocket_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/Pocket_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/Pocket_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/andy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/andy.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/bracket_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/bracket_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/bracket_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/bracket_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cboretool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cboretool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cboretool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cboretool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/centerlinetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/centerlinetool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/centerlinetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/centerlinetool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/comment_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/comment_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/comment_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/comment_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/csinktool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/csinktool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/csinktool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/csinktool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_centerlinetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_centerlinetool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_centerlinecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_centerlinecut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_foldcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_foldcut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_insidecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_insidecut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_outsidecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_outsidecut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_plungecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_plungecut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erase_tabcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erase_tabcut.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_erasetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_erasetool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_foldtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_foldtool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_insidecuttool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_insidecuttool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_outsidecuttool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_outsidecuttool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_plungetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_plungetool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_safetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_safetool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_tabtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_tabtool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/cursor_vtabtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/cursor_vtabtool.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/erasetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/erasetool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/erasetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/erasetool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/foldtool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/foldtool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/foldtool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/foldtool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/gcode_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/gcode_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/gcode_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/gcode_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/helptool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/helptool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/helptool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/helptool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/insidecuttool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/insidecuttool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/insidecuttool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/insidecuttool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/joiner_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/joiner_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/joiner_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/joiner_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/outsidecuttool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/outsidecuttool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/outsidecuttool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/outsidecuttool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/parameterstool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/parameterstool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/parameterstool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/parameterstool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/phlatboyz_homepage_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/phlatboyz_homepage_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/phlatboyz_homepage_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/phlatboyz_homepage_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/plungetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/plungetool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/plungetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/plungetool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/reorder_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/reorder_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/reorder_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/reorder_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/rotate_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/rotate_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/rotate_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/rotate_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/safetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/safetool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/safetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/safetool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/tabtool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/tabtool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/tabtool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/tabtool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/toolchange_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/toolchange_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/toolchange_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/toolchange_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/zerotool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/zerotool_large.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/images/zerotool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/Phlatboyz/images/zerotool_small.png -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/CenterLineCut.rb: -------------------------------------------------------------------------------- 1 | 2 | 3 | require 'Phlatboyz/PhlatCut.rb' 4 | 5 | module PhlatScript 6 | 7 | class CenterLineCut < PhlatCut 8 | attr_accessor :edge 9 | 10 | def CenterLineCut.cut_key 11 | return Key_centerline_cut 12 | end 13 | 14 | def CenterLineCut.load(edge) 15 | return self.new(edge) 16 | end 17 | 18 | def CenterLineCut.cut(edges) 19 | cuts = [] 20 | edges.each do | e | 21 | cut = CenterLineCut.new 22 | cut.cut(e) 23 | cuts.push(cut) 24 | end 25 | return cuts 26 | end 27 | 28 | def CenterLineCut.preview(view, edges) 29 | view.drawing_color = Color_centerline_cut 30 | view.line_width = 5.0 31 | begin 32 | edges.each { |e| view.draw_line(e.start.position, e.end.position) } 33 | rescue 34 | UI.messagebox "Exception in CenterLine preview "+$! 35 | end 36 | end 37 | 38 | def cut(edge) 39 | model = Sketchup.active_model 40 | model.start_operation "Creating Center Line", true 41 | @edge = edge 42 | @edge.material = Color_centerline_cut 43 | @edge.set_attribute(Dict_name, Dict_edge_type, Key_centerline_cut) 44 | model.commit_operation 45 | end 46 | 47 | def erase 48 | @edge.delete_attribute Dict_name, Dict_cut_depth_factor 49 | @edge.delete_attribute Dict_name, Dict_edge_type 50 | @edge.material = nil 51 | end 52 | 53 | def initialize(edge=nil) 54 | super() 55 | @edge = edge 56 | end 57 | 58 | def cut_points(reverse=false) 59 | cf = self.cut_factor 60 | # puts "cut_points reverse #{reverse} cut_reversed#{@cut_reversed}" 61 | if @cut_reversed 62 | # if reverse #cut_reversed and reverse don't always match for centerline cuts, messes up ramping 63 | yield(@edge.end.position, cf) 64 | yield(@edge.start.position, cf) 65 | else 66 | yield(@edge.start.position, cf) 67 | yield(@edge.end.position, cf) 68 | end 69 | end 70 | 71 | def cut_reversed? 72 | @cut_reversed 73 | end 74 | 75 | # returns whether the first entity has been marked as milled in gcodeutil.rb 76 | def processed? 77 | return @edge.get_attribute(Dict_name, Dict_object_mark, false) 78 | end 79 | 80 | # marks all entities as having been milled in gcodeutil 81 | def processed=(val) 82 | @edge.set_attribute(Dict_name, Dict_object_mark, val) 83 | end 84 | 85 | def processed 86 | return @edge.get_attribute(Dict_name, Dict_object_mark, false) 87 | end 88 | 89 | # returns the dictionary attribute for cut_depth_factor of the first entity 90 | def cut_factor 91 | return @edge.get_attribute(Dict_name, Dict_cut_depth_factor, $phoptions.default_fold_depth_factor).to_f 92 | end 93 | 94 | # sets the cut_depth_facotr attribute for all entities that are part of this cut 95 | def cut_factor=(factor) 96 | f = factor % 1000 97 | (f = Max_fold_depth_factor) if (f > Max_fold_depth_factor) 98 | @edge.set_attribute(Dict_name, Dict_cut_depth_factor, f.to_f) 99 | end 100 | 101 | end 102 | 103 | end 104 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/ChamferWizard.rb: -------------------------------------------------------------------------------- 1 | require 'sketchup.rb' 2 | require 'Phlatboyz/PhlatTool.rb' 3 | require 'Phlatboyz/utils/SketchupDirectoryUtils.rb' 4 | 5 | module PhlatScript 6 | 7 | class ChamferTool < PhlatTool 8 | 9 | def initialize 10 | super() 11 | @tooltype=(PB_MENU_MENU) 12 | @tooltip="Set Chamfer parameters" 13 | @statusText="Set Chamfer parameters" 14 | @menuText="Set Chamfer parameters" 15 | end 16 | 17 | 18 | # a wizard to set tool diameter and cut depth that will achieve a chamfer cut with a v bit 19 | # cut depth must be less than the current material thickness 20 | # ==== inputs 21 | # +A+ included angle of the tool
22 | # +D+ tool diameter, total diam of sloped part
23 | # +CD+ cutter depth, tip to widest part
24 | # +TD+ Tip Diameter, can be 0, must be less than D
25 | # +WIDTH+ Width of desired chamfer, must be <= D/2 26 | # ==== outputs 27 | # +VD+ virtual tool diameter to use for cuts
28 | # +DD+ cut depth, < material thickness 29 | def select 30 | 31 | 32 | 33 | prompts=[ 34 | 'Included angle ', 35 | 'Tool diameter ', 36 | 'Tip Diameter ', 37 | 'Cutter Depth ', 38 | 'Width of chamfer ' 39 | ]; 40 | defaults=[ 41 | 90.0, 42 | 12.mm, 43 | 2.mm, 44 | 5.mm, 45 | 1.mm 46 | ]; 47 | list=[ 48 | '', 49 | '', 50 | '', 51 | '', 52 | '' 53 | ]; 54 | 55 | input=UI.inputbox(prompts, defaults, list, 'Chamfer Wizard (read the help!)') 56 | # input is nil if user cancelled 57 | if (input) 58 | angle = input[0] #float 59 | d = input[1] #lengths 60 | td = input[2] 61 | cd = input[3] 62 | width = input[4] 63 | 64 | #cross check, calculate the angle from the height width and tipwidth 65 | wo = (d - td)/2 # width of half cutter 66 | h = cd # height of cutting portion 67 | theta = 2 * PhlatScript.todeg(Math::atan(wo/h)) 68 | puts "theta #{theta}" 69 | if ( (theta - angle).abs > 1) 70 | UI.messagebox("Angle mismatch, please check parameters") 71 | end 72 | 73 | #calculate virtual width and cut depth 74 | r1 = d/2 - td/2 75 | a = angle/2 76 | b = 90.0 -a 77 | wo = (r1 - width) / 2 # we are centering cut on the cutter 78 | d0 = wo / Math::tan(PhlatScript.torad(b)) 79 | 80 | dd = cd - d0 # cut depth 81 | vd = d - 2*wo - 2*width # virtual cutter diam 82 | 83 | puts "Virtual diameter #{vd.to_l.to_s}" 84 | puts "Virtual cut depth #{dd.to_l.to_s}" 85 | 86 | PhlatScript.bitDiameter = vd 87 | PhlatScript.cutFactor = dd / PhlatScript.materialThickness * 100.0 88 | if (PhlatScript.cutFactor > 100.0) 89 | UI.messagebox("Cut factor% is too deep! #{PhlatScript.cutFactor}"); 90 | end 91 | if (dd > cd) 92 | UI.messagebox("Cut depth is greater than cutter depth!"); 93 | end 94 | 95 | end # if input 96 | 97 | 98 | # UI.messagebox(msg,MB_MULTILINE) 99 | end #select 100 | end # class 101 | 102 | end 103 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/FoldCut.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'Phlatboyz/PhlatCut.rb' 3 | require 'Phlatboyz/Tools/CenterLineCut.rb' 4 | 5 | module PhlatScript 6 | 7 | class FoldCut < CenterLineCut 8 | attr_accessor :wide_cut, :edge 9 | 10 | def FoldCut.cut_key 11 | return Key_fold_cut 12 | end 13 | 14 | def FoldCut.cut(edges, wide=false) 15 | cuts = [] 16 | edges.each do | e | 17 | cut = FoldCut.new 18 | cut.wide_cut = wide 19 | cut.cut(e) 20 | cuts.push(cut) 21 | end 22 | return cuts 23 | end 24 | 25 | def FoldCut.preview(view, edges, wide=false) 26 | view.drawing_color = fold_color(wide) 27 | view.line_width = 5.0 28 | begin 29 | edges.each { |e| view.draw_line(e.start.position, e.end.position) } 30 | rescue 31 | # UI.messagebox "Exception in Fold preview "+$! 32 | end 33 | end 34 | 35 | def FoldCut.fold_color(wide_cut = false) 36 | return (wide_cut ? Color_fold_wide_cut : Color_fold_cut) 37 | end 38 | 39 | def cut(edge) 40 | model = edge.model 41 | model.start_operation("Creating Fold Line", true) 42 | @edge = edge 43 | if !@wide_cut 44 | if @edge.length > Fold_shorten_width 45 | ep1 = @edge.start.position 46 | ep2 = @edge.end.position 47 | v = ep1.vector_to ep2 48 | half = Fold_shorten_width/2 49 | point1 = ep1.offset(v, half) 50 | point2 = ep2.offset(v, -half) 51 | edge.model.entities.erase_entities @edge 52 | @edge = model.entities.add_line(point1, point2) 53 | @edge.set_attribute(Dict_name, "fold_shorten", true) 54 | end 55 | end 56 | @edge.material = FoldCut.fold_color(@wide_cut) 57 | @edge.set_attribute Dict_name, Dict_edge_type, Key_fold_cut 58 | model.commit_operation 59 | end 60 | 61 | def erase 62 | if @edge.get_attribute(Dict_name, "fold_shorten", false) 63 | # the edge was shortened when cut, restore original length 64 | entities = Sketchup.active_model.entities 65 | ep1 = @edge.start.position 66 | ep2 = @edge.end.position 67 | v = ep1.vector_to ep2 68 | half = Fold_shorten_width/2 69 | point1 = ep1.offset(v, -half) 70 | point2 = ep2.offset(v, half) 71 | entities.erase_entities @edge 72 | @edge = entities.add_line(point1, point2) 73 | end 74 | @edge.delete_attribute(Dict_name, Dict_cut_depth_factor) 75 | @edge.delete_attribute(Dict_name, Dict_edge_type) 76 | @edge.delete_attribute(Dict_name, "fold_shorten") 77 | @edge.material = nil 78 | @edge.find_faces 79 | end 80 | 81 | # returns the dictionary attribute for cut_depth_factor of the first entity 82 | def cut_factor 83 | return @edge.get_attribute(Dict_name, Dict_cut_depth_factor, $phoptions.default_fold_depth_factor) 84 | end 85 | 86 | # sets the cut_depth_facotr attribute for all entities that are part of this cut 87 | def cut_factor=(factor) 88 | f = factor % 1000 89 | (f = Max_fold_depth_factor) if (f > Max_fold_depth_factor) 90 | @edge.set_attribute(Dict_name, Dict_cut_depth_factor, f) 91 | end 92 | 93 | end 94 | 95 | end 96 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/FoldTool.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'sketchup.rb' 3 | #require 'Phlatboyz/Constants.rb' 4 | require 'Phlatboyz/PhlatTool.rb' 5 | require 'Phlatboyz/tools/CenterLineTool.rb' 6 | require 'Phlatboyz/Tools/FoldCut.rb' 7 | 8 | module PhlatScript 9 | 10 | class FoldTool < CenterLineTool 11 | @@wide_cut = false 12 | 13 | def onLButtonUp(flags, x, y, view) 14 | @leftButtonDown = false 15 | edges = view.model.selection 16 | cuts = FoldCut.cut(edges, @@wide_cut) 17 | cuts.each { |cut| cut.cut_factor = compute_fold_depth_factor } 18 | view.model.selection.clear 19 | view.lock_inference 20 | end 21 | 22 | def onKeyDown(key, repeat, flags, view) 23 | if key == VK_END # togle Wide Mode #87 # W key 24 | @@wide_cut = !@@wide_cut 25 | #self.compute_fold_depth_factor() 26 | #PhlatScript.display_fold_depth_factor() 27 | Sketchup.status_text = statusText 28 | view.invalidate 29 | else 30 | super 31 | end 32 | end 33 | 34 | def draw(view) 35 | @ph.all_picked.each { |e| 36 | if (e.kind_of?(Sketchup::Edge)) 37 | next if PhlatCut.from_edge(e) 38 | FoldCut.preview(view, collect_edges(e), @@wide_cut) 39 | end 40 | } 41 | # FoldCut.preview(view, collect_edges(@ip.edge), @@wide_cut) if !@ip.edge.nil? 42 | end 43 | 44 | def cut_class 45 | return FoldCut 46 | end 47 | 48 | def statusText 49 | if @@wide_cut 50 | return "Select edges. [Shift]select connected edges. [End]toggle Wide Mode. [<--][-->]scroll preset depths. ** Wide Mode **" 51 | else 52 | return "Select edges. [Shift]select connected edges. [End]toggle Wide Mode. [<--][-->]scroll preset depths. ** Short Mode **" 53 | end 54 | end 55 | 56 | def selectConnectedEdges? 57 | return !@connected_edges 58 | end 59 | 60 | end 61 | 62 | end 63 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/HelpTool.rb: -------------------------------------------------------------------------------- 1 | require 'Phlatboyz/PhlatTool.rb' 2 | require 'Phlatboyz/utils/SketchupDirectoryUtils.rb' 3 | # $Id$ 4 | module PhlatScript 5 | 6 | class HelpTool < PhlatTool 7 | def select 8 | help_file = Sketchup.find_support_file "help.html", "Plugins/Phlatboyz/html" 9 | if (help_file) 10 | # Open the help_file in a web browser 11 | UI.openURL "file://" + help_file 12 | else 13 | UI.messagebox "Failed to open help file" 14 | end 15 | end 16 | end 17 | 18 | class SummaryTool < PhlatTool 19 | 20 | def initialize 21 | super() 22 | @tooltype=(PB_MENU_MENU) 23 | @tooltip="Options Summary" 24 | @statusText="Options Summary display" 25 | @menuText="Options Summary" 26 | end 27 | 28 | def select 29 | msg = "Summary of your settings from MyOptions.ini\n" + 30 | " Default_show_gplot = #{$phoptions.default_show_gplot?}\n" + 31 | " Default_pocket_direction = #{$phoptions.default_pocket_direction?}\n" + 32 | " Min_z = #{$phoptions.min_z}\n" + 33 | " Max_z = #{$phoptions.max_z}\n" + 34 | " Use_compatible_dialogs = #{$phoptions.use_compatible_dialogs?}\n" + 35 | " Use_vtab_speed_limit = #{$phoptions.use_vtab_speed_limit?}\n" + 36 | " Use_exact_path = #{$phoptions.use_exact_path?}\n" + 37 | " Use_incremental_ij = #{$phoptions.use_incremental_ij?}\n" + 38 | " Always_show_safearea = #{$phoptions.always_show_safearea?}\n" + 39 | " Use_reduced_safe_height = #{$phoptions.use_reduced_safe_height?}\n" + 40 | " Use_pocket_CW = #{$phoptions.use_pocket_cw?}\n" + 41 | " Use_plunge_CW = #{$phoptions.use_plunge_cw?}\n" + 42 | " Use_outfeed = #{$phoptions.use_outfeed?}\n" + 43 | " Use_Home_Height = #{$phoptions.use_home_height?}\n" 44 | if $phoptions.use_home_height? 45 | msg += " Default_Home_Height = #{$phoptions.default_home_height}\n" 46 | end 47 | msg += " Profile_save_material_thickness = #{$phoptions.profile_save_material_thickness?}\n" 48 | UI.messagebox(msg,MB_MULTILINE) 49 | end #select 50 | end # class 51 | 52 | # open a file browser with the APPDATA/Sketchup folder current, probably only work on Windows 53 | class DisplayProfileFolderTool < PhlatTool 54 | 55 | def initialize 56 | super() 57 | @tooltype=(PB_MENU_MENU) 58 | @tooltip="Display Profiles folder" 59 | @statusText="Display profile folder" 60 | @menuText="Display Profiles Folder" 61 | end 62 | 63 | def select 64 | # path = ENV['APPDATA'] + "\\Sketchup" 65 | path = PhlatScript.toolsProfilesPath() 66 | if File.exist?(path) 67 | UI.openURL("file://" + path) 68 | else 69 | UI.messagebox('First you need to save a profile before you can display the folder that contains it') 70 | end 71 | 72 | end #select 73 | end # class 74 | 75 | end 76 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/HomepageTool.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'Phlatboyz/PhlatTool.rb' 3 | 4 | module PhlatScript 5 | 6 | class HomepageTool < PhlatTool 7 | 8 | def initialize 9 | super() 10 | @tooltype = 3 11 | @tooltip = PhlatScript.getString("Go To Phlatboyz Homepage") 12 | @largeIcon = "images/phlatboyz_homepage_large.png" 13 | @smallIcon = "images/phlatboyz_homepage_small.png" 14 | @statusText = PhlatScript.getString("Go To Phlatboyz Homepage") 15 | @menuText = PhlatScript.getString("Homepage") 16 | end 17 | 18 | def select 19 | UI.openURL("http://phlatboyz.com") 20 | end 21 | 22 | end 23 | 24 | end -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/OBCtool.rb: -------------------------------------------------------------------------------- 1 | require 'sketchup.rb' 2 | # David the Swarfer, 2019 3 | require 'Phlatboyz/PhlatboyzMethods.rb' 4 | require 'Phlatboyz/PhlatTool.rb' 5 | require 'net/http' #only from Sketchup Make 2014 upwards 6 | 7 | module PhlatScript 8 | 9 | # A tool for sending Gcode to the OpenbuildsCONTROL interface 10 | class OBCsquirt < PhlatTool 11 | 12 | def initialize 13 | super() 14 | toolname = 'Send to OpenBuildsCONTROL' 15 | @tooltype=(PB_MENU_TOOLBAR) 16 | @tooltip="Send Gcode" 17 | @statusText= "Send latest file to OpenbuildsCONTROL" 18 | @largeIcon = "images/OBicon_large.png" 19 | @smallIcon = "images/OBicon_small.png" 20 | @cmmd = nil 21 | @server = 'mymachine.openbuilds.com' 22 | end 23 | 24 | def statusText 25 | return @statusText 26 | end 27 | 28 | def cmmd=(val) 29 | @cmmd = val 30 | end 31 | # Send the latest file to OBCONTROL 32 | def select 33 | if haveOBC? 34 | puts "haveobc" 35 | if sendToOBC 36 | puts "sent" 37 | end 38 | else 39 | UI.messagebox("OpenBuildsCONTROL is not active") 40 | end 41 | end #select 42 | 43 | # detect an instance of OBCONTROL 44 | def haveOBC? 45 | url = URI("http://#{@server}:3000/api/version") 46 | #check if the driver is loaded 47 | begin 48 | res = Net::HTTP.get_response(url) 49 | rescue Errno::ECONNREFUSED, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, 50 | Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e 51 | return false 52 | #puts "rescued - OB server not found at #{server}" 53 | #exit 54 | end 55 | if res.code == '200' 56 | ver = Net::HTTP.get(url) 57 | puts ver 58 | return true 59 | else 60 | return false 61 | #puts 'Driver not found with code #{res.code}' 62 | #exit 63 | end 64 | end 65 | 66 | # sned the most recently saved gcode file to the OBC instance 67 | # only call this if OBC actually exists 68 | def sendToOBC 69 | puts "sendToOBC" 70 | url = URI("http://#{@server}:3000/upload") 71 | 72 | filename = PhlatScript.cncFileDir + PhlatScript.cncFileName 73 | puts " #{filename}" 74 | data = File.read(filename) 75 | 76 | request = Net::HTTP::Post.new(url) 77 | #request["User-Agent"] = 'PostmanRuntime/7.13.0' 78 | #request["Accept"] = '*/*' 79 | request["Cache-Control"] = 'no-cache' 80 | #request["Postman-Token"] = '9cd91cbf-4d85-4e0f-ad35-6cef45453e71,1c053219-f3ad-4d43-9f3f-46c22253f5bc' 81 | request["Host"] = 'mymachine.openbuilds.com:3001' 82 | request["accept-encoding"] = 'gzip, deflate' 83 | request["content-type"] = 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' 84 | request["Connection"] = 'keep-alive' 85 | request["cache-control"] = 'no-cache' 86 | # important to add the actual file data to the body! 87 | request.body = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"edited-gcode.gcode\"\r\nContent-Type: false\r\n\r\n#{data}\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" 88 | #now update the body length 89 | request["content-length"] = request.body.length 90 | 91 | #by doing it this way I can set use_ssl to true, otherwise we must use http not https 92 | # I do get ssl cert errors when sending to a remote machine 93 | response = Net::HTTP.start(url.hostname, url.port, use_ssl: false) do |http| 94 | res = http.request(request) 95 | case res 96 | when Net::HTTPSuccess then 97 | puts ' success' 98 | else 99 | puts ' failed' 100 | end 101 | end 102 | end 103 | 104 | end # class 105 | end # module -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/OffsetCut.rb: -------------------------------------------------------------------------------- 1 | 2 | 3 | require 'Phlatboyz/PhlatCut.rb' 4 | require 'Phlatboyz/tools/PhlatArc.rb' 5 | 6 | module PhlatScript 7 | 8 | class OffsetCut < PhlatCut 9 | include PhlatArc 10 | attr_accessor :edge 11 | 12 | def OffsetCut.load(edge) 13 | return self.new(edge) 14 | end 15 | 16 | def OffsetCut.preview(view, pts) 17 | view.drawing_color = Color_cut_drawing 18 | view.draw(GL_LINE_LOOP, pts) 19 | end 20 | 21 | def OffsetCut.cut(edges) 22 | cuts = [] 23 | edges.each do | e | 24 | cut = self.new 25 | cut.cut(e) 26 | cuts.push(cut) 27 | end 28 | return cuts 29 | end 30 | 31 | def cut(edge) 32 | @edge = edge 33 | Sketchup.active_model.start_operation "Assigning Offset Cut", true 34 | @edge.set_attribute(Dict_name, Dict_edge_type, self.class.cut_key) 35 | @edge.material = edge_material 36 | Sketchup.active_model.commit_operation 37 | end 38 | 39 | def erase 40 | Sketchup.active_model.entities.erase_entities @edge 41 | end 42 | 43 | def initialize(edge=nil) 44 | super() 45 | @edge = edge 46 | end 47 | 48 | # marks all entities as having been milled in gcodeutil 49 | def processed=(val) 50 | @edge.set_attribute(Dict_name, Dict_object_mark, val) 51 | end 52 | 53 | def processed 54 | return @edge.get_attribute(Dict_name, Dict_object_mark, false) 55 | end 56 | 57 | def cut_points(reverse=false) 58 | cf = self.cut_factor 59 | if reverse 60 | yield(@edge.end.position, cf) 61 | yield(@edge.start.position, cf) 62 | else 63 | yield(@edge.start.position, cf) 64 | yield(@edge.end.position, cf) 65 | end 66 | end 67 | 68 | end 69 | 70 | class InsideCut < OffsetCut 71 | def edge_material 72 | return Color_inside_cut 73 | end 74 | 75 | def InsideCut.cut_key 76 | return Key_inside_cut 77 | end 78 | 79 | # returns the dictionary attribute for cut_depth_factor of the first entity 80 | def cut_factor 81 | return @edge.get_attribute(Dict_name, Dict_cut_depth_factor, PhlatScript.cutFactor) 82 | end 83 | 84 | end 85 | 86 | class OutsideCut < OffsetCut 87 | def edge_material 88 | return Color_outside_cut 89 | end 90 | 91 | def OutsideCut.cut_key 92 | return Key_outside_cut 93 | end 94 | 95 | # returns the dictionary attribute for cut_depth_factor of the first entity 96 | def cut_factor 97 | return @edge.get_attribute(Dict_name, Dict_cut_depth_factor, PhlatScript.cutFactor) 98 | end 99 | 100 | end 101 | 102 | end -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/PhPocketCut.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Name: PocketTool.rb 3 | # Desctiption: Create a pocket face and zigzag edges 4 | # Author: Katsuhiko Toba ( http://www.eprcp.com/ ) 5 | # Usage: 1. Install into the plugins directory. 6 | # 2. Select "Pocket" from the Plugins menu. 7 | # 3. Click the face to pocket 8 | # 4. Select "CenterLine Tool" from menu or toolbar 9 | # 5. Click the zigzag edge first, the face edge second. 10 | # NOTE: Do not use Centerline from context menu. 11 | # It breaks the zigzag edge. 12 | # Limitations: Simple convex face only 13 | # 14 | # ** Modified by kyyu 05-29-2010 - rewrote "get_offset_points" method because of a bug ** 15 | # where the pocket lines were out of the pocket boundaries because of mix direction edges ** 16 | # -Looks like it works, but not rigorously check so USE AT YOUR OWN RISK! ** 17 | # 18 | # ** Modified by swarfer 2013-05-20 - press shift to only get zigzag, press ctrl to only get outline 19 | # This is a step on the way toward integrating it into Sketchucam, and properly handling complex faces 20 | # 21 | # ** Swarfer 2013-08-27 - create PocketCut type edges, mostly just copied from one of the other cut types 22 | # $Id$ 23 | 24 | require 'sketchup.rb' 25 | require 'Phlatboyz/PhlatCut.rb' 26 | require 'Phlatboyz/Tools/CenterLineCut.rb' 27 | 28 | module PhlatScript 29 | 30 | class PocketCut < CenterLineCut 31 | attr_accessor :edge 32 | 33 | def initialize(edge=nil) 34 | super 35 | end 36 | 37 | def PocketCut.load(edge) 38 | return self.new(edge) 39 | end 40 | 41 | def PocketCut.cut_key 42 | return Key_pocket_cut 43 | end 44 | 45 | def PocketCut.cut(edges) 46 | cuts = [] 47 | if (edges) 48 | edges.each do | e | 49 | cut = PocketCut.new 50 | cut.cut(e) 51 | cuts.push(cut) 52 | end 53 | return cuts 54 | end 55 | end 56 | 57 | def cut(edge) 58 | # puts "cut #{edge}" 59 | model = edge.model 60 | # model.start_operation("Creating Pocket Line", true, true) 61 | @edge = edge 62 | @edge.material = Color_pocket_cut 63 | # cut_factor = depth for some reason doing this here does not work 64 | @edge.set_attribute(Dict_name, Dict_edge_type, Key_pocket_cut) 65 | # model.commit_operation 66 | end 67 | 68 | def reset(view) 69 | if (view) 70 | view.tooltip = nil 71 | view.invalidate 72 | end 73 | end 74 | 75 | # returns the dictionary attribute for cut_depth_factor of the first entity 76 | def cut_factor 77 | return @edge.get_attribute(Dict_name, Dict_pocket_depth_factor, $phoptions.default_pocket_depth_factor) 78 | end 79 | 80 | # sets the cut_depth_factor attribute for all entities that are part of this cut 81 | def cut_factor=(factor) 82 | f = factor % 1000 83 | (f = 100) if (f > 100) 84 | @edge.set_attribute(Dict_name, Dict_pocket_depth_factor, f) 85 | end 86 | 87 | end 88 | end 89 | 90 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/PhlatArc.rb: -------------------------------------------------------------------------------- 1 | 2 | 3 | module PhlatScript 4 | 5 | module PhlatArc 6 | 7 | def self.is_arc?(edge) 8 | return (!edge.get_attribute(Dict_name, Dict_phlatarc_radius, nil).nil?) 9 | end 10 | 11 | def is_arc? 12 | return (!@edge.get_attribute(Dict_name, Dict_phlatarc_radius, nil).nil?) 13 | end 14 | 15 | def define_arc(radius, angle, g3, center) 16 | self.radius = radius 17 | self.angle = angle 18 | self.g3 = g3 19 | self.center = center 20 | end 21 | 22 | def angle 23 | return @edge.get_attribute(Dict_name, Dict_phlatarc_angle, 0) 24 | end 25 | 26 | def angle=(angle) 27 | @edge.set_attribute(Dict_name, Dict_phlatarc_angle, angle) 28 | end 29 | 30 | def center 31 | return @edge.get_attribute(Dict_name, Dict_phlatarc_center, (Geom::Point3d.new [0,0,0])) 32 | end 33 | 34 | def center=(cntr) 35 | @edge.set_attribute(Dict_name, Dict_phlatarc_center, cntr) 36 | end 37 | 38 | 39 | def radius 40 | return @edge.get_attribute(Dict_name, Dict_phlatarc_radius, 0) 41 | end 42 | 43 | def radius=(radius) 44 | @edge.set_attribute(Dict_name, Dict_phlatarc_radius, radius) 45 | end 46 | 47 | def g3=(g3) 48 | @edge.set_attribute(Dict_name, Dict_phlatarc_g3, g3) 49 | end 50 | 51 | def g3? 52 | return @edge.get_attribute(Dict_name, Dict_phlatarc_g3, false) 53 | end 54 | 55 | end 56 | 57 | end -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/PhlattenTool.rb: -------------------------------------------------------------------------------- 1 | require 'sketchup.rb' 2 | require 'Phlatboyz/PhlatTool.rb' 3 | 4 | module PhlatScript 5 | 6 | class PhlattenTool < PhlatTool 7 | 8 | def initialize 9 | super 10 | @tooltype = (PB_MENU_CONTEXT) 11 | end 12 | 13 | def getContextMenuItems 14 | return ['Phlatten Selected Edges'] 15 | end 16 | 17 | def onContextMenu(menuItem) 18 | # For now this will just project the lines along Z to 0 19 | # TODO: Find a plane that intersects the selected edges and transform them to Z0 to keep existing line lengths 20 | del_edges = [] 21 | new_edges = [] 22 | edges = [] 23 | faces = [] 24 | Sketchup.active_model.start_operation "Phlattening selected edges", true 25 | Sketchup.active_model.selection.each { |entity| 26 | edges.push(entity) if entity.kind_of?(Sketchup::Edge) 27 | faces.push(entity) if entity.kind_of?(Sketchup::Face) 28 | } 29 | # for Sketchup > 2014 we have to delete the faces separately 30 | faces.each { |entity| 31 | entity.erase! if entity.kind_of?(Sketchup::Face) 32 | } 33 | 34 | Sketchup.active_model.selection.clear 35 | edges.each { |edge| 36 | edge.faces.each { |face| 37 | face.erase! if face.valid? 38 | } 39 | pos1 = edge.vertices.first.position 40 | pos2 = edge.vertices.last.position 41 | pt1 = Geom::Point3d.new(pos1.x, pos1.y, 0) 42 | pt2 = Geom::Point3d.new(pos2.x, pos2.y, 0) 43 | del_edges.push(edge) 44 | new_edges.push([pt1,pt2]) 45 | } 46 | 47 | Sketchup.active_model.entities.erase_entities(del_edges) 48 | 49 | new_edges.each { |pts| 50 | edges = Sketchup.active_model.entities.add_edges(pts[0], pts[1]) 51 | edges.each {|e| e.find_faces} if edges 52 | } 53 | 54 | Sketchup.active_model.commit_operation 55 | end 56 | 57 | end 58 | 59 | end 60 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/RampTabTool.rb: -------------------------------------------------------------------------------- 1 | require 'sketchup.rb' 2 | require 'Phlatboyz/PhlatTool.rb' 3 | require 'Phlatboyz/utils/SketchupDirectoryUtils.rb' 4 | # $Id: HelpTool.rb 57 2014-07-27 16:18:12Z swarfer@gmail.com $ 5 | module PhlatScript 6 | 7 | class RampTabTool < PhlatTool 8 | 9 | def initialize 10 | super() 11 | @tooltype=(PB_MENU_MENU) 12 | @tooltip="Set Ramp VTabs" 13 | @statusText="Set Ramp VTabs" 14 | @menuText="Set Ramp VTabs" 15 | end 16 | 17 | # calculate the correct tab width, and recalculate the depth, such that the rampangle is obeyed for V tabs 18 | # tab has to be wider and higher in order to get the correct desired height 19 | # higher by tan(a) * ()bit/2) 20 | # wider by 1 bit diam 21 | def select 22 | 23 | # T the tab width to get rampangle V tabs 24 | # a = rampangle in radians 25 | # th = (100-td/100) real tab height percent 26 | # O = MT * (100-td/100) 27 | # A = O / tan(a) 28 | # T = A * 2 + bitdiam 29 | 30 | # height offset o = tan(a) * bit/2 31 | # new tab depth = 100 - (((th * mt) + o) / mt * 100) 32 | # new tab width = T + bitdiam 33 | msg = '' 34 | a = PhlatScript.torad(PhlatScript.rampangle.to_f) 35 | msg += "a in radians #{a}\n" 36 | th = (100-PhlatScript.tabDepth.to_f) / 100 # tab thickness percent 37 | msg += "th = #{th}\n" 38 | o = PhlatScript.materialThickness.to_f * th # physical tab thickness 39 | msg += "phys tab o = #{o.to_mm}\n" 40 | aa = o / Math::tan(a) 41 | msg += "aa = #{aa.to_mm}\n" 42 | t = aa * 2 + PhlatScript.bitDiameter 43 | msg += "t = #{t.to_mm}\n" 44 | ho = Math::tan(a) * (PhlatScript.bitDiameter/2) 45 | msg += "height adjust ho = #{ho.to_mm}\n" 46 | newdepth = 100 - ((o + ho) / PhlatScript.materialThickness * 100) 47 | newwidth = t 48 | msg += "new depth = #{newdepth}\nnewwidth=#{newwidth.to_mm}" 49 | PhlatScript.tabDepth = newdepth.round 50 | PhlatScript.tabWidth = newwidth 51 | # UI.messagebox(msg,MB_MULTILINE) 52 | end #select 53 | end # class 54 | 55 | end 56 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/SafeTool.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'sketchup.rb' 3 | #require 'Phlatboyz/Constants.rb' 4 | require 'Phlatboyz/PhlatTool.rb' 5 | 6 | module PhlatScript 7 | 8 | class SafeTool < PhlatTool 9 | 10 | def initialize 11 | super 12 | @point_array = Array.new(5) 13 | end 14 | 15 | def onMouseMove(flags, x, y, view) 16 | ip = view.inputpoint x, y 17 | safeArrayFromInputPoint(ip) 18 | view.invalidate 19 | end 20 | 21 | def onLButtonDown(flags, x, y, view) 22 | ip = view.inputpoint x, y 23 | safeArrayFromInputPoint(ip) 24 | self.create_geometry(view) 25 | self.reset(view) 26 | # Clear any inference lock 27 | view.lock_inference 28 | end 29 | 30 | def safeArrayFromInputPoint(inputPoint) 31 | safe_array = P.get_safe_array() 32 | w = safe_array[2] 33 | h = safe_array[3] 34 | area_point3d_array = P._get_area_point3d_array(inputPoint.position.x, inputPoint.position.y, w, h) 35 | @point_array = area_point3d_array 36 | @point_array[4] = @point_array[0] 37 | end 38 | 39 | def draw(view) 40 | self.draw_geometry(view) 41 | end 42 | 43 | # Draw the geometry 44 | def draw_geometry(view) 45 | view.drawing_color = Color_safe_drawing 46 | view.line_stipple = "." 47 | #@ip.draw view 48 | view.draw_polyline @point_array 49 | end 50 | 51 | def create_geometry(view) 52 | model = view.model 53 | entities = model.entities 54 | 55 | model.start_operation "Creating Safe Area" 56 | 57 | x0 = @point_array[0].x 58 | y0 = @point_array[0].y 59 | w = @point_array[0].distance @point_array[1] 60 | h = @point_array[0].distance @point_array[3] 61 | 62 | P.set_safe_array(x0, y0, w, h, model) 63 | P.draw_safe_area(model) 64 | 65 | model.commit_operation 66 | #Sketchup::set_status_text "Fold Created", SB_VCB_LABEL 67 | Sketchup.send_action "selectSelectionTool:" 68 | 69 | end 70 | 71 | def statusText 72 | return "Select position for Safe Area" 73 | end 74 | 75 | end 76 | 77 | end 78 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/TestTool.rb: -------------------------------------------------------------------------------- 1 | require 'sketchup.rb' 2 | require 'Phlatboyz/PhlatTool.rb' 3 | require 'Phlatboyz/PhlatProgress.rb' 4 | 5 | module PhlatScript 6 | 7 | class TestTool < PhlatTool 8 | 9 | def initialize 10 | super 11 | @tooltype = (PB_MENU_CONTEXT) 12 | end 13 | 14 | def getContextMenuItems 15 | return ['Dlg', 'Step', 'Position', 'Close'] 16 | end 17 | 18 | def onContextMenu(menuItem) 19 | if menuItem == 'Dlg' 20 | @prog = ProgressDialog.new('Generating GCode...', 3) 21 | elsif menuItem == 'Step' 22 | @prog.step 23 | elsif menuItem == 'Position' 24 | @prog.position = 2 25 | elsif menuItem == 'Close' 26 | @prog.close 27 | end 28 | end 29 | 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/tools/ZeroTool.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'sketchup.rb' 3 | require 'Phlatboyz/PhlatTool.rb' 4 | 5 | 6 | module PhlatScript 7 | 8 | class ZeroTool < PhlatTool 9 | 10 | def initialize 11 | super() 12 | toolname = 'Zero tool' 13 | @tooltype=(PB_MENU_TOOLBAR) 14 | @tooltip="Set 0,0 offset" 15 | @statusText= "pick point within safe area for 0,0" 16 | @menuText="Zero Offset Pick" 17 | @largeIcon = "images/zerotool_large.png" 18 | @smallIcon = "images/zerotool_small.png" 19 | 20 | end 21 | 22 | def reset(view) 23 | super 24 | end 25 | 26 | def onMouseMove(flags, x, y, view) 27 | if @ip.pick(view, x, y) 28 | view.invalidate 29 | end 30 | end 31 | 32 | def onLButtonDown(flags, x, y, view) 33 | puts "#{@ip.position}" 34 | safe_point3d_array = P.get_safe_area_point3d_array(Sketchup.active_model) 35 | x = @ip.position.x - safe_point3d_array[0].x 36 | y = @ip.position.y - safe_point3d_array[0].y 37 | puts "offset #{x.to_mm} #{y.to_mm}" 38 | PhlatScript.zerooffsetx = x 39 | PhlatScript.zerooffsety = y 40 | # np.y = @ip.position.y + v * @vspace 41 | P.draw_safe_area(Sketchup.active_model) 42 | reset(view) 43 | end 44 | 45 | def draw(view) 46 | preview(view, @ip.position) 47 | end 48 | 49 | def preview(v, point) 50 | #draw something at the point 51 | pts = Array.new 52 | pts << Geom::Point3d.new(point.x + 0.1 , point.y + 0.1, 0) 53 | pts << Geom::Point3d.new(point.x - 0.1 , point.y + 0.1, 0) 54 | pts << Geom::Point3d.new(point.x + 0.1 , point.y - 0.1, 0) 55 | pts << Geom::Point3d.new(point.x - 0.1 , point.y - 0.1, 0) 56 | pts << Geom::Point3d.new(point.x + 0.1 , point.y + 0.1, 0) 57 | v.draw_polyline(pts) 58 | end 59 | 60 | def statusText 61 | return "Select point for X0,Y0 position" 62 | end 63 | 64 | end 65 | 66 | end 67 | # $Id$ 68 | -------------------------------------------------------------------------------- /Plugins/Phlatboyz/utils/IniParser.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | # utility classes for ini file handling 3 | # IniParser will read ini file and convert it to HashMap 4 | # IniGenerator will generate ini file from HashMap 5 | # Make sure that Hash has a proper structure fe: 6 | # {"SECTION_NAME" => {"ATTR_NAME"=>"ATTR_VALUE"}} 7 | # $Id$ 8 | 9 | class IniParser 10 | 11 | def isSectionLine(line) 12 | return false if line[0] == ";" 13 | return (line.index('[') == 0 and line.index(']') == (line.length-1)) 14 | end 15 | 16 | def sectionName(line) 17 | #remove first and last char 18 | if line 19 | return line[1..line.length()-2] 20 | end 21 | return false 22 | end 23 | 24 | def validateLine(line) 25 | raise ArgumentError, 'Incorrect file structure at: ' + line if (not isPropertyLine(line)) && (not isSectionLine(line)) && (line) && (line!= "") && (line[0] != ";") 26 | end 27 | 28 | def isPropertyLine(line) 29 | return false if line[0] == ";" 30 | if line 31 | return (line.index('=') != nil) 32 | end 33 | return false 34 | end 35 | 36 | #return key/value tuple for line 37 | def keyAndValueForLine(line) 38 | key = line[0 .. line.index('=') - 1] 39 | value = line[line.index('=') + 1 .. line.length()-1] 40 | # remove " from string 41 | value = value.gsub '"', '' 42 | return key.strip, value.strip 43 | end 44 | 45 | def removeCommentFromLine(line) 46 | if line.index(';') 47 | return line[0 .. line.index(';') - 1] 48 | end 49 | return line 50 | end 51 | 52 | def parseFileAtPath(filePath) 53 | sections = {} 54 | fileLines = IO.readlines(filePath) 55 | 56 | if fileLines 57 | sectionName = nil 58 | fileLines.each { |line| 59 | line = line.strip 60 | line = removeCommentFromLine(line) 61 | 62 | validateLine(line) 63 | if line[0] !=';' 64 | if isSectionLine(line) 65 | sectionName = self.sectionName(line) 66 | sections[sectionName] = {} 67 | end 68 | if self.isPropertyLine(line) 69 | if sectionName 70 | key, value = self.keyAndValueForLine(line) 71 | sections[sectionName][key] = value 72 | end 73 | end 74 | end 75 | } 76 | end 77 | return sections 78 | end 79 | end 80 | 81 | class IniGenerator 82 | 83 | def isSimpleType(var) 84 | return (var.is_a? Fixnum or var.is_a? String or var.is_a? Float or var.is_a? TrueClass or var.is_a? FalseClass) 85 | end 86 | 87 | def validateMap(map) 88 | #input map format validation. 89 | #map needs two levels, one level for sections 90 | #second level for settings 91 | raise ArgumentError, "incorrect map\n" if not map 92 | raise ArgumentError, "incorrect map not a hash\n" + map.to_s if not map.is_a? Hash 93 | map.each do |key, value| 94 | raise ArgumentError, "incorrect map not a subHash #{value}\n" + map.to_s if not value.is_a? Hash 95 | value.each do |deepKey, deepValue| 96 | raise ArgumentError, "incorrect map not simple\n" + map.to_s if not isSimpleType(deepValue) 97 | end 98 | end 99 | end 100 | 101 | def hashMapToIni(map) 102 | validateMap(map); 103 | iniString = "" 104 | # generate ini, iterate hash map, 105 | # use templates to generate strings 106 | map.each do |key, value| 107 | iniString << "[#{key}]\n" 108 | value.each do |deepKey, deepValue| 109 | iniString << "#{deepKey}=#{deepValue}\n" 110 | end 111 | end 112 | return iniString 113 | end 114 | 115 | def dumpHashMapToIni(map, filePath) 116 | #generate ini string 117 | iniString = hashMapToIni(map) 118 | #ensure path exists, force if needed 119 | dirPath = File.dirname(filePath) 120 | if not File.exist? dirPath 121 | Dir.mkdir(dirPath) 122 | end 123 | #write to file safely 124 | iniFile = File.new(filePath,"w") 125 | begin 126 | iniFile << iniString 127 | iniFile.close # if we don't close it here we will never see the content until after Sketchup closes 128 | rescue 129 | iniFile.close unless iniFile.nil? 130 | end 131 | end 132 | 133 | end 134 | end -------------------------------------------------------------------------------- /Plugins/Phlatboyz/utils/SketchupDirectoryUtils.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | # Class contains methods for dealing with sketchup directories. 3 | # Class implements platform specific methods for accessing directories 4 | 5 | # return true if running on Mac platform 6 | def PhlatScript.isMac? 7 | if (RUBY_PLATFORM =~ /mswin|mingw/) 8 | return false 9 | else 10 | return true 11 | end 12 | end 13 | 14 | # this method returns a path for storing profiles. 15 | # path depends on the system, macosx is recognized by RUBY_PLATFORM. 16 | def PhlatScript.toolsProfilesPath 17 | if PhlatScript.isMac? 18 | #MAC 19 | # Sketchup.find_support_file returns directory in: 20 | # ~/Library/Application Support/Sketchup X/SketchUp/ 21 | # we will store profiles in Profiles subdirectory 22 | path = File.join(Sketchup.find_support_file("Plugins"),"Phlatboyz", "Profiles") 23 | else 24 | # Windows - support files are read only in win7, so use appdata 25 | path = ENV['APPDATA'] + "\\Sketchup" 26 | end 27 | return path 28 | end 29 | 30 | end -------------------------------------------------------------------------------- /Plugins/_gplot.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/_gplot.exe -------------------------------------------------------------------------------- /Plugins/airfoil_dat.rb: -------------------------------------------------------------------------------- 1 | # Airfoil_dat.rb 2 | # A plugin to import Mark Drela's AG and ST Airfoils 3 | # data from the airfoil coordinate files *.dat files 4 | # 5 | # at 6 | # http://www.charlesriverrc.org/articles/drela-airfoilshop/markdrela-ag-ht-airfoils.htm 7 | # 8 | # The plugin has only been tested in Sketchup 7 on Win XP. 9 | # 10 | # Use the plugin as required at your own risk. 11 | # 12 | # Place the file airfoil_dat.rb in the plugins folder. 13 | # 14 | # EJT 11 Aug 2009 15 | # SWARFER Jul 2013 - offset from origin so shapes are easier to select and move 16 | # SWARFER Sep 2015 - offset to -100mm, and scale to 100mm long to avoid roundoff errors 17 | # $Id$ 18 | require 'sketchup.rb' 19 | 20 | def airfoil_dat_main 21 | model = Sketchup.active_model 22 | entities = model.active_entities 23 | 24 | c = 1 # used to skip first line in file 25 | vert = [] 26 | 27 | filename = UI.openpanel "Import Airfoil data points","d:\\myfiles\\rc\\plotfoil","*.dat" 28 | 29 | IO.foreach(filename){ 30 | |x| 31 | if c == 1 32 | c = 2 33 | elsif 34 | data = x.strip.split 35 | xx = (data[0].to_f * 100.mm).to_inch 36 | yy = (data[1].to_f * 100.mm).to_inch 37 | vert.push [xx, yy-100.mm, 0.to_f] 38 | end 39 | } 40 | 41 | new_line = entities.add_face(vert) 42 | 43 | Sketchup.send_action("viewTop:") 44 | Sketchup.send_action("viewZoomExtents:") 45 | end 46 | 47 | if( not file_loaded?("airfoil_dat.rb") ) 48 | add_separator_to_menu("Plugins") 49 | UI.menu("Plugins").add_item("Airfoil data loader") { airfoil_dat_main } 50 | file_loaded("airfoil_dat.rb") 51 | end 52 | 53 | -------------------------------------------------------------------------------- /Plugins/gplot.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/gplot.exe -------------------------------------------------------------------------------- /Plugins/gplot.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'sketchup.rb' 3 | require 'Phlatboyz/Phlatscript.rb' 4 | # $Id$ 5 | 6 | class GPlot 7 | 8 | def initialize 9 | if ($phoptions.gplotter == 'default') 10 | @exe = Sketchup.find_support_file("GPlot.exe", "/Plugins") 11 | else 12 | @exe = $phoptions.gplotter 13 | end 14 | if (!@exe) || (!File.exist?(@exe)) 15 | UI.messagebox('Could not locate GPlotter. Check Tools|Phlatboyz|Options|File Options|Gplotter') 16 | @exe = Sketchup.find_support_file("GPlot.exe", "/Plugins") 17 | end 18 | end 19 | 20 | def plot(filename=nil) #swarfer: allow overriding filename 21 | if (filename == nil) 22 | filename = PhlatScript.cncFileDir + PhlatScript.cncFileName 23 | end 24 | if (filename) && (File.exist?(filename)) then 25 | #puts "#{@exe} #{filename}" 26 | Thread.new{system(@exe, filename)} 27 | else 28 | UI.messagebox("Could not locate a gcode file to plot. Try using the generate gcode button.") 29 | end 30 | end 31 | 32 | end 33 | 34 | #----------------------------------------------------------------------------- 35 | if( not file_loaded?("GPlot.rb") ) 36 | UI.menu("Plugins").add_item("Plot GCode") { GPlot.new.plot } 37 | end 38 | #----------------------------------------------------------------------------- 39 | file_loaded("GPlot.rb") 40 | 41 | -------------------------------------------------------------------------------- /Plugins/phlatBone/cursor_radbone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/cursor_radbone.png -------------------------------------------------------------------------------- /Plugins/phlatBone/cursor_radbone_multi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/cursor_radbone_multi.png -------------------------------------------------------------------------------- /Plugins/phlatBone/cursor_tbone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/cursor_tbone.png -------------------------------------------------------------------------------- /Plugins/phlatBone/cursor_tbone_multi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/cursor_tbone_multi.png -------------------------------------------------------------------------------- /Plugins/phlatBone/radBoneMultiIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/radBoneMultiIn.png -------------------------------------------------------------------------------- /Plugins/phlatBone/radBoneMultiOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/radBoneMultiOut.png -------------------------------------------------------------------------------- /Plugins/phlatBone/radBoneSingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/radBoneSingle.png -------------------------------------------------------------------------------- /Plugins/phlatBone/tBoneMultiIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/tBoneMultiIn.png -------------------------------------------------------------------------------- /Plugins/phlatBone/tBoneMultiOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/tBoneMultiOut.png -------------------------------------------------------------------------------- /Plugins/phlatBone/tBoneSingle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/tBoneSingle.png -------------------------------------------------------------------------------- /Plugins/phlatBone/toolDiameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/Plugins/phlatBone/toolDiameter.png -------------------------------------------------------------------------------- /Plugins/phlatboyz.rb: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------------------------- 2 | # Name : PhlatBoyzTools 3 | # Description : A set of tools for marking up Phlatland Sketchup drawings and generating Phlatprinter g-code. 4 | # Menu Item : 5 | # Context Menu: 6 | # Usage : install in plugins folder 7 | # Date : Feb 2014, 2021, Dec2022 8 | # Type : 9 | # Version : SketchUcam 1.5c 10 | # $Id$ 11 | #----------------------------------------------------------------------------- 12 | 13 | require('sketchup.rb') 14 | require('extensions.rb') 15 | require('langhandler.rb') 16 | 17 | module PhlatScript 18 | 19 | #place a copy of the distributed strings file into Resources 20 | def PhlatScript.copyStrings(from) 21 | #this line generates the name even if the file does not exist 22 | ofile = Sketchup.find_support_file("en-US", "Resources" ) + "/PhlatBoyz.strings" 23 | out_file = File.new(ofile, "w") 24 | if out_file 25 | in_file = File.open(from) 26 | in_file.each_line { |line| 27 | out_file.puts(line) 28 | } 29 | out_file.close 30 | in_file.close 31 | end 32 | end 33 | 34 | if (Sketchup.version.split('.')[0].to_i < 13) 35 | #v8 does not find resources within the plugins folder 36 | #but installer does not put resources files into resources, so we have to move them 37 | #make sure we have the strings file in the right place, sketchup/resources/en-US 38 | 39 | myc = Sketchup.find_support_file("en-US/PhlatBoyz.strings", "Resources" ) #fails if it doesn't exist 40 | # ofl = File.new('d:\temp\debug.log', "w") 41 | # ofl.write(myc) 42 | # ofl.write(Sketchup.version) 43 | # ofl.close() 44 | 45 | thefile = Sketchup.find_support_file("Phlatboyz/Resources/en-US/PhlatBoyz.strings", "Plugins" ) 46 | if (myc == nil) #file does not exist 47 | if thefile != nil 48 | PhlatScript.copyStrings(thefile) 49 | end 50 | else 51 | #file exists, check for correct version 52 | correctversion = "1.06" #this must match the version string in the file! 53 | result = open(myc) { |f| f.grep(/stringversion/) } 54 | if result != [] #found the string, check version 55 | if !result[0].match(correctversion) #version mismatch 56 | PhlatScript.copyStrings(thefile) 57 | end 58 | else #not found, copy the new file 59 | PhlatScript.copyStrings(thefile) 60 | end 61 | end 62 | end # if version 63 | 64 | @@phlatboyzStrings = LanguageHandler.new('PhlatBoyz.strings') 65 | 66 | class PhlatScriptExtention < SketchupExtension 67 | def initialize 68 | super 'Phlatboyz Tools', 'Phlatboyz/Phlatscript.rb' 69 | self.description = 'A set of tools for marking up Phlatland Sketchup drawings and generating CNC g-code.' 70 | self.version = '1.5c' 71 | 72 | #try to find the phrev.dat file, if it exists add the version to the .version 73 | #this is purely internal, an ordinary user never sees this 74 | vv = Sketchup.find_support_file("phrev.dat", 'Plugins/') 75 | if (vv != nil) 76 | #read first line from file 77 | lines=IO.readlines(vv) 78 | vstring = lines[0] 79 | self.version += "-" + vstring.strip 80 | end 81 | 82 | self.creator = 'Phlatboyz' 83 | self.copyright = '2017..2021, Phlatboyz' 84 | end 85 | 86 | def load 87 | require 'Phlatboyz/Phlatscript.rb' 88 | PhlatScript.load 89 | end 90 | 91 | end 92 | $PhlatScriptExtension = PhlatScriptExtention.new 93 | Sketchup.register_extension($PhlatScriptExtension, true) 94 | 95 | end -------------------------------------------------------------------------------- /Plugins/phlatboyztools.rb: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------------------------- 2 | # Name : PhlatBoyzTools 3 | # Description : A set of tools for marking up Phlatland Sketchup drawings and generating Phlatprinter g-code. 4 | # Menu Item : 5 | # Context Menu: 6 | # Usage : install in plugins folder 7 | # Date : Feb 2014 8 | # Type : 9 | # Version : SketchUcam 1.1 10 | #----------------------------------------------------------------------------- 11 | 12 | # SEE phlatboys.rb 13 | #this file no longer in use in order to make the strings resources work under Make2013/14 14 | 15 | #require('sketchup.rb') 16 | #require('extensions.rb') 17 | 18 | #class PhlatScriptExtention < SketchupExtension 19 | # def initialize 20 | # super 'Phlatboyz Tools', 'Phlatboyz/Phlatscript.rb' 21 | # self.description = 'A set of tools for marking up Phlatland Sketchup drawings and generating Phlatprinter g-code.' 22 | # self.version = '1.1d-beta' 23 | # self.creator = 'Phlatboyz' 24 | # self.copyright = '2014, Phlatboyz' 25 | # end 26 | # 27 | # def load 28 | # require 'Phlatboyz/Phlatscript.rb' 29 | # PhlatScript.load 30 | # end 31 | # 32 | #end 33 | #$PhlatScriptExtension = PhlatScriptExtention.new 34 | #Sketchup.register_extension($PhlatScriptExtension, true) 35 | -------------------------------------------------------------------------------- /Plugins/test/data/sample.ini: -------------------------------------------------------------------------------- 1 | ;comment== 2 | [section1] 3 | attr1=1 4 | attr2=2 5 | attr3 = 3 6 | attr4="sample string" 7 | attr5="sample = string";end line comment 8 | attr6="sample [] string" 9 | 10 | [section2] 11 | 12 | 13 | attr1=1 14 | attr2=2 15 | attr3=3 -------------------------------------------------------------------------------- /Plugins/test/data/wrong-sample.ini: -------------------------------------------------------------------------------- 1 | ;comment== 2 | ------- 3 | [section1] 4 | attr1=1 5 | attr2=2 6 | attr3 = 3 7 | attr4="sample string" 8 | attr5="sample = string" 9 | attr6="sample [] string" 10 | 11 | [section2] 12 | 13 | 14 | attr1=1 15 | attr2=2 16 | attr3=3 -------------------------------------------------------------------------------- /Plugins/test/tests/HashableTest.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | 3 | class Hashable 4 | 5 | def toHash 6 | #function checks all instance variables set on object and converts them to a Hash. 7 | hash = {} 8 | self.instance_variables.each {|var| 9 | varVal = self.instance_variable_get(var) 10 | value = varVal.toHash() if varVal.is_a? Hashable 11 | value = varVal if not varVal.is_a? Hashable 12 | hash[var.to_s.delete("@")] = value} 13 | return hash 14 | end 15 | end 16 | 17 | class MachineSettings < Hashable 18 | 19 | def initialize 20 | @safeAreaX = 500 21 | @safeAreaY = 500 22 | end 23 | end 24 | 25 | class ToolSettings < Hashable 26 | 27 | def initialize 28 | @spindleSpeed = 8000 29 | @cutFactor = 1.2 30 | @bitDiameter = 6.35 31 | @tabWidth = 8 32 | @tabDepth = 8 33 | @feedRate = 300 34 | @plungeRate = 300 35 | end 36 | end 37 | 38 | class MaterialSettings < Hashable 39 | 40 | def initialize 41 | @materialThickness = 25 42 | @safeTravel = 30 43 | @useMultipass = true 44 | @multipassDepth = 5 45 | @stepover = 0.7 46 | end 47 | end 48 | 49 | class GeneralSettings < Hashable 50 | 51 | def initialize 52 | @gen3D = true 53 | @showGplot = false 54 | @commentText = "comment" 55 | end 56 | end 57 | 58 | class SettingsPrototype < Hashable 59 | 60 | def initialize 61 | @material = MaterialSettings.new() 62 | @machine = MachineSettings.new() 63 | @tool = ToolSettings.new() 64 | @material = MaterialSettings.new() 65 | @general = GeneralSettings.new() 66 | end 67 | end 68 | 69 | require_relative 'TestBase' 70 | class HashableTest < TestBase 71 | def run 72 | settings = SettingsPrototype.new() 73 | puts settings.toHash() 74 | end 75 | end 76 | 77 | end -------------------------------------------------------------------------------- /Plugins/test/tests/IniGeneratorTest.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | require_relative 'TestBase' 3 | require_relative '../../Phlatboyz/utils/IniParser' 4 | 5 | class IniGeneratorTest < TestBase 6 | 7 | def run() 8 | generator = IniGenerator.new() 9 | 10 | assertException("should raise exception for incorrect parameter") { 11 | generator.hashMapToIni("ss"); 12 | } 13 | assertException("should raise exception for incorrect parameter") { 14 | generator.hashMapToIni({"ss"=>"xx"}); 15 | } 16 | 17 | assertTrue(generator.isSimpleType("a"),"should be a simple type") 18 | assertTrue(generator.isSimpleType(1),"should be a simple type") 19 | assertTrue(generator.isSimpleType(1.0),"should be a simple type") 20 | assertFalse(generator.isSimpleType(["d", "d"]),"should be a complex type") 21 | assertFalse(generator.isSimpleType({"d"=>"d"}),"should be a complex type") 22 | map = {"section"=>{"a"=>"b"}} 23 | result = generator.hashMapToIni({"section"=>{"a"=>"b"}}); 24 | 25 | 26 | assertEquals(result,"[section]\na=b\n","should be equal") 27 | 28 | map = {"section"=>{"a"=>1}} 29 | result = generator.hashMapToIni(map); 30 | assertEquals(result,"[section]\na=1\n","should be equal") 31 | 32 | 33 | map = {"section"=>{"a"=>1.1}} 34 | result = generator.hashMapToIni(map); 35 | assertEquals(result,"[section]\na=1.1\n","should be equal") 36 | 37 | map = {"section"=>{"a"=>"1.1mm"}} 38 | result = generator.hashMapToIni(map); 39 | assertEquals(result,"[section]\na=1.1mm\n","should be equal") 40 | 41 | generator.dumpHashMapToIni(map,"__test_file_map.ini") 42 | assertTrue((File.exist?"__test_file_map.ini"), "file needs to exist after dump"); 43 | File.delete("__test_file_map.ini") 44 | 45 | end 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /Plugins/test/tests/IniParserTest.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | require_relative 'TestBase' 3 | require_relative '../../Phlatboyz/utils/IniParser' 4 | 5 | class IniParserTest < TestBase 6 | 7 | def run() 8 | parser = IniParser.new() 9 | sections = parser.parseFileAtPath(File.join(File.dirname(__FILE__), '../data/sample.ini')) 10 | assertTrue(parser.isSectionLine("[xx]"),"this should be a section line"); 11 | assertFalse(parser.isSectionLine("xx]"),"this should not be a section line"); 12 | assertTrue(parser.isPropertyLine("ss=ss"),"this should be a property line"); 13 | assertFalse(parser.isPropertyLine(";==="),"this should not be a property line"); 14 | assertTrue(sections.length() == 2, "there should be 2 sections") 15 | assertEquals(parser.removeCommentFromLine("aa=bb;comment"),"aa=bb","comment at the end of line was not removed properly") 16 | assertNotNull(sections["section1"], "section1 missing") 17 | assertNotNull(sections["section2"], "section2 missing") 18 | assertEquals(sections["section1"]['attr1'],"1","wrong value") 19 | assertEquals(sections["section1"]['attr2'],"2","wrong value") 20 | assertEquals(sections["section1"]['attr3'],"3","wrong value") 21 | assertEquals(sections["section2"]['attr1'],"1","wrong value") 22 | assertEquals(sections["section2"]['attr2'],"2","wrong value") 23 | assertEquals(sections["section2"]['attr3'],"3","wrong value") 24 | assertException("should catch exception for incorrect file") { 25 | parser.parseFileAtPath(File.join(File.dirname(__FILE__), '../data/wrong-sample.ini')) 26 | } 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /Plugins/test/tests/PhlatTests.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | 3 | require_relative "IniParserTest" 4 | require_relative "IniGeneratorTest" 5 | require_relative "HashableTest" 6 | class TestSuite 7 | 8 | def runTests() 9 | # add your test classes here... 10 | # every class needs to have run method implemented. 11 | allTests = [IniParserTest.new(), IniGeneratorTest.new(), HashableTest.new()] 12 | 13 | allTests.each{ |test| 14 | test.setup() 15 | test.run() 16 | test.tearDown() 17 | errorStr = (test.assertionErrorCount ==1)? " error" : " errors" 18 | puts 'finished test: ' +test.class.name + ' with ' + test.assertionErrorCount.to_s + errorStr 19 | } 20 | end 21 | end 22 | 23 | testSuite = TestSuite.new() 24 | testSuite.runTests() 25 | end -------------------------------------------------------------------------------- /Plugins/test/tests/TestBase.rb: -------------------------------------------------------------------------------- 1 | module PhlatScript 2 | class TestBase 3 | @@assertionErrorCount = 0 4 | def setup() 5 | end 6 | 7 | def run() 8 | end 9 | 10 | def tearDown() 11 | end 12 | 13 | def assertTrue(assertBool, message) 14 | if not assertBool 15 | @@assertionErrorCount = @@assertionErrorCount + 1 16 | puts "Assertion error: " + message 17 | end 18 | end 19 | 20 | def assertFalse(assertBool, message) 21 | self.assertTrue((not assertBool),message) 22 | end 23 | 24 | def assertNotNull(assertObject, message) 25 | self.assertTrue(assertObject != nil, message) 26 | end 27 | 28 | def assertNull(assertObject, message) 29 | self.assertTrue(assertObject == nil, message) 30 | end 31 | 32 | def assertEquals(val1, val2, message) 33 | if(val1 != val2) 34 | @@assertionErrorCount = @@assertionErrorCount + 1 35 | puts "Assertion error: " + message, ' - expected: ' + val1.to_s + ' got:' + val2.to_s 36 | end 37 | end 38 | 39 | def assertException(message, &block) 40 | #calls a code block passed as an argument. 41 | #expects it to tail with an exception. 42 | # if no exception, it means test will fail 43 | begin 44 | block.call() 45 | rescue 46 | return 47 | end 48 | puts "No exception caught: " + message 49 | @@assertionErrorCount = @@assertionErrorCount + 1 50 | end 51 | 52 | def assertionErrorCount 53 | @@assertionErrorCount 54 | end 55 | end 56 | end -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SketchUcam for Sketchup 2 | SketchUCam is a free plugin written for the Google/Trimble SketchUp CAD program that allows the creation of 3 | Gcode to control your cnc machines and bring your SketchUp creations into the real world! 4 | 5 | The ultimate goal is to create a complete CAM/Controller solution directly within SketchUp 6 | capable of outputting 2.5D or 3D tool paths and possibly in the future will be the ability 7 | to not only output the g-code but control the machine as well. We're sure Sketchucam will be 8 | adapted for many different types of machines. This will be great. Please share. 9 | 10 | SketchUcam is made possible though many great volunteers (super heroes) who have contributed to 11 | the project free of charge! Give a shout out to them. 12 | 13 | SketchUcam can not be used for commercial gain or sold in any form. We are keeping this truly open source. 14 | 15 | Thank You, Mark and Trish Carew
16 | http://www.OpenBuilds.com 17 | 18 | # Installing 19 | Please get the latest release from
20 | http://openbuilds.com/projectresources/sketchucam.1/
21 | or
22 | https://github.com/swarfer/sketchucam/releases
23 | and **follow the install instructions**. 24 | 25 | **NOTE** 26 | If you download the master.zip (link at right) and follow the howtobuild.txt instructions you *may* be able 27 | to create your own .rbz install file. You must install the correct tools first, *follow the instructions!* 28 | (This is not trivial, you should rather download a [RELEASE](https://github.com/swarfer/sketchucam/releases)) 29 | 30 | The MANUAL is available after you install by clicking the big blue question mark in the toolbar.
31 | OR 32 | You can view it [online here](http://swarfer.github.io/sketchucam/)
33 | Note that the online version may mention features that have not yet made it into a release. 34 | 35 | A playlist of HowTo videos is available on [Youtube](https://www.youtube.com/watch?v=TShp4_e6Z-U&list=PLm728rLHCWOw-vRvTJwS_5MmKG1fs4sZ0) 36 | -------------------------------------------------------------------------------- /docs/afterinstall.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SketchUcam - Thing to do After Instal 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |
After install...
14 |
15 |
16 | Back to help index 17 | 18 |
19 |

After installing Sketchucam all features will work without further setup. 20 | However, there are some settings you will want to change to suite your machines size and capabilities. 21 |

22 | 23 | 24 | To make these changes you need to access the "Tools|Phlatboyz|Options|Machine Options" menu item as illustrated at right. 25 |

Things you may need to change

26 |
27 |
Default_safe_width (X) 28 |
Set this to the largest workpiece your machine can take in the X direction. 29 |
Default_safe_height (Y) 30 |
Set this to the largest workpiece Y size. 31 |
Default_overhead_gantry 32 |
If all you have is a Phlatprinter, set this to false. If all you have is a gantry type machine, set this to true. If you have both styles, set to the one you use the most. 33 |
34 |
35 |
36 |
Min_z 37 | It is VERY IMPORTANT that you get these settings correct. 38 | Do NOT set Min_Z to zero unless you also set Default_tabletop is Z-Zero on the Misc Options dialog to TRUE, and NEVER change it 39 | in the parameters dialog. Failing to do this correctly will result in faulty G-code generation.
40 | Min_z = -maxZtravel
41 | Max_z = maxZtravel
42 | are the preferred settings, allowing both 'material top' and 'table top' as Z-zero to work properly. 43 |
44 |
Set this to negative (-) your Z travel. G-code will never contain negative Z travel more than this figure. 45 |
Max_z 46 |
Set this to your Z travel. G-code will never contain Z travel more than this figure. 47 |
48 | 49 | You can read the full help for that dialog here. 50 | 51 |
52 |
53 |
54 |
55 | 56 | Now visit the "Tools|Phlatboyz|Options|Tool Options" menu item as illustrated at right.
57 | If you have a flat bed machine you will want to set the
58 | Default_cut_depth_factor to 100%
59 | This will prevent it cutting into the table. A cut depth factor greater 100% will cut through the material and into the table.
60 | Read the full help for that dialog here 61 |
62 | 63 |
64 |
65 |
66 | 67 | Now visit the "Tools|Phlatboyz|Options|Feature Options" menu item as illustrated at right.
68 | Read the help for those options and make changes as needed for your machine. 69 | 70 |

GRBL: if you are running the GRBL controller will will want to set 'Use_exact_path' to false 71 |

72 | 73 |
74 | 75 | 76 |
77 | 78 | 79 | 80 |
81 | 82 |
83 |

 

84 |

85 | 86 | Thank you for your interest in the Phlatboyz project. Please take the time to visit the Phlatforum 87 | for lots of great people sharing great ideas and designs created with SketchUcam on their Phlatboyz machines! 88 |

89 |
90 |
91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/edgemenu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Phlatboyz SketchUcam Edge Context Menu 6 | 7 | 8 | 9 | 10 |
11 |
12 | PHLATBOYZ 13 | 14 |
Phlatboyz SketchUcam(PhlatScripT)
SketchUcam Version 1.3
May 2015
15 | 16 |
17 | 18 | 19 | 20 | 23 | 24 | 25 | 28 | 29 | 30 | 34 | 39 | 42 | 43 | 44 | 48 | 53 | 54 | 55 | 59 | 64 | 65 | 66 | 67 | 71 | 78 | 79 | 80 | 81 |
21 | SketchUcam Edge Context Menu
Back to help index
22 |
26 | These menu items appear in the "Phlat Edge" sub menu when right clicking on any edge. 27 |
31 | Inside Edge 32 |   33 | 35 | Selecting this command will mark selected edges as SketchUcam Inside 36 | edge. No other change will be made to the edge. This allows you to 37 | select individual edges in SketchUp and create SketchUcam cut edges from 38 | them.   40 | 41 |
45 | Outside Edge 46 |   47 | 49 | Selecting this command will mark selected edges as SketchUcam Outside 50 | edges. This allows you to select individual edges in SketchUp and 51 | create SketchUcam cut edges from them. No other change will be made to 52 | the edge.  
56 | Erase Selected Phlat Edges 57 |   58 | 60 | This command will clear all selected edges that are currently marked as SketchUcam edges. 61 |

Note: The original design edges will remain but the original SketchUcam edges will be deleted. 62 |   63 |
68 | Phlatten Selected Edges 69 |   70 | 72 | This command will set all selected parts to 0 on the Z plane. This is a 73 | great tool for laying parts out in the safe cutting area before 74 | assigning cuts to them. A great feature of this tool is that it ensures 75 | that the part is perfectly flat and that the proper face (default blue) 76 | is facing upward.   77 |
82 | 83 | 84 |
85 |

 

86 |

87 | 88 | Thank you for your interest in the SketchUcam project. Please take the time to visit the Phlatforum for lots of great people sharing great ideas and designs created with the PhlatScripT on their Phlatboyz machines! 89 |

90 |
91 |
92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/howto_3d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO use the 3D generator 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
Phlatboyz SketchUcam(PhlatScripT) 15 |
SketchUcam Version 1.4c
2016
16 |
17 |
18 |
19 | Back to help index 20 |

HOWTO use the 3D G-code generator

21 | 22 | The 3D script by Nicholas Peshman has been incorporated into SketchUcam so that it can use 23 | the parameters on the Parameters Dialog. 24 | 25 | It will fetch bit diameter, stepover% and multipass depth from the dialog. 26 | 27 |
    28 |
  1. Move Group or groups (of 3D objects) to within the safe area starting from 0,0 and on the 0 plane 29 |
  2. Tick the 'Generate 3D Gcode' box in the parameters. 30 |
  3. Click 'Generate G-code' 31 |
32 | 33 | WARNING: 34 | This script is still under development and does not produce perfect output, yet. 35 | 36 |

37 | Here is an old video by Nicholas about using this module
38 | https://www.youtube.com/watch?v=HUNpZ0-bFRI
39 | and actually cutting something similar...
40 | https://www.youtube.com/watch?v=BZMKPhxizmM 41 |

42 | 43 |
44 |
45 |
46 |
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/howto_profileexchange.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO exchange tool profiles with friends 5 | 6 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 |
Phlatboyz PhlatScripT 19 |
SketchUcam Version 1.1c
Feb 2014
20 |
21 |
22 |
23 | Back to help index 24 |

HOWTO exchange tool profiles with friends

25 |
26 | Tool and material profiles can be exchanged between users, sharing the ease of setup for particular materials. 27 | This document will guide you through exchangeing profiles with other users.
28 | NOTE: Profiles only work with Sketchup units set to millimeters or inches (decimal). 29 |
30 | 31 | 32 | 33 | 34 | 37 | 38 | 39 | 42 | 71 | 72 | 73 | 76 | 84 | 85 | 86 |
35 |

Exchanging profiles

36 |
40 | Giving your profiles away 41 | 43 | The profiles are stored in the Sketchup folder within each users APPDATA folder which you can display via the 44 | Tools|Phlatboyz|Display Profiles Folder 45 | menu item. 46 | [MAC: see bottom of page].
47 | Should that menu item not open a file browser in the relevant folder containing a number of .TPR files follow the instructions below
48 | The path to this folder varies between Windows versions but can easily be found by doing the following: 49 |
50 |
51 |
52 |
do this 53 |
Click 'Start' 54 |
Click 'Run' 55 |
Paste '%APPDATA%/Sketchup' 56 |
Press Enter 57 |
or this 58 |
Open 'My Computer' 59 |
Paste '%APPDATA%/Sketchup' in the address bar 60 |
Press Enter 61 |
or this 62 |
Use 'My Computer' to navigate to (may vary between Windows versions)
63 | C:\Users\yourusername\AppData\Roaming\SketchUp
64 |
65 |
66 | Windows will open a file explorer with the folder displayed. 67 | All the 'somename.TPR' files are your profiles. 68 | To give them to someone else, simply email them, transfer them with a flash stick or post them on phlatforum.com 69 | in the 'Material/Bit Specific Feedrates' topic. 70 |
74 | Installing a downloaded profile 75 | 77 | To install a profile that you have downloaded: 78 |
    79 |
  1. Open your APPDATA folder (as above). 80 |
  2. Copy or move the downloaded profile file to that folder. 81 |
  3. Open Sketchup and confirm that you can load it. 82 |
83 |
87 | 88 |
89 |
90 | Mac/Linux users: you will be running Sketchup under Wine and the APPDATA environment variable does not exist.
91 | The folder is in a path similar to
92 | /home/username/.wine/c_drive/users/username/Application Data/Sketchup
93 | You may need to set your folder viewer to 'display hidden files' in order to see the .wine folder 94 |
95 | 96 |
97 |
98 | 99 | -------------------------------------------------------------------------------- /docs/icons/OBicon_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/OBicon_large.png -------------------------------------------------------------------------------- /docs/icons/OBicon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/OBicon_small.png -------------------------------------------------------------------------------- /docs/icons/Pocket_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/Pocket_large.png -------------------------------------------------------------------------------- /docs/icons/Pocket_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/Pocket_small.png -------------------------------------------------------------------------------- /docs/icons/SketchUcam-Window-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/SketchUcam-Window-Logo.png -------------------------------------------------------------------------------- /docs/icons/andy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/andy.png -------------------------------------------------------------------------------- /docs/icons/bones01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones01.png -------------------------------------------------------------------------------- /docs/icons/bones02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones02.png -------------------------------------------------------------------------------- /docs/icons/bones03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones03.png -------------------------------------------------------------------------------- /docs/icons/bones04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones04.png -------------------------------------------------------------------------------- /docs/icons/bones05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones05.png -------------------------------------------------------------------------------- /docs/icons/bones06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones06.png -------------------------------------------------------------------------------- /docs/icons/bones07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones07.png -------------------------------------------------------------------------------- /docs/icons/bones08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones08.png -------------------------------------------------------------------------------- /docs/icons/bones08png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones08png.png -------------------------------------------------------------------------------- /docs/icons/bones09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bones09.png -------------------------------------------------------------------------------- /docs/icons/bonesbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bonesbit.png -------------------------------------------------------------------------------- /docs/icons/bracket_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bracket_large.png -------------------------------------------------------------------------------- /docs/icons/bracket_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/bracket_small.png -------------------------------------------------------------------------------- /docs/icons/cboretool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cboretool_large.png -------------------------------------------------------------------------------- /docs/icons/cboretool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cboretool_small.png -------------------------------------------------------------------------------- /docs/icons/centerlinetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/centerlinetool_large.png -------------------------------------------------------------------------------- /docs/icons/centerlinetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/centerlinetool_small.png -------------------------------------------------------------------------------- /docs/icons/chamfer-diag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer-diag.png -------------------------------------------------------------------------------- /docs/icons/chamfer-s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer-s1.png -------------------------------------------------------------------------------- /docs/icons/chamfer-s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer-s2.png -------------------------------------------------------------------------------- /docs/icons/chamfer-s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer-s3.png -------------------------------------------------------------------------------- /docs/icons/chamfer01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer01.png -------------------------------------------------------------------------------- /docs/icons/chamfer02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer02.png -------------------------------------------------------------------------------- /docs/icons/chamfer03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/chamfer03.png -------------------------------------------------------------------------------- /docs/icons/comment_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/comment_large.png -------------------------------------------------------------------------------- /docs/icons/comment_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/comment_small.png -------------------------------------------------------------------------------- /docs/icons/csink01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csink01.png -------------------------------------------------------------------------------- /docs/icons/csink02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csink02.png -------------------------------------------------------------------------------- /docs/icons/csink03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csink03.png -------------------------------------------------------------------------------- /docs/icons/csink04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csink04.png -------------------------------------------------------------------------------- /docs/icons/csinktool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csinktool_large.png -------------------------------------------------------------------------------- /docs/icons/csinktool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csinktool_small.png -------------------------------------------------------------------------------- /docs/icons/csinkwooda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/csinkwooda.png -------------------------------------------------------------------------------- /docs/icons/cursor_centerlinetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_centerlinetool.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_centerlinecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_centerlinecut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_foldcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_foldcut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_insidecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_insidecut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_outsidecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_outsidecut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_plungecut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_plungecut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erase_tabcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erase_tabcut.png -------------------------------------------------------------------------------- /docs/icons/cursor_erasetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_erasetool.png -------------------------------------------------------------------------------- /docs/icons/cursor_foldtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_foldtool.png -------------------------------------------------------------------------------- /docs/icons/cursor_insidecuttool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_insidecuttool.png -------------------------------------------------------------------------------- /docs/icons/cursor_outsidecuttool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_outsidecuttool.png -------------------------------------------------------------------------------- /docs/icons/cursor_plungetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_plungetool.png -------------------------------------------------------------------------------- /docs/icons/cursor_safetool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_safetool.png -------------------------------------------------------------------------------- /docs/icons/cursor_tabtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_tabtool.png -------------------------------------------------------------------------------- /docs/icons/cursor_vtabtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/cursor_vtabtool.png -------------------------------------------------------------------------------- /docs/icons/edgecontext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/edgecontext.png -------------------------------------------------------------------------------- /docs/icons/erasetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/erasetool_large.png -------------------------------------------------------------------------------- /docs/icons/erasetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/erasetool_small.png -------------------------------------------------------------------------------- /docs/icons/foldtool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/foldtool_large.png -------------------------------------------------------------------------------- /docs/icons/foldtool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/foldtool_small.png -------------------------------------------------------------------------------- /docs/icons/gcode_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/gcode_large.png -------------------------------------------------------------------------------- /docs/icons/gcode_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/gcode_small.png -------------------------------------------------------------------------------- /docs/icons/helptool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/helptool_large.png -------------------------------------------------------------------------------- /docs/icons/helptool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/helptool_small.png -------------------------------------------------------------------------------- /docs/icons/holepattern01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/holepattern01.png -------------------------------------------------------------------------------- /docs/icons/holepattern02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/holepattern02.png -------------------------------------------------------------------------------- /docs/icons/holepattern03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/holepattern03.png -------------------------------------------------------------------------------- /docs/icons/howto01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/howto01.png -------------------------------------------------------------------------------- /docs/icons/howto02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/howto02.png -------------------------------------------------------------------------------- /docs/icons/howto03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/howto03.png -------------------------------------------------------------------------------- /docs/icons/insidecuttool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/insidecuttool_large.png -------------------------------------------------------------------------------- /docs/icons/insidecuttool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/insidecuttool_small.png -------------------------------------------------------------------------------- /docs/icons/joiner_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/joiner_large.png -------------------------------------------------------------------------------- /docs/icons/joiner_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/joiner_small.png -------------------------------------------------------------------------------- /docs/icons/laser1a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/laser1a.png -------------------------------------------------------------------------------- /docs/icons/laser2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/laser2a.png -------------------------------------------------------------------------------- /docs/icons/laser3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/laser3a.png -------------------------------------------------------------------------------- /docs/icons/options-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-feature.png -------------------------------------------------------------------------------- /docs/icons/options-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-file.png -------------------------------------------------------------------------------- /docs/icons/options-holefeatures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-holefeatures.png -------------------------------------------------------------------------------- /docs/icons/options-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-machine.png -------------------------------------------------------------------------------- /docs/icons/options-misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-misc.png -------------------------------------------------------------------------------- /docs/icons/options-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options-tool.png -------------------------------------------------------------------------------- /docs/icons/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/options.png -------------------------------------------------------------------------------- /docs/icons/optsummary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/optsummary.png -------------------------------------------------------------------------------- /docs/icons/outsidecuttool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/outsidecuttool_large.png -------------------------------------------------------------------------------- /docs/icons/outsidecuttool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/outsidecuttool_small.png -------------------------------------------------------------------------------- /docs/icons/parameterstool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/parameterstool_large.png -------------------------------------------------------------------------------- /docs/icons/parameterstool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/parameterstool_small.png -------------------------------------------------------------------------------- /docs/icons/params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/params.png -------------------------------------------------------------------------------- /docs/icons/phlat01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/phlat01.png -------------------------------------------------------------------------------- /docs/icons/phlatbones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/phlatbones.png -------------------------------------------------------------------------------- /docs/icons/phlatboyz_homepage_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/phlatboyz_homepage_large.png -------------------------------------------------------------------------------- /docs/icons/phlatboyz_homepage_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/phlatboyz_homepage_small.png -------------------------------------------------------------------------------- /docs/icons/plungetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/plungetool_large.png -------------------------------------------------------------------------------- /docs/icons/plungetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/plungetool_small.png -------------------------------------------------------------------------------- /docs/icons/pocket1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/pocket1.png -------------------------------------------------------------------------------- /docs/icons/pocket2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/pocket2.png -------------------------------------------------------------------------------- /docs/icons/pocket3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/pocket3.png -------------------------------------------------------------------------------- /docs/icons/pocket4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/pocket4.png -------------------------------------------------------------------------------- /docs/icons/profileload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/profileload.png -------------------------------------------------------------------------------- /docs/icons/profiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/profiles.png -------------------------------------------------------------------------------- /docs/icons/profilesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/profilesave.png -------------------------------------------------------------------------------- /docs/icons/quicktoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/quicktoolbar.png -------------------------------------------------------------------------------- /docs/icons/ramp01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp01.png -------------------------------------------------------------------------------- /docs/icons/ramp01a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp01a.png -------------------------------------------------------------------------------- /docs/icons/ramp02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp02.png -------------------------------------------------------------------------------- /docs/icons/ramp03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp03.png -------------------------------------------------------------------------------- /docs/icons/ramp04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp04.png -------------------------------------------------------------------------------- /docs/icons/ramp05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp05.png -------------------------------------------------------------------------------- /docs/icons/ramp06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp06.png -------------------------------------------------------------------------------- /docs/icons/ramp07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp07.png -------------------------------------------------------------------------------- /docs/icons/ramp08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp08.png -------------------------------------------------------------------------------- /docs/icons/ramp09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp09.png -------------------------------------------------------------------------------- /docs/icons/ramp10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramp10.png -------------------------------------------------------------------------------- /docs/icons/ramplimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/ramplimit.png -------------------------------------------------------------------------------- /docs/icons/reorder_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/reorder_large.png -------------------------------------------------------------------------------- /docs/icons/reorder_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/reorder_small.png -------------------------------------------------------------------------------- /docs/icons/rotate_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/rotate_large.png -------------------------------------------------------------------------------- /docs/icons/rotate_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/rotate_small.png -------------------------------------------------------------------------------- /docs/icons/safetool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/safetool_large.png -------------------------------------------------------------------------------- /docs/icons/safetool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/safetool_small.png -------------------------------------------------------------------------------- /docs/icons/sfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/sfm.png -------------------------------------------------------------------------------- /docs/icons/sfm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/sfm2.png -------------------------------------------------------------------------------- /docs/icons/tabtool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/tabtool_large.png -------------------------------------------------------------------------------- /docs/icons/tabtool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/tabtool_small.png -------------------------------------------------------------------------------- /docs/icons/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/toolbar.png -------------------------------------------------------------------------------- /docs/icons/toolchange01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/toolchange01.png -------------------------------------------------------------------------------- /docs/icons/toolchange_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/toolchange_large.png -------------------------------------------------------------------------------- /docs/icons/toolchange_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/toolchange_small.png -------------------------------------------------------------------------------- /docs/icons/toolsmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/toolsmenu.png -------------------------------------------------------------------------------- /docs/icons/zerotool_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/zerotool_large.png -------------------------------------------------------------------------------- /docs/icons/zerotool_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/icons/zerotool_small.png -------------------------------------------------------------------------------- /docs/images/SketchUcam-Window-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/SketchUcam-Window-Logo.png -------------------------------------------------------------------------------- /docs/images/bones01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones01.png -------------------------------------------------------------------------------- /docs/images/bones02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones02.png -------------------------------------------------------------------------------- /docs/images/bones03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones03.png -------------------------------------------------------------------------------- /docs/images/bones04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones04.png -------------------------------------------------------------------------------- /docs/images/bones05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones05.png -------------------------------------------------------------------------------- /docs/images/bones06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones06.png -------------------------------------------------------------------------------- /docs/images/bones07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones07.png -------------------------------------------------------------------------------- /docs/images/bones08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones08.png -------------------------------------------------------------------------------- /docs/images/bones08png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones08png.png -------------------------------------------------------------------------------- /docs/images/bones09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bones09.png -------------------------------------------------------------------------------- /docs/images/bonesbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/bonesbit.png -------------------------------------------------------------------------------- /docs/images/chamfer-diag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer-diag.png -------------------------------------------------------------------------------- /docs/images/chamfer-s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer-s1.png -------------------------------------------------------------------------------- /docs/images/chamfer-s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer-s2.png -------------------------------------------------------------------------------- /docs/images/chamfer-s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer-s3.png -------------------------------------------------------------------------------- /docs/images/chamfer01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer01.png -------------------------------------------------------------------------------- /docs/images/chamfer02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer02.png -------------------------------------------------------------------------------- /docs/images/chamfer03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/chamfer03.png -------------------------------------------------------------------------------- /docs/images/csink01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/csink01.png -------------------------------------------------------------------------------- /docs/images/csink02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/csink02.png -------------------------------------------------------------------------------- /docs/images/csink03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/csink03.png -------------------------------------------------------------------------------- /docs/images/csink04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/csink04.png -------------------------------------------------------------------------------- /docs/images/csinkwooda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/csinkwooda.png -------------------------------------------------------------------------------- /docs/images/edgecontext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/edgecontext.png -------------------------------------------------------------------------------- /docs/images/holepattern01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/holepattern01.png -------------------------------------------------------------------------------- /docs/images/holepattern02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/holepattern02.png -------------------------------------------------------------------------------- /docs/images/holepattern03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/holepattern03.png -------------------------------------------------------------------------------- /docs/images/howto01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/howto01.png -------------------------------------------------------------------------------- /docs/images/howto02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/howto02.png -------------------------------------------------------------------------------- /docs/images/howto03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/howto03.png -------------------------------------------------------------------------------- /docs/images/laser1a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/laser1a.png -------------------------------------------------------------------------------- /docs/images/laser2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/laser2a.png -------------------------------------------------------------------------------- /docs/images/laser3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/laser3a.png -------------------------------------------------------------------------------- /docs/images/options-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-feature.png -------------------------------------------------------------------------------- /docs/images/options-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-file.png -------------------------------------------------------------------------------- /docs/images/options-holefeatures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-holefeatures.png -------------------------------------------------------------------------------- /docs/images/options-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-machine.png -------------------------------------------------------------------------------- /docs/images/options-misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-misc.png -------------------------------------------------------------------------------- /docs/images/options-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options-tool.png -------------------------------------------------------------------------------- /docs/images/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/options.png -------------------------------------------------------------------------------- /docs/images/optsummary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/optsummary.png -------------------------------------------------------------------------------- /docs/images/params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/params.png -------------------------------------------------------------------------------- /docs/images/phlat01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/phlat01.png -------------------------------------------------------------------------------- /docs/images/phlatbones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/phlatbones.png -------------------------------------------------------------------------------- /docs/images/pocket1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/pocket1.png -------------------------------------------------------------------------------- /docs/images/pocket2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/pocket2.png -------------------------------------------------------------------------------- /docs/images/pocket3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/pocket3.png -------------------------------------------------------------------------------- /docs/images/pocket4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/pocket4.png -------------------------------------------------------------------------------- /docs/images/profileload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/profileload.png -------------------------------------------------------------------------------- /docs/images/profiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/profiles.png -------------------------------------------------------------------------------- /docs/images/profilesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/profilesave.png -------------------------------------------------------------------------------- /docs/images/quicktoolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/quicktoolbar.png -------------------------------------------------------------------------------- /docs/images/ramp01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp01.png -------------------------------------------------------------------------------- /docs/images/ramp01a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp01a.png -------------------------------------------------------------------------------- /docs/images/ramp02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp02.png -------------------------------------------------------------------------------- /docs/images/ramp03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp03.png -------------------------------------------------------------------------------- /docs/images/ramp04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp04.png -------------------------------------------------------------------------------- /docs/images/ramp05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp05.png -------------------------------------------------------------------------------- /docs/images/ramp06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp06.png -------------------------------------------------------------------------------- /docs/images/ramp07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp07.png -------------------------------------------------------------------------------- /docs/images/ramp08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp08.png -------------------------------------------------------------------------------- /docs/images/ramp09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp09.png -------------------------------------------------------------------------------- /docs/images/ramp10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramp10.png -------------------------------------------------------------------------------- /docs/images/ramplimit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/ramplimit.png -------------------------------------------------------------------------------- /docs/images/sfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/sfm.png -------------------------------------------------------------------------------- /docs/images/sfm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/sfm2.png -------------------------------------------------------------------------------- /docs/images/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/toolbar.png -------------------------------------------------------------------------------- /docs/images/toolchange01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/toolchange01.png -------------------------------------------------------------------------------- /docs/images/toolsmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarfer/sketchucam/eb51a9869e3c8739a2be1777502a74fc6fb24986/docs/images/toolsmenu.png -------------------------------------------------------------------------------- /docs/machelp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SketchUcam: HOWTO use Ramping 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
Phlatboyz SketchUcam(PhlatScripT) 15 |
16 | SketchUcam Version 1.4d
Jan 2017 17 |
18 |
19 |
20 |
21 | Back to help index 22 |

Help for MAC users

23 | 24 |

Special keys:

25 |

Some Mac keyboards do not have the HOME and END keys (and ALT may not be labelled).

26 |

There are alternate combinations that simulate those keys:

27 |
    28 |
  • HOME = "FN-LEFT ARROW" 29 |
  • END = "FN-RIGHT ARROW" 30 |
  • ALT = OPTION 31 |
32 |

Sometimes you may have to hit the FN-LEFT twice before the dialog comes up.

33 |

Thanks to OpenBuilds user andycbrklyn for help with this.

34 |
35 |
36 |

37 |
38 | 39 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if exist help.html del index.html 3 | if exist help.html move help.html index.html 4 | php make.php *.html 5 | -------------------------------------------------------------------------------- /docs/make.php: -------------------------------------------------------------------------------- 1 | 30 | -------------------------------------------------------------------------------- /docs/style.css: -------------------------------------------------------------------------------- 1 | body, div, span { 2 | font-family: Verdana; 3 | } 4 | body { 5 | background-color: grey; 6 | text-align: center; 7 | max-width: 1024px; 8 | padding-left:0.5%; 9 | padding-right:0.5%; 10 | margin-left: auto; 11 | margin-right: auto; 12 | } 13 | div.shell { 14 | /*background-color: #eee;*/ 15 | background-color: #ddeeff; 16 | /*background-color: white;*/ 17 | font-size: 1.05em; 18 | } 19 | 20 | div.intro-name { 21 | text-align:center; 22 | font-size: 1.20em; 23 | font-weight: bold; 24 | padding-top:25px; 25 | } 26 | div.intro-name div { 27 | font-size: 0.60em; 28 | font-weight: normal; 29 | } 30 | div.intro-title { 31 | text-align:center; 32 | margin:10px; 33 | font-size: 1.10em; 34 | font-weight: bold; 35 | padding-top: 15px; 36 | } 37 | div.intro { 38 | text-align: justify; 39 | margin:5px; 40 | padding: 5px; 41 | font-size: 0.90em; 42 | } 43 | 44 | 45 | .command-image { 46 | /*background-color: #ededed;*/ 47 | background-color: #ddeeff; 48 | height: 100px; 49 | font-weight: bold; 50 | font-size: 0.90em; 51 | vertical-align:center; 52 | padding:10px; 53 | border-top: thin solid white; 54 | border-left: thin solid white; 55 | border-right: thin solid #cccccc; 56 | border-bottom: thin solid #cccccc; 57 | } 58 | .command-description { 59 | /*background-color: #ededed;*/ 60 | background-color: #eaecfa; 61 | /*margin: 2px;*/ 62 | padding: 15px; 63 | border-top: thin solid white; 64 | border-left: thin solid white; 65 | border-right: thin solid #cccccc; 66 | border-bottom: thin solid #cccccc; 67 | font-size: 0.90em; 68 | vertical-align: top; 69 | } 70 | 71 | .command-title { 72 | font-size: 1.00em; 73 | font-weight: bold; 74 | /*border-bottom: thin solid blue;*/ 75 | text-align: center; 76 | padding-top: 25px; 77 | border-top: thin solid white; 78 | border-left: thin solid white; 79 | border-right: thin solid #cccccc; 80 | border-bottom: thin solid #cccccc; 81 | text-decoration: underline; 82 | } 83 | .command-subtitle { 84 | font-size: 0.70em; 85 | font-style: italic; 86 | } 87 | .newcolour { 88 | color: #000000; 89 | } 90 | hr { 91 | background-color: #6699ff; 92 | height: 2px; 93 | border: 0; 94 | } 95 | td { 96 | text-align: justify; 97 | } 98 | dt { 99 | margin-top: 5px; 100 | font-weight: bold; 101 | } 102 | .index { 103 | line-height: 1.6em; 104 | } 105 | img { 106 | margin-left: 1em; 107 | } -------------------------------------------------------------------------------- /howtobuild.txt: -------------------------------------------------------------------------------- 1 | How to build the SketchUcam distribution file 2 | 3 | You need 4 | 1 - php-cli installed and in the environment path 5 | 2 - 7zip installed in 'c:\program files\7-zip\7z.exe' 6 | 3 - Sketchup 8 installed in either 7 | 'C:\Program Files (x86)\Google\Google SketchUp 8' (under 64bit Windows) 8 | 'C:\Program Files\Google\Google SketchUp 8' (under 32bit Windows) 9 | 4 - the code repo must be in one of the above folders, not in a subfolder called 'sketchucam', thus 10 | after you have first cloned it you need to move the contents of ..../sketchucam to the 'Google Sketchup 8' folder 11 | 5 - run make.bat 12 | this will create a zip of the .rb and supporting files and then create the .rbz from that. 13 | -------------------------------------------------------------------------------- /make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem if exist i:\ goto ido 3 | if exist c:\ goto cdo 4 | goto fail 5 | 6 | :ido 7 | I: 8 | cd "I:\public_html\phlat\plugins" 9 | goto zipit 10 | 11 | :cdo 12 | c: 13 | REM stole this from git-cmd.bat, should set git path for us so we don't have to run gitshell 14 | @setlocal 15 | 16 | REM find the actual Portablegit folder and use it, this means we don't have to keep up with git upgrades in this file 17 | set PGIT=none 18 | if not exist C:\Users\david\AppData\Local\GitHub goto newpc 19 | for /F %%a in ('dir /b C:\Users\david\AppData\Local\GitHub\Port*') do set PGIT=%%a 20 | @set git_install_root=C:\Users\david\AppData\Local\GitHub\%PGIT% 21 | goto spath 22 | 23 | :newpc 24 | set PGIT=C:\Program Files\Git 25 | echo %PGIT% 26 | 27 | goto spath 28 | 29 | @rem Get the absolute path to the current directory, which is assumed to be the 30 | @rem Git installation root. 31 | REM if exist C:\Users\david\AppData\Local\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad goto aa 32 | REM if exist C:\Users\david\AppData\Local\GitHub\PortableGit_c7e0cbde92ba565cb218a521411d0e854079a28c goto bb 33 | REM if exist C:\Users\david\AppData\Local\GitHub\PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 goto cc 34 | REM :aa 35 | REM @set git_install_root=C:\Users\david\AppData\Local\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad 36 | REM goto spath 37 | REM 38 | REM :bb 39 | REM @set git_install_root=C:\Users\david\AppData\Local\GitHub\PortableGit_c7e0cbde92ba565cb218a521411d0e854079a28c 40 | REM goto spath 41 | REM 42 | REM :cc 43 | REM @set git_install_root=C:\Users\david\AppData\Local\GitHub\PortableGit_25d850739bc178b2eb13c3e2a9faafea2f9143c0 44 | REM goto spath 45 | 46 | 47 | :spath 48 | REM refresh the doc for the code 49 | cd "C:\Program Files (x86)\Google\Google SketchUp 8\Plugins\Phlatboyz" 50 | echo calling rdoc 51 | call rdoc *.rb *.rb tools\*.rb utils\*.rb 52 | cd "C:\Program Files (x86)\Google\Google SketchUp 8\" 53 | 54 | @set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%git_install_root%\cmd;%PATH% 55 | 56 | @set PLINK_PROTOCOL=ssh 57 | @if not defined TERM set TERM=msys 58 | git describe --abbrev=4 --dirty --always --tags --contains > plugins\phrev.dat 59 | dir plugins\phrev.dat 60 | 61 | if exist "C:\Program Files (x86)\Google\Google SketchUp 8" cd "C:\Program Files (x86)\Google\Google SketchUp 8\Plugins" 62 | if exist "C:\Program Files\Google\Google SketchUp 8\Plugins" cd "C:\Program Files\Google\Google SketchUp 8\Plugins" 63 | cd 64 | if exist Phlatboyz goto zipit 65 | echo Phlatboyz not found 66 | goto fail 67 | 68 | :zipit 69 | echo Zipit 70 | cd 71 | del tp.zip 72 | "c:\program files\7-zip\7z" a ..\tp.zip *.* -x@..\make.ex -r 73 | dir /s /b *.zip 74 | 75 | rem del ..\sketchucam-1*.rbz 76 | cd .. 77 | REM subwcrev .\ phrev.txt phrev.dat // git does not support this 78 | if not exist tp.zip echo ERROR tp.zip not found 79 | if exist tp.zip php move.php tp.zip SketchUcam-1_5c.rbz 80 | 81 | goto end 82 | 83 | :fail 84 | echo "failed" 85 | :end 86 | -------------------------------------------------------------------------------- /make.ex: -------------------------------------------------------------------------------- 1 | !auto* 2 | *.bak 3 | *.rbz 4 | *.zip 5 | 2D* 6 | BZ_Dir_* 7 | CNC-profile.rb 8 | CNC_Files 9 | Cadalog_Gear* 10 | CenterPointAll.rb 11 | ChrisP_RadialMove_EN.rb 12 | DM_* 13 | Examples 14 | ExtrudeTools* 15 | LibTraductor.rb 16 | Ocean 17 | PhlatScript Installation Instructions.pdf 18 | Phlatboyz\MyConstants.rb 19 | PocketTool.r_b 20 | PocketTool.rb 21 | PocketTool.rbz 22 | RCS 23 | TIG-Smart_offset 24 | TIG-Smart_offset.rb 25 | TRUEPLUNGE.TXT 26 | Utilities 27 | attribs* 28 | bezierspline.rb 29 | deBabelizer.rb 30 | drawhelix* 31 | examples.rb 32 | flattery* 33 | flightpath.rb 34 | fredo* 35 | freedxf* 36 | helix* 37 | hideall.rb 38 | jf*.rb 39 | ky_Reorder_Groups (v1.1).rb 40 | ocean_extension.rb 41 | orig* 42 | skp_to_dxf.rb 43 | smustard* 44 | stray*.rb 45 | test 46 | tt_* 47 | utilities.rb 48 | Sync* 49 | _* 50 | voro* 51 | pointtool* 52 | as_face* 53 | centerpoint* 54 | delau* 55 | MyConst* 56 | sr_cutlist* 57 | sketchup-stl* 58 | PhlatBoyz\doc\* -------------------------------------------------------------------------------- /maked.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd "C:\Program Files (x86)\Google\Google SketchUp 8\Plugins\Phlatboyz" 3 | call rdoc *.rb *.rb tools\*.rb utils\*.rb 4 | cd "C:\Program Files (x86)\Google\Google SketchUp 8\" 5 | -------------------------------------------------------------------------------- /move.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /phrev.txt: -------------------------------------------------------------------------------- 1 | $WCREV$ --------------------------------------------------------------------------------