欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

UG4.0编程笔记

时间:2023-01-02 08:17:32 其他范文 收藏本文 下载本文

下面小编为大家带来UG4.0编程笔记,本文共11篇,希望大家能够受用!

UG4.0编程笔记

篇1:UG4.0编程笔记

1:定坐标 格式——WCS——方位2:删除当前操作导航器中的设置工具——操作导航器——删除设置3:部件尺寸分析 把安全平面的高度输入然后确定 点击坐标前面的“+”号把工件个毛坯选好8“创建操作:类型“DRILL”用第三个DRILLING给所创建的工步起好名字,所起的名字最好和刀具名相同一便更好的区分 把刀选好 名称填好 然后确定 让所创建的工步进入导航器中9;打开所创建的工步 把需要加工的孔选好 如果需分组 就按分组形式选孔 点击“CYA1”参数组(1-5)分别选好每组的孔,如果不需要分组时 就可选择面上所有的孔 的方式来选择需要加工的孔 当孔选好后确定一下 所选的孔就会出现顺序号 点击“优化”让其以最小的距离来加工 点3次确定直到找到“点位加工几何体”对话框为止 再来选上“AVOID”(避让)为刀具抬起设置高度 按顺序选 一直选好 不要漏掉 以免撞刀 选1号2号设定一个安全平面或距离 选2号3号使点击上一次所设有距离的位置 会出现1号2号的高度 (点击)输入距离 按顺序选好后确定 进入到原始的创建工步 选“标准钻深度”注意:原本有的“标准钻深度”也要选一下 指定组或孔的加工深度 注意:钻头用刀肩指定深度 铣刀和镗刀用刀尖定位 指定深度使 通孔深稍微深2-3MM 然后确定 在进入到原始加工工步 把最小间距设为(2-3MM)默 进给率:主轴转速500-800剪切50-80进刀不用设10:把需要精镗的孔 用镗刀镗出来在把上一个程序 复制 一个 更名为镗刀名 把复制的程序 挂在镗刀下面 按需要把所加工的孔进行重新编辑 附加或忽略 然后进入到 创造工步里面把“标准钻”改为“标准镗返回”一直确定三下因为不用在去分组 不用重新设置高度 不用重新设置进给率 只需要把“刀肩深度”改为“刀尖深度”即可 在CYDE参数对话框中的第一个点击一下设为刀尖深度11:每次啄钻深度 标准钻深度——STEP设置每次的深度12:无论孔的大小 首先需要中心转MILLING平面铣1:建立零件2:建立毛坯3:设置所需要用的刀具4:把坐标定好5:创工步          程序名和刀具名相同          刀具名T63R5-T          刀具号          调整记录器           程序名为T63R5-1步进:刀切削完成—行后进行下一行的距离 一般用刀具直径的百分比 当用刀具直径百分比的时候 应当注意一个问题就是:所填的百分比书是否大雨刀具去掉尺寸 如果小于刀具的直径就能切削完全 如果大于刀具直径的百分比就会留小残料切削方式1》往复式切削 切削方向顺序不变 切削角自动用户定义多用于清壁        2》单向切削 精加工 陡壁筋板面上下的切削 多用于叫清壁        3 沿轮廓单向切削 用于薄壁零件加工4 跟随周边 沿外形轮廓切削(岛清理打自动腔类多选择向外,有利于螺旋下刀凸模选择向内)5跟随工件;切削方向只可设定为顺逆铣 多用于参考刀具时  选用的切削方式6摆线 用于比较窄的凹槽铣削7轮廓 用于半精 或 精加工零件侧壁或外形轮廓 附加刀路在此打开8 标准驱动:适用于雕刻 跟随周边和跟随工件 一般多用于切削区域比较大 进刀和退刀时伤不到工件为基准平面铣子类型Face-Milling_Area表面区域铣Face_Milling表面铣Face_Milling_MANUAL表面手动铣PLANAR_Mill平面铣PLANAR_PROFILE平面轮廓铣ROUGH_FOLLOW跟随轮廓粗铣ROUGH_ZIGZAG往复式粗铣ROUGH_ZIG单向粗铣 控制点:1预钻孔进刀点 当选定以后每次进刀都从转折个点就刀 2一般下刀点 当设定以后系统给算出离这点比较近的地方下刀自动进退刀:1水平:铣刀的圆狐面和所要加工的工件表面的距离 可设置0或..           2竖直:刀具的立铣面和加工表面的距离 也可以说为先前平面可设置0.X或只要不撞刀即可           3最小:水平和竖直的中间值传送方式;一般采用先前平面(竖直)比较多自动进退刀 倾斜类型1)在直线上 90度垂直下刀 一般不才用应为对刀具不利只有在半精或精加工时应用比较安全2)沿外形:沿工件的外形轮廓进行下刀3)螺旋下刀 斜角度数不大于3—8度如果度数过大就会和直线下刀没有多大差别为了延长刀具寿命 减小刀具的冲击力 最小斜面长度—直径(不用动) 65%自动类型1圆的 退刀方式为圆弧退刀2线性退刀方式为直线退刀圆弧半径:可以根据需要调整半径大小激活区间:默认(1—3)激活区间为0时重叠距离则无效大于0时重叠距离才有效使用重叠距离(0.5—1)退刀间距 :在开粗时可设0.5-1(注意容易撞刀)          在半精或精加工使一定要清零退刀间距尽量小 最好为空切削顺序:1层优先 :刀具在同时切削两个腔时他会按每层的切削深度跳跃来切削 这种方式跳刀比较多 所以不常用这种方式         2深度优先:刀具在切削两个腔时 它会把第一个腔铣完后 在进入第二个腔内切削 这样切削跳刀比较少 所以用这种方式比较多切削方向1顺铣(常用)2逆铣3跟随周边4边界反向向外 凹模常用 向内  凸模常用余量:部件余量等同于铣壁余量     底面余量:因为刀具的磨损 可以比壁余量捎小一些     毛坯余量 不用设置     检查余量  根据情况而设置     内公差 0~0.01 一般设置0     外公差 0.01    一般设置大于0切削深度类型:用户定义             仅仅底面             底面和岛的顶面              按情况设置                                      岛顶部的层             固定深度    平面铣保存边界是为了清圆角最大和最小 当最大设置为1时最小设置为0时系统会自动算出最后不到1的那层 切削社度直到加工完成 也可以使系统自己算出需要多少层初始;开始时切削量为1 最后时切削量为0.2其他需要计算角;一般不要动进给率;主轴转速 根据刀定进刀300~800部件选择点部件—选择—(曲线或边)类型 封闭   平面 自动                               打开        用户定义(投影所选平面上)刀具 相切 或开通过边界时 第一个选定后 确定一下退来附加第二个 以类推精加工壁:把第二次所编的程复制一个 把切削方式改为轮廓 在精加工壁时的程序里公差一定改为0如果不改为0在保存边界时就不起作用 然后在切削——未切削——自动保存边界前打一个“勾”号注意:工件圆角R7就用直径15以上的刀才能保留边界(也可以用开精加工的刀来进行侧壁精加工但必须是平刀R刀不好用)例:  清R7的圆角  1:第一个程序用直径20 的平刀开粗   复制 ——粘贴  2:第二个程序用直径16平刀清壁,余量设置0 切削——未切割——自动保存边界打“勾”号 所生成的刀轨后边界就会自动出现 复制——粘贴  3:第三个程序里只需要把 “隐藏”——“边界”来选择边界生成刀路即可    注意“隐藏”——模式里面换“边界”

1:定坐标 格式——WCS——方位2:删除当前操作导航器中的设置工具——操作导航器——删除设置3:部件尺寸分析 把安全平面的高度输入然后确定 点击坐标前面的“+”号把工件个毛坯选好8“创建操作:类型“DRILL”用第三个DRILLING给所创建的工步起好名字,所起的名字最好和刀具名相同一便更好的区分 把刀选好 名称填好 然后确定 让所创建的工步进入导航器中9;打开所创建的工步 把需要加工的孔选好 如果需分组 就按分组形式选孔 点击“CYA1”参数组(1-5)分别选好每组的孔,如果不需要分组时 就可选择面上所有的孔 的方式来选择需要加工的孔 当孔选好后确定一下 所选的孔就会出现顺序号 点击“优化”让其以最小的距离来加工 点3次确定直到找到“点位加工几何体”对话框为止 再来选上“AVOID”(避让)为刀具抬起设置高度 按顺序选 一直选好 不要漏掉 以免撞刀 选1号2号设定一个安全平面或距离 选2号3号使点击上一次所设有距离的位置 会出现1号2号的高度 (点击)输入距离 按顺序选好后确定 进入到原始的创建工步 选“标准钻深度”注意:原本有的“标准钻深度”也要选一下 指定组或孔的加工深度 注意:钻头用刀肩指定深度 铣刀和镗刀用刀尖定位 指定深度使 通孔深稍微深2-3MM 然后确定 在进入到原始加工工步 把最小间距设为(2-3MM)默 进给率:主轴转速500-800剪切50-80进刀不用设10:把需要精镗的孔 用镗刀镗出来在把上一个程序 复制 一个 更名为镗刀名 把复制的程序 挂在镗刀下面 按需要把所加工的孔进行重新编辑 附加或忽略 然后进入到 创造工步里面把“标准钻”改为“标准镗返回”一直确定三下因为不用在去分组 不用重新设置高度 不用重新设置进给率 只需要把“刀肩深度”改为“刀尖深度”即可 在CYDE参数对话框中的第一个点击一下设为刀尖深度11:每次啄钻深度 标准钻深度——STEP设置每次的深度12:无论孔的大小 首先需要中心转MILLING平面铣1:建立零件2:建立毛坯3:设置所需要用的刀具4:把坐标定好5:创工步          程序名和刀具名相同          刀具名T63R5-T          刀具号          调整记录器           程序名为T63R5-1步进:刀切削完成—行后进行下一行的距离 一般用刀具直径的百分比 当用刀具直径百分比的时候 应当注意一个问题就是:所填的百分比书是否大雨刀具去掉尺寸 如果小于刀具的直径就能切削完全 如果大于刀具直径的百分比就会留小残料切削方式1》往复式切削 切削方向顺序不变 切削角自动用户定义多用于清壁        2》单向切削 精加工 陡壁筋板面上下的切削 多用于叫清壁        3 沿轮廓单向切削 用于薄壁零件加工4 跟随周边 沿外形轮廓切削(岛清理打自动腔类多选择向外,有利于螺旋下刀凸模选择向内)5跟随工件;切削方向只可设定为顺逆铣 多用于参考刀具时  选用的切削方式6摆线 用于比较窄的凹槽铣削7轮廓 用于半精 或 精加工零件侧壁或外形轮廓 附加刀路在此打开8 标准驱动:适用于雕刻 跟随周边和跟随工件 一般多用于切削区域比较大 进刀和退刀时伤不到工件为基准平面铣子类型Face-Milling_Area表面区域铣Face_Milling表面铣Face_Milling_MANUAL表面手动铣PLANAR_Mill平面铣PLANAR_PROFILE平面轮廓铣ROUGH_FOLLOW跟随轮廓粗铣ROUGH_ZIGZAG往复式粗铣ROUGH_ZIG单向粗铣 控制点:1预钻孔进刀点 当选定以后每次进刀都从转折个点就刀 2一般下刀点 当设定以后系统给算出离这点比较近的地方下刀自动进退刀:1水平:铣刀的圆狐面和所要加工的工件表面的距离 可设置0或..           2竖直:刀具的立铣面和加工表面的距离 也可以说为先前平面可设置0.X或只要不撞刀即可           3最小:水平和竖直的中间值传送方式;一般采用先前平面(竖直)比较多自动进退刀 倾斜类型1)在直线上 90度垂直下刀 一般不才用应为对刀具不利只有在半精或精加工时应用比较安全2)沿外形:沿工件的外形轮廓进行下刀3)螺旋下刀 斜角度数不大于3—8度如果度数过大就会和直线下刀没有多大差别为了延长刀具寿命 减小刀具的冲击力 最小斜面长度—直径(不用动) 65%自动类型1圆的 退刀方式为圆弧退刀2线性退刀方式为直线退刀圆弧半径:可以根据需要调整半径大小激活区间:默认(1—3)激活区间为0时重叠距离则无效大于0时重叠距离才有效使用重叠距离(0.5—1)退刀间距 :在开粗时可设0.5-1(注意容易撞刀)          在半精或精加工使一定要清零退刀间距尽量小 最好为空切削顺序:1层优先 :刀具在同时切削两个腔时他会按每层的切削深度跳跃来切削 这种方式跳刀比较多 所以不常用这种方式         2深度优先:刀具在切削两个腔时 它会把第一个腔铣完后 在进入第二个腔内切削 这样切削跳刀比较少 所以用这种方式比较多切削方向1顺铣(常用)2逆铣3跟随周边4边界反向向外 凹模常用 向内  凸模常用余量:部件余量等同于铣壁余量     底面余量:因为刀具的磨损 可以比壁余量捎小一些     毛坯余量 不用设置     检查余量  根据情况而设置     内公差 0~0.01 一般设置0     外公差 0.01    一般设置大于0切削深度类型:用户定义             仅仅底面             底面和岛的顶面              按情况设置                                      岛顶部的层             固定深度    平面铣保存边界是为了清圆角最大和最小 当最大设置为1时最小设置为0时系统会自动算出最后不到1的那层 切削社度直到加工完成 也可以使系统自己算出需要多少层初始;开始时切削量为1 最后时切削量为0.2其他需要计算角;一般不要动进给率;主轴转速 根据刀定进刀300~800部件选择点部件—选择—(曲线或边)类型 封闭   平面 自动                               打开        用户定义(投影所选平面上)刀具 相切 或开通过边界时 第一个选定后 确定一下退来附加第二个 以类推精加工壁:把第二次所编的程复制一个 把切削方式改为轮廓 在精加工壁时的程序里公差一定改为0如果不改为0在保存边界时就不起作用 然后在切削——未切削——自动保存边界前打一个“勾”号注意:工件圆角R7就用直径15以上的刀才能保留边界(也可以用开精加工的刀来进行侧壁精加工但必须是平刀R刀不好用)例:  清R7的圆角  1:第一个程序用直径20 的平刀开粗   复制 ——粘贴  2:第二个程序用直径16平刀清壁,余量设置0 切削——未切割——自动保存边界打“勾”号 所生成的刀轨后边界就会自动出现 复制——粘贴  3:第三个程序里只需要把 “隐藏”——“边界”来选择边界生成刀路即可    注意“隐藏”——模式里面换“边界”4第四个程序 清低面 利用切削深度里的仅仅底面来进行延伸边界的两种方法修剪:有两个或两个以上的底面,而深度不同不相同时 1:把高出的底面多余的刀路裁剪掉  部件——编辑——附加——去选那个底面即可,就能把多余的刀路修剪 2:刀路向外延伸 部件——编辑——选上所要编辑边界——再编辑——在选上所要编辑边界的某条边——在进行编辑——把余量设置为刀具的负半径即可 刀路的延伸与缩短:(边界必须为打开的)选好边界的起使点或终点进行修剪或延伸 增长=延伸  缩短=修剪 注意: 1多才用大刀开粗 节约时间      2 机床里面:圆弧输出——一般通用                  线性——当螺旋进刀 清角时圆弧半弧过来超出180机床里面把圆弧输出改为线性即可      3 进刀:一般不要太快用300—800,避免第一下刀时撞击力      4平面铣:用跟随周边时,打开岛清理和终点用轮廓时刀路为打开的      5单独清底面时:自动进退刀中,初使进刀改成刀轴内部进刀                      改成“如初使的”进刀线(黄色)就可以改成兰色G00速度 下降到离底面3个的距离,这样可节省时间      6刀具位置:相切于 和开 NX4.0(上)平面铣——部件——编辑——刀具位置 :左或右                  相切于:刀具在边界的一边                  开:   刀具在边界的线上      7对于不同类型的边界,起内外侧定义是不同的        作为部件边界使用时 其材料侧是保留的部分        作为毛坯边界使用时 其材料侧是切除的部分        作为检查边界使用时 其材料侧是保留的部分        保留部分将不生成刀轨 而相对的切削侧则是刀路轨迹的切削部位孔加工时:因为刀具和工具件产生抗性 切削完成,经测量工件要比所需要的尺寸大5~10丝处理办法:比如在编程时用 直径9.95~9.9的刀具生成刀路 在加工时用直径10的刀具切削这样就会把多余的毛坯切除!!平面铣:第一个  部件余量——单填有(2~4)随便 壁余量——单填无效         第四个  部件余量——单填{壁}{底} 都有用 底面余量——只对底有效平面铣注意: 平面铣—自动进退刀           初使进刀改为刀轴           内部进刀改成初使的 在单独清底时G00速度下刀至最低面 主要的进退刀参数有:水平和垂直安全距离:指刀具在接近或离开工件时与工件表面保持的距离 垂直安全距离是指在切削运动开始前 刀具沿着Z轴方向运动时与零件表面的距离 而水平安全距离是指刀具沿着水平方向接近零件侧面时由进刀速度转变为切削速度的位置 最小安全距离:这个安全距离用于有多个切削层的工件 当时使用“传递方式”用“先前平面”时完成一个切削后刀具将从当前切削平面向上延刀   退刀间距就是最小安全距离 然后刀具的快速运动到达下一个进刀点的快速运动到达距离下一切削层垂直安全距离的速度进刀后 开始切削 型腔铣 1如果铣带有余量的铸造件 加工方法是选择型腔铣,切削stategy—毛坯距离**——生成刀路后,必须先挂在坐标上 2铣孔的最好方法 等高轮廓——非陡峭——切削——顺铣连接打到“对部件的交叉倾斜”,

UG4.0编程笔记

。“注意”使用方法 必须把METHOD进刀退刀里面的水平改成大于孔的半径 刀具直径大于孔的半径  操作步骤:陡角必须不用 “合并距离”不填 “最小切削深度”不填 每一刀的“全局深度”填 “切削顺序”不填 “控制几何体” 不用改  进刀 退刀 ——METHOD打开“水平”的填“竖直”填 “最小”不填 “进刀” 不改 “传送方式”可改可不改  “退刀”不改自动进退刀 ; 倾斜类型 螺旋 斜角不大于10% ,螺旋的直径%不填 ,最小斜面长度 直径%不填    自动类型 圆的圆弧半径尽量改小    激活区间不改  重叠距离尽量改小     退刀间距尽量改最小  如: 切削——切削参数——切削顺序(深度优先)切削方向顺铣 其他不选   余量——部件侧壁余量0  部件底面余量0 检查余量0裁剪余量0内公差0.01 切削公差0.01   连接——层到层选对部件的交叉倾斜 其他不用选   包容不用改  型腔铣中应注意以下几点1型腔铣中;部件选好和毛坯选好后,不选择切削区域也能加工,但最好能把切削区域也选上比较好2型腔铣中;切削——切削区域延伸,填上刀具的半径或稍微大于刀具的半径,让刀路延伸出来一刀 ,当切削工件时就会在工件之外下刀,为的是避免在工件上下刀,减少刀的撞击力,延长刀的寿命 尽量不要让刀切在工件上3型腔铣中;进给率里面的进刀300~800在开粗时不用填 除非使用小刀时要填4型腔铣中;自动进退刀—初使进刀改成刀轴,内部进刀改为无这样在参考刀时减少跳刀 或进刀线不会显的太乱5型腔铣中:跟随工件“切削”——打开刀路变换切削方向6型腔铣中:当使用参考刀切削时 切削区域不让生成刀路或刀路不好 则可不用选择切削区域7型腔铣中:切削—STRATEGY—切削区域延伸 毛坯距离 ——当使用时必须挂在坐标上,放可使用型腔铣其他创建方式和平面铣一样1创建操作;     主界面有个更多里面可以选择裁剪起选择方法和平面铣 “选择边界”一样的选择,在生成刀轨时会出现生成刀轨不可靠的报警,在生成时不用管它,直接点击“否”生成刀轨即可2生成刀轨时:把实体缩小 生成刀轨时速度比不缩小时快3使用IPW:切削—包容—生产中的工件—改为使3D注意:最小材料厚度应该为等于或大于上一把刀的余量4:重叠距离:可设可不变,最好设置为0.5~1保证切削完全以免留下多余材料或有接刀痕5:切削—连接 —打开刀路 改成第二个6:如果使用IPW那么就在第一个程序里面的最小材料厚度不可设 第二个生成时 在设数据7:一次性生成多个刀轨:预设置—加工—操作—生成—○1更新所有引用特征○2每一刀路后暂停○3在每一个刀轨前刷新8:型腔铣中刻字 文字深度为0,往下多重切削时用:对象—变换—平移—增量(Z值为-1)多重复制可用,切削多重就复制几刀注意:二次开粗 如果参考上把刀 把切削—包容—里面的“最小材料厚度”改为大于或等于部件侧面余量(切削—余量)                通孔开粗时:为了切削完全 通常要把层往下降一点(刀具的R角即可)                型腔铣开粗,如果刀过大 只能参考上一把刀  个人认为:不能用等高铣开粗,因为等高铣只能沿外型 ,可用与半精或粗加工 不能用于开粗等高轮廓1跟随周边——多用于凸模2跟随工件——多用于凹模3单刀路——用在直面上4圆的——跟随周边——跟随工件5切削——连接——在层之间剖切 其打开时全身加工 恒定0~1 关闭时只铣侧面不铣底面6在层之间切削打开,然后用层控制切削深度,遇到圆角时改小一点,直面时改大点  切削完后会比较光滑,但一定要注意仔细分层 ,不要漏掉7非陡峭轮廓加工时,里面“陡角必须”如果设置上45度则说明45度一下的角不做切削8固定轴   曲域铣削也有陡角必须,如果在里面设置上55度 也就是说 55度以上不做铣削 以上两种方法结合运用效果比较好切削 移除边缘跟踪 √     在边上延伸—看情况定     1如果底平选在切削区域里面时就不用把它选上后刀路会延伸到工件此外等高铣中1》切削—连接——在层之间剖切——就可以铣平面了 也可以用平面铣第二个代替2》如果底面没有选在切削区域里面时 就要把打开因为当切削完圆角后圆角和底面将会出现多余刀痕,把刀路往外延伸一下,把多余刀痕清理掉切削方向:用混合和顺铣多切削顺序:默认深度优先切削——连接——层到层——直接对部件 倾斜于部件移除边缘跟踪——相对于球刀在边上延伸——改为1合并距离加大——减少跳刀通腔 通孔——降层: 为了下面不留余量需要把层往下降 R刀最近降下R角球刀最少降刀的半径进刀时不要竖直下刀以免伤刀最好用螺旋下刀和沿外形 避免伤刀 不要直接下刀慢慢切入工件 降层必须和在边上延伸配合应用,否则只降层刀路不往下降等高铣中——最小切削深度:移除比较短而乱的刀路:例如:填上25后指25MM以下的刀路将会被移除掉混合铣 用的比较多,因为能优化刀路,减少抬刀 更适用于开放的参考刀:也可以参考以前没用过的刀具等高铣在精加工时: 混合铣——用于加工单击某一个面时  单面铣:多用于一周全加工时切削——连接 步进   球刀:恒定0.1~0.5用的最多  平角:等于或小于刀的半径 最大横向切削:超过设置距离就会跳刀,一般默认25.4 进给率——进给:第一刀切削时要改小,为了是怕多余毛坯 ,要慢慢切入步进改为50~100避免每次进刀时伤刀 切削——移除边缘跟踪:只有球刀有用,当在清理顶部圆角时,让它延伸出来,所清理出来的圆角比较好等高精加工时:  1过切法,为了不留余量用 ф9.95的刀编程 ○1单边过切0.025MM○2双边过切0.05     让其过切2在边上延伸:在需要时延伸 一般延伸0.3~0.8为了切削完全3在多个刀路:部件余量偏置相当于偏置刀路,例:每刀切削1MM把部件余量偏置为5就相当与刀路偏上来5刀这种偏置多用与刻字4:更多:应用于步距       优化轨迹5切削——毛坯 工件内公差0.01               部件外公差0.01                         边界内公差0.01               边界外公差0.016其他     ○1用户定义角度:以45度为好,也可以随便定     ○2应用在平面上缺点的互补方法:        1可以用45度+90度的方法指定角度来铣原来的缺陷        2 用等高铣生成刀路,把生成的刀路进行裁剪来互补        3 用层控制7区域铣削: 向内向外控制好腔类用跟随周边比较好                   固定轴一:区域铣削:其选择方法1创建坐标2把部件选好 毛坯选好3所创建工步里面的毛坯不用选只需选择所要加工的区域4应用在部件上5向内向外用好非陡峭角度:等高固定轴应用在平面上:是指从平面上向下投影,生成刀轨,这种生成方式要比应用在部件生成刀轨快,但只适用于比较平坦的加工区域应用在部件上:适用于腔类比较深角度比较大的工件,相对应用在平面上还算比较慢,但加工效果比较好 一般采用比较多切削区域起点:可以跟随定义切削区域起点切削○1移除边缘跟踪:如果铣刀加工就相当于球刀的半径距离没有刀路,因为球刀在加工时用的是圆弧而不是刀尖,如果不移除边缘跟踪,那么计算刀路时就会从刀尖算起,刀尖到刀弧距离跑的是空刀 所以要把它移除掉 计算刀路时会以刀弧算起二 螺旋 螺旋驱动:比较适合于圆形1 螺旋中心点的选择(可以选择坐标原点或其它)2步进的设定3最大螺旋半径:可设定为工件提的最大半径注意:所有加工时都要注意的一个问题,飞刀在开粗时,中间没有刀片,中间材料会顶住刀的中心,无法进行切削所以我们要把捎大于直径的孔给封住,不要去开粗,等把所有能开粗的区域开完后,再用小刀来开孔(小立铣刀中间有刀刃  ф14以下的刀具一般没有R角  当刀路出现警告时——打开非切削——打开横跃——把干涉检查改为:AVOID(退刀)1用平刀铣圆弧面时,铣出的工件表面会出现残余波峰高度,那么就需要用同样大小的球刀来参考同样直径的平刀来铣削,其目的是为了更完美的切削,或让余量更均匀的作精加工2ф16以上的刀是由刀粒组成 中间没有刀刃,所以在加工时要考虑刀的中心和工件的顶撞(避免活动空间大小)3固定轴——驱动方式——切削区域——选项——切削区域起点——控制——选择——随便选点4用平刀精加工时,用层来控制,拟合R角5精加工时,不用必须等拐角的刀去清壁,可以直接用大刀清壁,最后再用等高铣参考上一把刀,把圆角清掉,同时可以把底面精加工6用相同直径的球刀参考相同直径的平刀 打开刀路 参考刀具 三 边界  边界驱动方式1内公差2外公差3边界余量(填刀具半径向外延伸刀路  工件包容:一般默认关  附加刀路:当使用轮廓时附加刀路有用切削角度 45度 随意定  X Y 轴都受力轮廓铣削方式:当边界为封闭时,附加刀路用于清根或清壁铣流道:边界方式为打开, 在多重深度切削里面附加刀路其选择方法:1几何体里面的:部件和毛坯不用选择2所创建工步里面的部件需要选择注意:单刀铣流道时,(曲面)刀具过小会出现一个警告,负工件的绝对值必须小于刀具的底面半径,生成的刀轨将不可靠的警告,出现这样的警告,应该这样处理,1把刀具加大让其生成刀具路径2在加工时把刀具换成想要的刀具四曲面区域(适用于清根 圆角)其选择方法1坐标2部件和毛坯不用作任何选择3可以把创建的工部直接挂在坐标下面4所建工部里面的部件也不作任何选择5驱动几何体可以选择面6切削方向和材料向要注意7图样○1成圆或成一周用跟随周边○2单一的面用单一切削方式8刀路多与少○1残余波峰高度的大小○2数字步数的多少 驱动方式:切削方向 材料侧反向   试用   切削步长:同等于公差 内公差0.01  外公差0.01 步进——残余波峰高度            残余波峰高度 水平限制              =步进距离      竖直极限       投影1竖直面在投影时只生成单一刀路 所以说投影对竖直面无效    2把部件去掉不投影 几何体 毛坯  工件同时选上无效 步进——数字——跟随周边  第一个100第二个100 随便定曲面区域的选择1可以把边缘线投影到某一个平面,然后把投影曲线形成片体2在选择面时,可以直接选择片体3用投影的方式来加工面4可以省去选择曲面时的麻烦   切削步长 第一刀切削 第二刀切削 改为公差五 径向切削(适合清根圆角) 径向切削:相当于加工面的法向切削 两种创建方式1坐标2部件毛坯选好3所创建工步不用动4直接选择所要加工面的边界5材料侧和另一侧设置好(-0.5~1~2)根据刀而定        1坐标2部件不用选毛坯不用选3所创建工步里面把部件选上4选择加工所需要的边界封闭或打开 材料侧 与   另一侧       根据情况试填驱动路径    封闭:适合双刀    打开:单刀    最适合于清根切削步长   第一刀切削   最后一刀切削 改为公差FLOW  CUT参考刀偏置   1输入步进距离2输入参考刀的直径3输入重叠距离 注意: 由外向内   跟 由外向内变化当使用多个偏置时1坐标2部件毛坯不用选3所创建工步里面的部件选上4再选择切削区域FLOW CUT 1选择一把刀根据圆弧半径的大小来确定刀的大小 2切削区域 可单选      可框选 (框选比较好) 3切削方向:第一个切削方向——图标——混合           第二个切削方向——汉字——混合 最小切削长度——输入数字20小于20的刀路移除 由外向内                                  连接距离=合并距离 由外向内的变化偏置数:5刀代表单刀偏置5D 双刀偏置10D最大凹腔=179度    因为180度系统不识别单刀:所生成的刀路就一刀用参考刀比较好多, “多偏置”参考刀偏置 参考刀直径所偏置几刀清竖直的角时:不能直插,最好用等于参考刀的方式来清角 其选择方法:1坐标2不见选好毛坯选好3选好切削区域4单路——单独—— 参考偏置多个偏置——1输入步进距离2输入所需要偏置的刀数 如 10刀除2=每边5刀七曲线和点适合电极用1部件余量可输入负数2作一个螺旋线——选择线——选上边的箭头3切削步长公差4几何类型为曲线5驱动路径,不能偏置 ,只能沿螺旋 适合铣螺纹 不能偏置 部件余量  多重深度切削  填上无效6局部抬刀直至结束  必须在操作之间打上√ 注:1最好不选择毛坯    2刀路将按照所选的先后顺序来生成刀路    3 选择模拟的时候 可选择来自组件的偏置    4 如果用小刀生刀路出现警告或刀路不好看,可用打刀生刀路 ,才用小刀加工的方法来加工    5 选点的时候(局部抬刀直至结束)不用打√选上它不认相对于圆面的加工方法1第一把刀用R刀开粗2第二把刀用小刀参考上一把刀开粗3第三把刀用和上一把刀同样直径的球刀参考 第二把刀要把余量留均匀以便精光4第四把刀 用球刀进行精光(测量圆角来决定球刀的大小)文本1插入——注释文本——写字2可以选择曲线,还可以选择文本3出现一个报警 点击否不停止4部件余量:负数5刀随文字线走,用文字把刀平分6如果不是文本 就用“曲线驱动”局部抬刀直至结束 注意打上√在选   不能先选择在打√选上它后 ,所生成的刀路,在第一条和第二条线之间就会分离不会生成刀路 切削步长改为公差切削:余量里的部件余量为负数多个刀路里面的部件余量偏置为正数刻反字:A、把写的字用变换反转180度 注:切削——注释——(编辑字符)——注释编辑器——(chinese+关闭)——原点工具——(点构造器)——选择要刻的字)B、在另一面写字,然后从另一面选择字体加工,自动投影为反字进行加工即可,非切削分离:向上移动为正数 向下移动为负数 均以坐标原点为准分离状态:1也可以用手工和间隙来给它设定一个距离  方向为刀轴输入 一个距离2最常用的是改为“无”让它切削完成后直接退刀 横越:干涉检查改成:AVOID 退刀的意思 逼近:逼近状态——用于手工和间隙来控制(通过试验 不能输入负数按加工面来)进刀:移动——线性 给它一个进刀距离(5~10)退刀:设为“无”切削完成后直接退刀即可注意:调动了非切削里面的数据后,再要复制下一个程序, 在应用时,应注意逼近的下刀线 有可能会出现反向下刀(由下向上进刀) 逼近 输入负数是向下 输入正数是向上 它是由坐标来定的 模板设置1几何视图:首先创建坐标MCS—1           在创建毛坯WORKPIECE           在创建切削区域MILL—AREA—1           按顺序挂好,在分别创建2.3.4.按顺序挂好2刀具视图:把刀具创建好,刀名T25R08—1 调整记录器为1 刀具号为1       以上分别创建常用刀具一备用3.编程视图:创建工步 把工步改成刀具名    1 开粗2参考3半精4精加工5打孔6镗孔      按顺序放在NONE—坐标—毛坯—切削区域—工步打开4加工方法视图 1把开粗的余量设好,把开粗的工步放在下面 2把半精加工的余量设好,把半精的工步放在下面 3把精加工的余量设好,公差设好,并把精加工的工件挂在下面以上4个视图里面   谁应该挂在谁身上一定要看好把前面所设的东西保存一下,然后另存为UGS所在的盘 C盘——PROGRAM——FILES——UGS——.NX3.0——MACH——RESURCE——TEMPLATE——PART——METVIC——然后给这个文件起个名(MMM)——OK保存——把UG3最小化然后——在从桌面上打开我的电脑——UG3所在的磁盘——PROGRAMFILES——UGS——NX3.0——MACH——RESORCE——TEMPLATE——SET(PART下面)——MILL——CONTOUR然后把下面的第二行复制一个放在最下面,然后把MILL——CONTOUR(小数点以前的) 改所起的文件名(MMM)保存一下,把UG3关掉,重新启动一个新的UG3 在进入加工初始化时点(mmm)上即可进入所设置好的模板内注:如果初始化时没有所设置的模板,那么就点击加工环境里面的浏览,找到所设置的模板名字(mmm)然后点击初始化进入加工环境,然后创建操作就会出现所设置的模板程序从浏览——UG3.0所在磁盘)Program——UGS——NX3.0——MACH—resource—template——Pare——metriv——所建文件(mmm)——点击OK即可 给文件起的名字(MMM)尽量和其他的(mmm)一样电极材料1石墨2铜火花间隙:最低1mm 所做的电极与不相当的地方中间需要有1 mm的间隙,以免伤及无辜 腔类做电极较多  一刀切1所做电极一般较小        2材料比较软               1跟2 一刀就能切 无须多余刀路减余量:因为在打电火花 有一个放电间隙,所以所做的电极要比工件的原尺寸单边小5~10 丝 这样提前预算出 防止打完后电火花后工件尺寸过大加工电极时让其过切1切削余量设置为负数,这样方法产生的刀路有缺陷,可能会出现有乱刀路2比如用ф5.8的刀编程,用ф6.0的刀来加工这样 单边就会减10《效果会比较好!电极找正:因为有些电极是圆形或近似圆形,无法找正,给它做一个电极座 让其找正电极定位:想办法找出确定的定位方法装后处理Postprocessor把有放在磁盘的后处理(Postprocessor)打开里面的文件全部复制到:装有UG3的盘(C盘)—UG3.0——NX3.0——MACH——resource—Postprocessor 把里面的删除 然后把后处理的文件粘贴上,然后关掉,在到UG3.0加工环境里面打开后处理即可一般是作完1个刀路后处理一次FANCE18m  也可以通过以上路径直接拷上 ,如果是自己换刀也可以创建后处理程序1首先把创建的程序全部选上——点击后处理——一般选择(自动后处理或FANCE18m)——选择——(输出文件名或浏览)——的一个填上(X)盘——确定然后到我的电脑——所在的盘即可找出注: 如果选用西门子:需要在常温的环境下用                    如果选用自动后处理就不用删除2找出以后双击打开——把第一个程序删除即可,程序生成后,找工件所在的位置(X)盘——在即记事本中打开3次开粗1预设置——加工——配置——启动基于层的IPW前面打√当用3D和基于层好用2切削——包容——裁剪——使用“轮廓线”这样在铣有竖直面时就不会出现乱刀路3生产中的工件——是由基于层4自动——最小斜面长度——刀具直径的65%以上5最小材料厚度:例如:填上0.1就相当于小于0.1余量的地方不生成刀路6采用参考刀的方式,无须建立毛坯7方法——最小:是指在不设定安全平面的情况下有用  设置了安全平面后 最小就失去了作用8下刀点:可以设置多个点,比如2个或2个以上9下刀方式:用螺旋下刀的方法比较多10直线下刀的直线实际是斜线下刀11没开粗 用轮廓的方式多12加工有余量5CM的铸造件时 图样用跟随周边的方式,把切削里面的毛坯距离 ,向外延伸5CM 这样生成的刀路 比其他就要好的多常用G代码 G代码命令 代码组及其含义“模态代码” 和 “一般” 代码“形式代码” 的功能在它被执行后会继续维持,而 “一般代码” 仅仅在收到该命令时起作用。定义移动的代码通常是“模态代码”,像直线、圆弧和循环代码。反之,像原点返回代码就叫“一般代码”。每一个代码都归属其各自的代码组。在“模态代码”里,当前的代码会被加载的同组代码替换。G代码 组别解释 G00 快速定位 (快速移动) G01 直线切削 G02 顺时针切圆弧 G03 逆时针切圆弧 G04 暂停 G17 XY 面赋值 G18 XZ 面赋值 G19 YZ 面赋值 G28 机床返回原点 G30 机床返回第2和第3原点*G40 取消刀具直径偏移 G41 刀具直径左偏移 G42 刀具直径右偏移*G43 刀具长度 + 方向偏移*G44 刀具长度 - 方向偏移 G49 取消刀具长度偏移*G53 机床坐标系选择 G54 工件坐标系1选择 G55 工件坐标系2选择 G56 工件坐标系3选择 G57 工件坐标系4选择 G58 工件坐标系5选择 G59 工件坐标系6选择 G73 高速深孔钻削循环 G74 左螺旋切削循环 G76 精镗孔循环*G80 取消固定循环 G81 中心钻循环 G82 反镗孔循环 G83 深孔钻削循环G84 右螺旋切削循环 G85 镗孔循环 G86 镗孔循环 G87 反向镗孔循环 G88 镗孔循环 G89 镗孔循环*G90 使用绝对值命令 G91 使用增量值命令 G92 设置工件坐标系*G98 固定循环返回起始点*G99 返回固定循环R点 代码解释 G00 定位 1. 格式G00 X_ Y_ Z_ 这个命令把刀具从当前位置移动到命令指定的位置 (在绝对坐标方式下), 或者移动到某个距离处 (在增量坐标方式下)。 2. 非直线切削形式的定位我们的定义是:采用独立的快速移动速率来决定每一个轴的位置。刀具路径不是直线,根据到达的顺序,机器轴依次停止在命令指定的位置。 3. 直线定位刀具路径类似直线切削(G01) 那样,以最短的时间(不超过每一个轴快速移动速率)定位于要求的位置。 4. 举例N10 G0 X100 Y100 Z65 G01 直线切削进程 1. 格式G01 X_ Y_ Z_F_ 这个命令将刀具以直线形式按F代码指定的速率从它的当前位置移动到命令要求的位置。对于省略的坐标轴,不执行移动操作;而只有指定轴执行直线移动。位移速率是由命令中指定的轴的速率的复合速率。 2. 举例G01 G90 X50. F100;或G01 G91 X30. F100;G01 G90 X50. Y30. F100;或G01 G91 X30. Y15. Z0 F100;G01 G90 X50. Y30. Z15. F100; G02/G03G17/G18/G19 圆弧切削 (G02/G03, G17/G18/G19) 1. 格式圆弧在 XY 面上G17 G02 ( G03 ) G90 ( G91 ) X_ Y_ F_;或G17 G02 ( G03 ) G90 ( G91 ) I_ J_ F_;或G17 G02 ( G03 ) G90 ( G91 ) R_ F_;圆弧在 XZ 面上G18 G02 ( G03 ) G90 ( G91 ) X_ Z_ F_;或G18 G02 ( G03 ) G90 ( G91 ) I_ K_ F_;或G18 G02 ( G03 ) G90 ( G91 ) R_ F_; 圆弧在 YZ 面上G19 G02 ( G03 ) G90 ( G91 ) Y_ Z_ F_;或G19 G02 ( G03 ) G90 ( G91 ) J_ K_ F_;或G19 G02 ( G03 ) G90 ( G91 ) R_ F_; 圆弧所在的平面用G17, G18 和G19命令来指定。但是,只要已经在先前的程序块里定义了这些命令,也能够省略。圆弧的回转方向像下图表示那样,由 G02/G03来指定。在圆弧回转方向指定后,指派切削终点坐标。 G90 是指定在绝对坐标方式下使用此命令;而 G91 是在指定在增量坐标方式下使用此命令。另外,如果G90/G91已经在先前程序块里给出过,可以省略。圆弧的终点用包含在命令施加的平面里的两个轴的坐标值指定 ( 例如,在 XY平面里,G17用 X, Y 坐标值 ) 。 终点坐标能够像 G00 和 G01 命令一样地设置。圆弧中心的位置或者其半径应当在设定圆弧终点之后设置。圆弧中心设置为从圆弧起点的相对距离,并且对应于 X,Y 和Z 轴表示为 I, J 和 K。圆弧起点坐标值减去圆弧中心对应的坐标值得到的结果对应分配给 I、J、K。 2. 举例  圆弧起点的 X 坐标值 ------------ 30.圆弧中心的 X 坐标值 ------------ 10.因此,“I” 就是 20. (10 - 30 = 20)圆弧起点的 Y 坐标值 ------------ 10.圆弧中心的 Y 坐标值 ------------ 5.因此,“J” 就是 5. (10 – 5 = 5) 结果,这个情况下圆弧命令如下所列: G17 G03 G90 X5. Y25. I-20. J-5.;或者,G17 G03 G91 X-25. Y15. I-20. J-5.; 因为圆弧半径通常是已给了的,也能够用圆弧半径给命令赋值。 在已给的例子里,圆弧半径是 20.616。因此,该命令能够如下表示:G17 G03 G90 X5. Y25. R20.616.;或者,G17 G03 G91 X-25. Y15. R20.616; 注意 1) 把圆弧中心设置为 “I”, “J” 和 “K”时,必须设置为圆弧起点到圆弧中心的增量值 (增量命令).注意 2) 命令里的“I0”, “J0” 和 “K0” 可以省略。偏移值指定要求。 G28/G30 自动原点返回 (G28, G30) 1. 格式第一原点返回:G28 G90 ( G91 ) X_Y_Z_;第二、三和四原点返回:G30 G90 ( G91 ) P2 ( P3, P4 ) X_Y_Z_;#P2, P3, P4: 选择第二、第三和第四原点返回( 如果被省略,系统自动选择第二原点返回 ) 由 X, Y 和 Z 设定的位置叫做中间点。机床先移动到这个点,而后回归原点。省略了中间点的轴不移动;只有在命令里指派了中间点的轴执行其原点返回命令。在执行原点返回命令时,每一个轴是独立执行的,这就像快速移动命令(G00)一样; 通常刀具路径不是直线。因此,要求对每一个轴设置中间点,以免机床在原点返回时与工件碰撞等意外发生。 2. 举例 G28 (G30) G90 X150. Y200.;或者,G28 (G30) G91 X100. Y150.; 注意:在所给例子里, 去中间点的移动就像下面的快速移动命令一样。 G00 G90 X150. Y200.;或者G00 G91 X100. Y150.;如果中介点与当前的刀具位置一致(例如,发出的命令是 - G28 G91 X0 Y0 Z0;),机床就从其当前位置返回原点。如果是在单程序块方式下运行,机床就会停在中间点;当中间点与当前位置一致,它也会暂时停在中间点(即,当前位置)。 G40/G41/G42 刀具直径偏置功能 (G40/G41/G42) 1. 格式G41 X_ Y_;G42 X_ Y_;当处理工件 (“A”) 时,就像下图所示,刀具路径 (“B”) 是基本路径,与工件 (“A”)的距离至少为该刀具直径的一半。此处,路径 “B” 叫做由 A 经 R 补偿的路径。因此,刀具直径偏置功能自动地由编程给出的路径 A以及由分开设置的刀具偏置值,计算出补偿了的路径B。就是说,用户能够根据工件形状编制加工程序,同时不必考虑刀具直径。 因此,在真正切削之前把刀具直径指派为刀具偏置值;用户能够获得精确的切削结果,就是因为系统本身计算了精确的补偿了的路径。 在编程时用户只要插入偏置向量的方向 (举例说, G41:左侧, G42: 右侧)和偏置内存地址 (例如, D2: 在“D” 后面是从 01 到 32的两位数字)。所以用户只要输入偏移内存号码 D (根据 MDI),只不 过是由精确计算刀具直径得出的半径。 2. 偏置功能G40: 取消刀具直径偏置G41: 偏置在刀具行进方向的左侧G42: 偏置在刀具行进方向的右侧  G43/G44/G49 刀具长度偏置 (G43/G44/G49) 1. 格式G43 Z_ H_;G44 Z_ H_;G49 Z_;2. 偏置功能首先用一把铣刀作为基准刀,并且利用工件坐标系的 Z 轴,把它定位在工件表面上,其位置设置为 Z0。 (? 见 G92:坐标系设置)请记住,如果程序所用的刀具较短,那么在加工时刀具不可能接触到工件,即便机床移动到位置 Z0。反之,如果刀具比基准刀具长,有可能引起与工件碰撞损坏机床。 为了防止出现这种情况,把每一把刀具与基准刀具的相对长度差输入到刀具偏置内存,并且在程序里让 NC 机床执行刀具长度偏置功能。 G43: 把指定的刀具偏置值加到命令的 Z 坐标值上。G44: 把指定的刀具偏置值从命令的 Z 坐标值上减去。G49: 取消刀具偏置值。 在设置偏置的长度时,使用正/负号。如果改变了 (+/-) 符号, G43 和 G44 在执行时会反向操作。因此,该命令有各种不同的表达方式。举例说: 首先,遵循下列步骤度量刀具长度。1.把工件放在工作台面上。2.调整基准刀具轴线,使它接近工件表面上。3.更换上要度量的刀具;把该刀具的前端调整到工件表面上。4.此时 Z 轴的相对坐标系的坐标作为刀具偏置值输入内存。通过这么操作,如果刀具短于基准刀具时偏置值被设置为负值;如果长于基准刀具则为正值。因此,在编程时仅有 G43 命令允许您做刀具长度偏置。 3. 举例 G00 ZO;G00 G43 Z0 H01;G00 G43 Z0 H03;或者G00 G44 Z0 H02;或者G00 G44 Z0 H02; G43, G44 或 G49 命令一旦被发出,它们的功效会保持着,因为它们是 “模态命令”。因此, G43 或 G44 命令在程序里紧跟在刀具更换之后一旦被发出;那么 G49 命令可能在该刀具作业结束,更换刀具之前发出。 注意 1) 在用 G43 (G44) H 或者用 G 49 命令的指派来省略 Z 轴移动命令时,, 偏置操作就会像 G00 G91 Z0 命令指派的那样执行。也就是说,用户应当时常小心谨慎,因为它就像有刀具长度偏置值那样移动。注意 2) 用户除了能够用 G49 命令来取消刀具长度补偿,还能够用偏置号码 H0 的设置(G43/G44 H0) 来获得同样效果。注意 3) 若在刀具长度补偿期间修改偏置号码,先前设置的偏置值会被新近赋予的偏置值替换。标系就被取消。以上命令也能够用于取消局部坐标系。 注意 (1) 当用户执行手动原点返回时,局部坐标系执行原点返回的轴的原点与工件坐标系就等同了。也就是说,这个操作与 [G52a0;] 命令一样 (a: 是执行原点返回进程的那个轴)。注意 (2) 即便已经设置了局部坐标,工件坐标系或者机床坐标系不会被改变。注意 (3) 工件坐标系是用 G92 命令设置的。如果各个坐标值未设置, 局部坐标系里未给坐标值的轴将被设置成先前各轴一样的值。注意 (4) 在刀具直径偏置方式下,用 G52 命令来暂时取消该偏置功能。注意 (5) 当移动命令紧跟在 G52 程序块功能之后发出时,通常必须采用绝对命令。 G53 选择机床坐标系 (G53) 1. 格式( G90 ) G53 X_ Y_ Z_; 2. 功能刀具根据这个命令执行快速移动到机床坐标系里的 X_Y_Z 位置。由于 G53 是 “一般” G 代码命令,仅仅在程序块里有 G53 命令的地方起作用。此外,它在绝对命令 (G90) 里有效,在增量命令里 (G91) 无效。为了把刀具移动到机床固有的位置,像换刀位置,程序应当用 G53 命令在机床坐标系里开发。 注意 (1) 刀具直径偏置、刀具长度偏置和刀具位置偏置应当在它的 G53 命令指派之前提前取消。否则,机床将依照指派的偏置值移动。注意 (2) 在执行G53指令之前,必须手动或者用G28 命令让机床返回原点。这是因为机床坐标系必须在G53命令发出之前设定。  G54-G59 工件坐标系选择(G54-G59) 1. 格式G54 X_ Y_ Z_; 2. 功能 通过使用 G54 – G59 命令,来将机床坐标系的一个任意点 (工件原点偏移值) 赋予 1221 – 1226 的参数,并设置工件坐标系(1-6)。该参数与 G 代码要相对应如下:工件坐标系 1 (G54) ---工件原点返回偏移值---参数 1221工件坐标系 2 (G55) ---工件原点返回偏移值---参数 1222工件坐标系 3 (G56) ---工件原点返回偏移值---参数 1223工件坐标系 4 (G57) ---工件原点返回偏移值---参数 1224工件坐标系 5 (G58) ---工件原点返回偏移值---参数 1225工件坐标系 6 (G59) ---工件原点返回偏移值---参数 1226 在接通电源和完成了原点返回后,系统自动选择工件坐标系 1 (G54) 。在有 “模态”命令对这些坐标做出改变之前,它们将保持其有效性。除了这些设置步骤外,系统中还有一参数可立刻变更G54~G59 的参数。工件外部的原点偏置值能够用 1220 号参数来传递。  G73 高速啄式深孔钻循环(G73) 1. 格式G73 X__Y__Z__R__Q__P__F__K__ X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离Q_:每次切削进给的切削深度P_:暂停时间F_:切削进给速度K_:重复次数 2. 功能进给 孔底 快速退刀。 G74 攻左牙循环(G74)  1. 格式G74 X__Y__Z__R__Q__P__F__K__ X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离Q_:每次切削进给的切削深度P_:暂停时间F_:切削进给速度K_:重复次数 2. 功能进给 孔底 主轴暂停 正转 快速退刀。 G76 精镗孔循环(G76) 1. 格式G76 X__Y__Z__R__Q__P__F__K__ X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离Q_:每次切削进给的切削深度P_:暂停时间F_:切削进给速度K_:重复次数 2. 功能进给 孔底 主轴定位停止 快速退刀。 G 80 取消固定循环进程 (G80) 1. 格式G80; 2. 功能这个命令取消固定循环方式,机床回到执行正常操作状态。孔的加工数据,包括 R 点, Z 点等等,都被取消;但是移动速率命令会继续有效。 (注) 要取消固定循环方式,用户除了发出G80 命令之外,还能够用 G 代码 01 组 (G00, G01, G02, G03 等等) 中的任意一个命令。 G 81 定点钻孔循环(G81) 1. 格式G81 X_Y_Z_R_F_K_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离F_:切削进给速度K_:重复次数 2. 功能 G81 命令可用于一般的孔加工。 G 82 钻孔循环(G82) 1. 格式G82 X_Y_Z_R_P_F_K_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离P_:在孔底的暂停时间F_:切削进给速度K_:重复次数 2. 功能 G82 钻孔循环,反镗孔循环 G83 排屑钻空循环(G83) 1. 格式G83 X_Y_Z_R_Q_F_K_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离Q_:每次切削进给的切削深度 F_:切削进给速度K_:重复次数 2. 功能 G83 中间进给 孔底 快速退刀。 G84 攻牙循环(G84) 1. 格式G84 X_Y_Z_R_P_F_K_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离P_:暂停时间 F_:切削进给速度K_:重复次数 2. 功能 G84 进给 孔底 主轴反转 快速退刀。 G85 镗孔循环(G85) 1. 格式G85 X_Y_Z_R_F_K_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离F_:切削进给速度K_:重复次数 2. 功能 G85 中间进给 孔底 快速退刀。 G86 定点钻孔循环(G86) 1. 格式G86 X_Y_Z_R_F_L_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离F_:切削进给速度K_:重复次数 2. 功能 G86 进给 孔底 主轴停止 快速退刀。 G87 反镗孔循环(G81) 1. 格式G87 X_Y_Z_R_Q_P_F_L_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离Q_:刀具偏移量P_:暂停时间F_:切削进给速度K_:重复次数 2. 功能 G87 进给 孔底 主轴正转 快速退刀。  G88 定点钻孔循环(G88) 1. 格式G88 X_Y_Z_R_P_F_L_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离P_:孔底的暂停时间F_:切削进给速度K_:重复次数 2. 功能 G88 进给 孔底 暂停, 主轴停止 快速退刀。G89 镗孔循环(G89) 1. 格式G89 X_Y_Z_R_P_F_L_;X_ Y:孔位数据Z_:从R点到孔底的距离R_:从初始位置到R点的距离P_:孔底的停刀时间F_:切削进给速度K_:重复次数 2. 功能 G89 进给 孔底 暂停 快速退刀。G90/G91 绝对命令/增量命令 (G90/G91)此命令设定指令中的 X, Y 和 Z 坐标是绝对值还是相对值,不论它们原来是绝对命令还是增量命令。含有 G90 命令的程序块和在它以后的程序块都由绝对命令赋值; 而带 G91 命令及其后的程序块都用增量命令赋值。 常用M代码 辅助功能 代码及其含义辅助功能包括各种支持机床操作的功能,像主轴的启停、程序停止和切削液节门开关等等。M代码 说明M00 程序停止 M01 选择停止M02 程序结束(复位)M03 主轴正转 (CW)M04 主轴反转 (CCW)M05 主轴停止M06 换刀M08 切削液开M09 切削液关M16 刀具入刀座M28 刀座返回原点M30 程序结束(复位) 并回到开头M48 主轴过载取消 不起作用M49 主轴过载取消 起作用M60 APC 循环开始M80 分度台正转(CW)M81 分度台反转 (CCW)M98 子程序调用M99 子程序结束 坐标系统 编程坐标系采用右手坐标系统。在加工期间,由于机床对工件做反向运动,坐标系统通常被改变。 坐标系统1. 机床坐标系统这个坐标系统用一个固定的机床的点作为其原点。在执行返回原点操作时,机床移动到此机床原点。 2. 绝对坐标系统用户能够可建立此坐标系统。它的原点可以设置在任意位置,而它的原点以机床坐标值显示。 3. 相对坐标系统这个坐标系统把当前的机床位置当作原点,在此需要以相对值指定机床位置时使用。 4. 剩余移动距离此功能不属于坐标系。它仅仅显示移动命令发出后目的位置与当前机床位置之间的距离。仅当各个轴的剩余距离都为 零 时,这个移动命令才完成。 刀具加工参数表 材质---------------直径名称铝件钢件紫铜 转速  进给 转速 进给 转速 进给 25平刀S 1600F 1800S 1800F S 1600F 1800 20平刀S 1800F 1800S 1750F 1800S 1700F 1800 16平刀S 1600F 2000S 1600F 1800S 1800F 180012平刀S 2000F 2000S 1800F 2000S 2200F 2000 10平刀S 2200F 1800S 2200F 1800S 2000F 20008平刀S 2400F 1600S 2400F 1800S 2000F 2000 6平刀S 2500F 1600S 2500F 1600S 2200F 1800     4平刀S 2500F 1200S 2500F 1500S 2500F 1600     2平刀S 3000F 1000S 3500F 1000S 3200F 8001平刀S 3500F 400S 3500F 400S 3500F 5000.8平刀S 3800F 200S 4000F 200S 3500F 5球刀S 2000F 1800S 2000F 2200S 1800F 190020球刀S 2000F 1800S 2200F 2000S 2000F 190016球刀S 2200F 2000S 2200F 2000S 2000F 200012球刀S 2300F 1600S 2400F 1800S 2000F 180010球刀S 2500F 1600S 2500F 1600S 2500F 18008球刀S 2500F 1500S 2500F 1500S 2800F 1500     6球刀S 2600F 1200S 2600F 1200S 2600F 13004球刀S 2800F 800S 2800F 800S 2800F 8003球刀S 3000F 800S 3000F 800S 3000F 800     2球刀S 3200F 600S 3200F 600S 3000F 8001球刀S 3500F 300S 3500F 250S 3500F 3000.8球刀S 3500F 200S 3500F 200S 3500F 200精刀转速加快20%,按此加工即可。

篇2:SDK编程笔记UNICODE篇

Petzold的Programming Windows的第2章非常详细的讲解了关于Unicode的方方面面,我们需要知道的是它给C语言和Windows编程带来的变化。

·C语言相关

对应于char , C语言中也有宽字符内型wchar_t 。wchar_t被定义为: typedef unsigned short wchar_t ; 显然它是16位的。wchar_t类型的常字串应该这样写: L“hello” 。因此可以这样定义一个宽字符指针 wchar_t *pwc=L“hello”; 。

对于字符串函数, C语言中也有两个版本。如对应于strlen 有wcslen ,wprintf 是printf 的宽字符版。当然这两个版本的函数使用各自类型的参数,原因是显然的,char和unsigned short 怎么能等同呢?编译器是不会放过你的。

下表是对char,wchar_t相关内容的比较:

(测试环境:VC++6.0) char类型 wchar_t类型

类型大小(32位系统) 8位 16位

常量字符表示法 'A' L'A' 或 'A'

常量字符串表示法 'hello' L'hello'

一些使用方法 char c='A'; (c的值:0x41) wchar_t wc='A'; (wc的值:0x0041)

char* p='hello'; wchar_t* pw=L“hello”;

sizeof sizeof(“hello”)=6 sizeof(L“hello”)=12

计算长度 strlen(“hello”)=5 wcslen(L“hello)=5

既然有两个版本的函数,如果我们想在程序中同时支持它们该怎么办?如果使用VC++,你只要在程序中包含tchar.h头文件,这个文件中提供了一些宏以兼容两种字符集。例如:

#ifdef _UNICODE

typedef wchar_t _TCHAR;

typedef wchar_t TCHAR;

#define __T(x) L ## x

#define _tprintf wprintf

#define _tcslen wcslen

......

#else

typedef char _TCHAR;

typedef char TCHAR;

#define __T(x) x

#define _tprintf printf

#define _tcslen strlen

......

#endif

#define _T(x) __T(x)

#define _TEXT(x) __T(x)

我们只要使用TCHAR,_tpirntf,_tcslen,_TEXT等,就可以兼顾两种字符集,

·Windows相关

Windows2000/NT完全支持Unicode,Windows98对Unicode支持很少。我们关心的是怎样编写程序,既可以编译为不支持Unicode,又可编译为支持Unicode。Windows SDK的头文件中定义了一些宏以完成这个任务。

typedef char CHAR ;

typedef wchar_t WCHAR ; // wc

typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;

typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;

typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;

typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;

和标准C一样,windows C也使用TCHAR作为兼容的类型

#ifdef UNICODE

typedef WCHAR TCHAR, * PTCHAR ;

typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;

typedef LPCWSTR LPCTSTR ;

#define __TEXT(quote) L##quote

#else

typedef char TCHAR, * PTCHAR ;

typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;

typedef LPCSTR LPCTSTR ;

#define __TEXT(quote) quote

#endif

另外还有一个TEXT宏,等价于__TEXT宏:#define TEXT(quote) __TEXT(quote) 。

写Win32 SDK程序的时候常常在注册窗口类时使用如下代码:

if (!RegisterClass (&wndclass)) {

MessageBox ( NULL, TEXT (”This program requires Winodws 2000/NT“), szAppName,MB_ICONERROR) ;

return 0 ;

}

这样,当在Windows98下运行使用了Unicode的程序时,程序可以给出提示并退出。这段代码为什么在Win98下可以运行?因为 MessageBox在存在Unicode的定义下,被替换为MessageBoxW,而MessageBoxW是Win98支持的少数宽字符 Windows函数之一。

总之,写Windows SDK程序时尽可能使用像TCHAR ,PTSTR ,LPCTSTR ,TEXT 这样的宏。

篇3:Lua面向对象编程学习笔记

这篇文章主要介绍了Lua面向对象编程学习笔记,本文讲解了Lua中实现类的例子、类之间继承的例子等内容,需要的朋友可以参考下

其实 Lua 中的 table 是一种对象,因为它跟对象一样,有其自己的操作方法:

代码如下:

Role = { hp = 100 }

function Role.addHp(hp)

Role.hp = Role.hp + hp

end

Role.addHp(50)

print(Role.hp)

上面代码创建了一个名为 Role 对象,并有一个 addHp 的方法,执行 ”Role.addHp“ 便可调用 addHp 方法,

不过上面对象 Role 是以全局变量的方式创建,会有一种“全局污染”的威胁,即变量 Role 在其他地方被重新赋值(例如被赋成 nil),对象里的属性或方法可能会面临被销毁或不能正常工作的情况。

对于这种问题,Lua 提供一种“接受者”的解决方法,即额外添加一个参数 self 来表示对象本身:

代码如下:

Role = { hp = 100 }

function Role.addHP(self, hp)

self.hp = self.hp + hp

end

r = Role

r.addHP(r, 50)

print(r.hp)

这样就不怕对象 Role 被“全局污染”,因为构造了一个子对象 r,并以参数的方式传入,以供其方法调用操作。

对于这种把对象本身以参数的方式传入对象方法里的写法,Lua 提供了一种更优雅的写法,把点号(.)替换为冒号(:),这样在方法定义或调用时,便可隐藏 self 参数。修改如下:

代码如下:

Role = { hp = 100 }

function Role:addHp(hp)

self.hp = self.hp + hp

end

r = Role

r:addHp(50)

print(r.hp)

上面的 ”r.addHp(50)“ 的写法等价于 ”r.addHp(r, 50)“

Lua 没有类的概念,不过可以通过元表(metatable)来实现与原型 prototype 类似的功能,而 prototype 与类的工作机制一样,都是定义了特定对象行为。Lua 里的原型特性主要使用元表的 __index 事件来实现,这样当调用对象没定义的方法时,会向其元表的 __index 键(事件)查找。例如有 a 和 b 两个对象,想让 b 作为 a 的原型 prototype,只需要把 b 设置为 a 元表的 __index 值就行:

代码如下:

setmetatable(a, {__index = b})

这样,当对象 a 调用任何不存在的成员都会到对象 b 中查找,a 可以拥有或调用 b 的属性或方法,从某种意义上看,b 可以看作是一个类,a 是 b 的对象。

对于上面 Role 的例子,对象的创建可以用 __index 元方法来改写,这样新创建的对象就拥有和 Role 一样的属性和方法。

代码如下:

function Role:new(o)

o = o or {}

setmetatable(o, self)

self.__index = self

return o

end

当执行 ”r = Role:new “ 创建一个对象时,r 将 Role 设置为自己的元表,那么调用 ”r:addHp(50)“ 的时候,会在 r 里查找 addHp 方法,如果没有找到,则会进一步搜索其元表的 __index,因此等价于:

代码如下:

getmetatable(r).__index.addHp(r, 50)

从上面的 Role:new 方法可以知道,Role 的 __index 在创建时被指定为 self,因此其实就是执行:

代码如下:

Role.addHp(R, 50)

完整的类例子:

代码如下:

Role = { hp = 100 }

function Role:new(o)

o = o or {}

setmetatable(o, self)

self.__index = self

return o

end

function Role:addHp(hp)

self.hp = self.hp + hp

end

r = Role:new()

r:addHp(50)

print(r.hp)

继承

Lua 里继承机制还是像实现类那样实现,

假如打算从类 Role 派生出一个子类 Priest,它有一个魔法属性值 mp,那么可以先从类 Role 构造一个 Priest,继承类 Role 的所有属性和方法:

代码如下:

Priest = Role:new()

虽然 Priest 是 Role 的一个实例,不过它具有类 Role 的所有属性和方法,其实也可以把它看做是从类 Role 派生出来的类,因此可以从类 Priest 继续 new 一个对象出来:

代码如下:

p = Priest:new({ mp = 100 })

上面实例 p 除了多出一个魔法属性值 mp 外,还继承类 Role 的所有属性和方法,当调用 ”p.addHp“ 方法时,Lua 在 p 中找不到 addHp 方法,会到 Priest 中找,在 Priest 中找不到,会到 Role 中找。

因此,想重定义从父类 Role 继承来的方法,在类 Priest 上定义即可。假如想重定义 addHp 方法:每次加血都要先判断魔法值够不够,如果够,则加血,并扣除一定的魔法值。修改如下:

代码如下:

function Priest:addHp(hp)

if self.mp >= 20 then

self.mp = self.mp - 20

self.hp = self.hp + hp

end

end

这样,当调用 ”p:addHp“ 时,Lua 会优化取类 Priest 定义的 addHp 方法。

篇4:IOS学习笔记之 Socket 编程

最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”,所以在今天,开始好好学习IOS。(本人之前4年都是搞.Net的,java也培训过一年)

打算学IOS,从哪入手呢?给大家推荐两本入门书吧《Beginning iOS 7 Development》、《Objective-C.程序设计(第4版)》,正好两只手,一手一本。

但是我学习都是先学习基础、理论,但是动手做的时候不要对着书上的例子去学那几个控件的用法,掌握不了所有的,不如用的时候去帮助文档看看用法。即使学会了也只会那几个控件的那几个属性而已,最好是想一个小项目,然后自然而然的就用到了所有控件。

所以今天想编一个socket的例子,虽然简单,但是在做的时候还是遇到了不少小麻烦。

编码前的准备工作:

我是用的xcode6,所以准备socket库的时候使用了支持ARC的GCDAsyncSocket

1、到网上下载GCDAsyncSocket 地址:CocoaAsyncSocket/GCD at master · robbiehanson/CocoaAsyncSocket · GitHub

2、服务器端代码(我已经用.NET写了个简单的)

直接贴上后台代码了:

1、头文件

#import

#import ”GCDAsyncSocket.h“

@interface ViewController : UIViewController

{

NSString *host;

uint16_t port;

GCDAsyncSocket *socket;

}

@property NSTimeInterval socketTimeOut;

@property (weak, nonatomic) IBOutlet UILabel *txtTitle;

@property (weak, nonatomic) IBOutlet UIButton *btnClickMe;

@property (weak, nonatomic) IBOutlet UITextField *txtQQ;

@property (weak, nonatomic) IBOutlet UITextField *txtPwd;

@property (weak, nonatomic) IBOutlet UISlider *sldValue;

@property (weak, nonatomic) IBOutlet UIButton *btnConnectSocket;

@property (weak, nonatomic) IBOutlet UILabel *lblSocketStatus;

@property (weak, nonatomic) IBOutlet UIButton *btnSendMsg;

- (IBAction)btnClickMe_Click:(id)sender;

- (IBAction)txtPwd_DoneEditing:(id)sender;

- (IBAction)sldValue_Changed:(id)sender;

- (IBAction)btnConnectSocket_click:(id)sender;

- (IBAction)btnSendMsg_Click:(id)sender;

2、m文件变量初始化

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

host = @”192.168.1.103“;

port = 52710;

self.socketTimeOut = 100;

}

3、链接服务器

//链接socket服务器按钮单击事件

- (IBAction)btnConnectSocket_click:(id)sender {

_lblSocketStatus.text = host;

socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

socket.delegate = self;

NSError *err = nil;

BOOL connState=[socket connectToHost:host onPort:port error:&err];

if(!connState)

{

_lblSocketStatus.text = [_lblSocketStatus.text stringByAppendingString:err.description ];

}

else

{

NSLog(@”连接服务器:%@ 成功“,host);

}

}

4、发送信息

//发送信息单击事件

- (IBAction)btnSendMsg_Click:(id)sender {

[socket writeData:[_txtQQ.text dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];

NSLog(@”发送的QQ号码:%@“,_txtQQ.text);

[socket readDataWithTimeout:self.socketTimeOut tag:0];

}

这里还调用了

1

readDataWithTimeout 方法来读取服务器返回的信息

5、接收信息

//读取服务器获取的数据

-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

NSString *newMessage = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@”接收到服务器返回的信息:%@“,newMessage);

[socket readDataWithTimeout:self.socketTimeOut tag:0];

}

到此就完成了简单的socket收发信息,可以自己再加工加工完成一个简单的IM小项目了,

篇5:Linux服务器Shell编程学习笔记linux操作系统

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。

Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):

代码如下复制代码

#!/bin/sh

...注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似。

符号#!用来告诉系统执行该sell脚本的程序,本例使用/bin/sh。编辑结束并保存后,如果要执行该shell脚本,必须先使其可执行:

chmod +x filename此后在该shell脚本所在目录下,输入 ./filename 即可执行该shell脚本。

Shell里的一些特殊符号

a []

shell离得函数

如果你写过比较复杂的shell脚本,就会发现可能在几个地方使用了相同的代码,这时如果用上函数,会方便很多。函数的大致样子如下:

代码如下复制代码functionname

{

# inside the body $1 is the first argument given to the function

# $2 the second ...

body

}

你需要在每个脚本的开始对函数进行声明。

下面是一个名为xtitlebar的shell脚本,它可以改变终端窗口的名称。这里使用了一个名为help的函数,该函数在shell脚本中使用了两次:

代码如下复制代码

#!/bin/sh

# vim: set sw=4 ts=4 et:

help()

{

cat << HELP

xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole

USAGE: xtitlebar [-h] ”string_for_titelbar“

OPTIONS: -h help text

EXAMPLE: xtitlebar ”cvs“

HELP

exit 0

}

# in case of error or if -h is given we call the function help:

[ -z ”$1“ ] && help

[ ”$1“ = ”-h“ ] && help

# send the escape sequence to change the xterm titelbar:

echo -e ”33]0;$107“

#在shell脚本中提供帮助是一种很好的编程习惯,可以方便其他用户(和自己)使用和理解脚本。

命令行参数

我们已经见过$* 和 $1, $2 … $9 等特殊变量,这些特殊变量包含了用户从命令行输入的参数。迄今为止,我们仅仅了解了一些简单的命令行语法(比如一些强制性的参数和查看帮助的-h选项)。 但是在编写更复杂的程序时,您可能会发现您需要更多的自定义的选项。通常的惯例是在所有可选的参数之前加一个减号,后面再加上参数值 (比如文件名)。

有好多方法可以实现对输入参数的分析,但是下面的使用case表达式的例子无疑是一个不错的方法。

代码如下复制代码

#!/bin/sh

help()

{

cat << HELP

This is a generic command line parser demo.

USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2

HELP

exit 0

}

while [ -n ”$1“ ]; do

case $1 in

-h) help;shift 1;; # function help is called

-f) opt_f=1;shift 1;; # variable opt_f is set

-l) opt_l=$2;shift 2;; # -l takes an argument ->shift by 2

--) shift;break;; # end of options

-*) echo ”error: no such option $1. -h for help“;exit 1;;

*) break;;

esac

done

echo ”opt_f is $opt_f“

echo ”opt_l is $opt_l“

echo ”first arg is $1“

echo ”2nd arg is $2“

你可以这样运行该脚本:

代码如下复制代码

cmdparser -l hello -f -- -somefile1 somefile2

返回结果如下:

opt_f is 1

opt_l is hello

first arg is -somefile1

2nd arg is somefile2

这个shell脚本是如何工作的呢?脚本首先在所有输入命令行参数中进行循环,将输入参数与case表达式进行比较,如果匹配则设置一个变量并且移除该参数。根据unix系统的惯例,首先输入的应该是包含减号的参数。

shell脚本示例

一般编程步骤

现在我们来讨论编写一个脚本的一般步骤。任何优秀的脚本都应该具有帮助和输入参数。写一个框架脚本(framework.sh),该shell脚本包含了大多数脚本需要的框架结构,是一个非常不错的主意。这样一来,当我们开始编写新脚本时,可以先执行如下命令:

代码如下复制代码

cp framework.sh myscript

然后再插入自己的函数。

让我们来看看如下两个示例。

二进制到十进制的转换

脚本 b2d 将二进制数 (比如 1101) 转换为相应的十进制数。这也是一个用expr命令进行数学运算的例子:

代码如下复制代码

#!/bin/sh

# vim: set sw=4 ts=4 et:

help()

{

cat << HELP

b2d -- convert binary to decimal

USAGE: b2d [-h] binarynum

OPTIONS: -h help text

EXAMPLE: b2d 111010

will return 58

HELP

exit 0

}

error()

{

# print an error and exit

echo ”$1“

exit 1

}

lastchar()

{

# return the last character of a string in $rval

if [ -z ”$1“ ]; then

# empty string

rval=”“

return

fi

# wc puts some space behind the output this is why we need sed:

numofchar=`echo -n ”$1“ | sed 's/ //g' | wc -c `

# now cut out the last char

rval=`echo -n ”$1“ | cut -b $numofchar`

}

chop()

{

# remove the last character in string and return it in $rval

if [ -z ”$1“ ]; then

# empty string

rval=”“

return

fi

# wc puts some space behind the output this is why we need sed:

numofchar=`echo -n ”$1“ | wc -c | sed 's/ //g' `

if [ ”$numofchar“ = ”1“ ]; then

# only one char in string

rval=”“

return

fi

numofcharminus1=`expr $numofchar ”-“ 1`

# now cut all but the last char:

rval=`echo -n ”$1“ | cut -b -$numofcharminus1`

#原来的 rval=`echo -n ”$1“ | cut -b 0-${numofcharminus1}`运行时出错.

#原因是cut从1开始计数,应该是cut -b 1-${numofcharminus1}

}

while [ -n ”$1“ ]; do

case $1 in

-h) help;shift 1;; # function help is called

--) shift;break;; # end of options

-*) error ”error: no such option $1. -h for help“;;

*) break;;

esac

done

# The main program

sum=0

weight=1

# one arg must be given:

[ -z ”$1“ ] && help

binnum=”$1“

binnumorig=”$1“

while [ -n ”$binnum“ ]; do

lastchar ”$binnum“

if [ ”$rval“ = ”1“ ]; then

sum=`expr ”$weight“ ”+“ ”$sum“`

fi

# remove the last position in $binnum

chop ”$binnum“

binnum=”$rval“

weight=`expr ”$weight“ ”*“ 2`

done

echo ”binary $binnumorig is decimal $sum“

#该shell脚本使用的算法是利用十进制和二进制数权值 (1,2,4,8,16,..),比如二进制”10″可以这样转换成十进制:

代码如下复制代码

0 * 1 + 1 * 2 = 2

为了得到单个的二进制数我们是用了lastchar 函数,

该函数使用wc –c计算字符个数,然后使用cut命令取出末尾一个字符。Chop函数的功能则是移除最后一个字符。

文件循环

你可能有这样的需求并一直都这么做:将所有发出邮件保存到一个文件中。但是过了几个月之后,这个文件可能会变得很大以至于该文件的访问速度变慢;下 面的shell脚本 rotatefile 可以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而原来的outmail.1就变成了 outmail.2 等等…

代码如下复制代码

#!/bin/sh

# vim: set sw=4 ts=4 et:

ver=”0.1“

help()

{

cat << HELP

rotatefile -- rotate the file name

USAGE: rotatefile [-h] filename

OPTIONS: -h help text

EXAMPLE: rotatefile out

This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1[BR]

and create an empty out-file

The max number is 10

version $ver

HELP

exit 0

}

error()

{

echo ”$1“

exit 1

}

while [ -n ”$1“ ]; do

case $1 in

-h) help;shift 1;;

--) break;;

-*) echo ”error: no such option $1. -h for help“;exit 1;;

*) break;;

esac

done

# input check:

if [ -z ”$1“ ] ; then

error ”ERROR: you must specify a file, use -h for help“

fi

filen=”$1“

# rename any .1 , .2 etc file:

for n in 9 8 7 6 5 4 3 2 1; do

if [ -f ”$filen.$n“ ]; then

p=`expr $n + 1`

echo ”mv $filen.$n $filen.$p“

mv $filen.$n $filen.$p

fi

done

# rename the original file:

if [ -f ”$filen“ ]; then

echo ”mv $filen $filen.1"

mv $filen $filen.1

fi

echo touch $filen

touch $filen

这个shell脚本是如何工作的呢?在检测到用户提供了一个文件名之后,首先进行一个9到1的循环;文件名.9重命名为文件名.10,文件名.8重 命名为文件名. 9……等等。循环结束之后,把原始文件命名为文件名.1,同时创建一个和原始文件同名的空文件(touch $filen)

脚本调试

最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。

shell也有一个真正的调试模式,如果脚本”strangescript”出错,可以使用如下命令进行调试:

代码如下复制代码

sh -x strangescript7

上述命令会执行该脚本,同时显示所有变量的值。

shell脚本中还有一个不执行脚本只检查语法的模式,命令如下:

代码如下复制代码

sh -n your_script

这个命令会返回所有语法错误。

我们希望你现在已经可以开始编写自己的shell脚本了,尽情享受这份乐趣吧!

篇6:python网络编程学习笔记:webpy框架

-04-04python ElementTree 基本读操作示例

-03-03python操作日期和时间的方法

-11-11python自动化工具日志查询分析脚本代码实现

2014-01-01Python获取当前时间的方法

2014-05-05Python中使用动态变量名的方法

2009-11-11Python 开发Activex组件方法

2014-06-06测试、预发布后用python检测网页是否有日常链接

-12-12让python json encode datetime类型

2013-11-11python连接MySQL、MongoDB、Redis、memcache等数据库的方法

-05-05删除目录下相同文件的python代码(逐级优化)

篇7:python网络编程学习笔记:webpy框架

最近更 新

python网络编程示例(客户端与服务端)

python实现的各种排序算法代码

Python完全新手教程

python求斐波那契数列示例分享

python批量下载图片的三种方法

Python查询Mysql时返回字典结构的代码

python 查找文件夹下所有文件 实现代码

python解析html开发库pyquery使用方法

Python中实现远程调用(RPC、RMI)简单例

python 字典(dict)遍历的四种方法性能测试

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

篇8:编程辞职信

尊敬的公司领导、xx:

您们好!我也是带着忐忑的心情写这次致信。由于XXX当初对我的信任与举荐,才使我一名还未毕业的学生获得了进公司工作的宝贵机会,这份感激溢于言表,也使得我在做出离职决定时甚感愧疚。刚出校门的学生就像一张白纸,虽然在公司时间很短,之前的这张白纸已经多了一些色彩,成为了我职业生涯的一笔财富。

公司人性化的管理、健全的制度、丰厚的福利都让我感受到了正规大公司的优越性。由于个人工作经验及编程能力的不足,致使现在还不能很独立的去解决实际问题,面对未处理过的问题时总会措手无策。考虑到个人能力增长情况,一段时间内这种状况都不会明显改善。为了不影响公司业务的'开展,遂决定辞职。望给予批准。

最后,衷心感谢各位领导及同事在生活和工作当中的关照!祝大家新年愉快!同时这段时间我将继续做好本职工作与交接事宜。

此致

敬礼

xx

xx年xx月xx日

篇9:编程年度工作总结

时光匆匆,转眼一年又已经过去。回想进厂来的工作,有收获也有遗憾。在一次又一次的实践中培养着自己的工作能力,同时也暴露自己的不足,从中得到宝贵的经验和教训。现把我这半年的工作做出如下的总结:

一、这是我第一次参加工作,在专业知识及工作经验的方面可以说一片空白。通过厂里和分厂的各种培训,从中我了解到公司、转包分厂的各种工作纪律和工作流程及数控方面的知识。

二、由于刚进厂,我的工作主要是现场实习。学习数控方面的知识、数控编程及机械生产加工技术。我先在NEW SAJO 10000实习。NEW SAJO 10000是一台主轴偏摆式五轴加工中心,采用的西门子系统。跟着几位师父完成了几个零件的试制。其中有SNECMA的六级机匣、七级机匣、八级机匣、九级机匣、七级静子支撑、八级静子支撑。通过这段时间的实习,我了解了NEW SAJO 10000操作面板及基本操作,学习并能了解西门子数控程序。

三、接着跟着师傅在HCMC—15中进行SNECMA的锁盘、GOODRICH环件岐管支撑环162445、1712M64G02的试制。HCMC—15是一台三轴加工中心,采用的是FANUC系统。由于是三轴,在很多方面受到限制,而且在找正等方面也比五轴麻烦。FANUC系统比西门子系统编程简单,不过规范性强。通过我们的努力,解决了锁盘位置问题、改善了岐管支撑环刀具磨损问题。接着和师傅在NEW SAJO10000、MANDELLI M8中完成了风扇轴056—000—474—6,056—000—500—6的铣加工工序试制。

四、最后在师傅的帮助和指导下,我试着编写简单的数控程序及操作指导书的编制。在PV1000中,跟着师傅完成了涡轮定位销、锁紧垫圈等HONEYWELL件号及GE的转接螺母件号的首件试制。这是我第一次在师傅的指导下自己操作机床,从而学习并了解了机械加工中参数及尺寸的保证。

今年是我进转包分厂的第一年,虽然在过去的半年里工作方面有些许的进步,但和合格技术人员的标准还有很大的距离,因此,在以后的工作和学习中,我会更加努力,努力学习数控铣工工艺的编制、数控程序的编制以及机械加工技术,特别是在CAD/CAM软件的应用方面作出更大的努力。为转包的未来做一定的贡献。

篇10:编程年度工作总结

工作四年了,保持着每年写一份总结的习惯。

我很希望总结有一个醒目的名字,比如从XX到XX,或者薪水从XXX到XXXXX这样。可惜什么都没有,我的职位依然是软件开发,薪水依然是那么多。现在经济萧条,估计也没什么希望涨钱了。

对于怀有远大抱负的同学,这份总结应该是份反面教材。

记得去年写总结的时候心情很差,抱怨了很多当时的工作以及领导花生,那个时候的愿望是找一份新工作。没想到刚进入12月我就找到了。

不得不说这一次求职我是认真的把它当作一个工程去做,客观得对自己进行了定位,而且非常重要的是明确我想要的工作到底是什么样的。我需要的是让我每天的8小时能够享受工作的快乐。

投简历面试的过程非常折磨人,尤其是我的处境(每天很大压力,完全是自我打磨的阶段)。

我清楚地记得面试现在这份工作那天是某个周六,我的经理娃娃和技术主管T同意我周末面试。一共4个小时,那绝对是一个互相争取的过程。他们对于工作的热情打动了我,觉得和这样的团队合作一定可以有火花。

真是幸运,当我正视错误,用行动做出改变的时候,找到了一份我要的工作。入职三周已经和团队磨合得很好了,用同事的话说就是觉得我已经加入很久了。

这里不得不说一句我们的团队,一个老中青结合富有战斗力的集体,而且还不乏八卦调节生活。每个人都特别,合作也会有摩擦,但是整体运作非常协调,开发速度和效率都高。从他们身上我看到不同的'工作态度,生活态度。这些对我的都有着潜移默化的影响。领导“娃娃”也非常合适我目前阶段对于领导的需求。如果说几年前我初出茅庐需要的是一个有时间且肯耐心带我的领导的话,现在的我需要的是一个可以给予我充分信任的上司。“娃娃”信任我,从刚进入公司就如此。在熟悉产品阶段我提出的问题和建议他都认真的听了,而且给我时间让我按照自己的想法作出修改。后来我也喜欢把新想法跟他说,当我们带着创意去和老板谈的时候他是我坚强的后盾。

这一年下来我在纯技术上的提高并不多,我们所面向的客户并不要求尖端的技术。经验主要体现在理解需求上面,如果说前两年我还需要领导把需求说得很明白,还会为马后炮而耿耿于怀。那么今年应该算是个分水岭。现在的我不需要领导花很久时间来讲需求,也不用每一步都需要认可再做接下来的工作。总的来说就是技术和业务之间的距离越来越近,而且还可以想到客户将来会需要什么(我曾经的领导应该很欣慰,他培养的人终于达到他说的big picture了)。

也许这也是我一年来少来csdn的缘故吧,不会有什么特别没有头绪的问题需要上来发问。可以把所掌握的技术灵活的运用到实践中去。

其实把需求抽象建模还是很麻烦的,很多时候在最初阶段客户自己都不知道自己要的是什么样的方案。对于需求很明确的客户实在太少了。这个不断修改的阶段耗时耗力,关键是还不一定能争取下来拿到单。我们单位有个很好的传统,当争取到新的客户后。售前和销售都会对我们开发人员作一次演讲,分析客户特点(一般客户都比较有名没啥说的)以及我们的解决方案中哪些部分是最打动客户的,也就是利润点。每一次这样的会议都会伴随着很久的讨论余波,开发者在讨论的时候又会产生新的想法,我是100%享受这样的流程。

实在要说技术点上面,第一个接手的工程是提速,大量数据快速插入数据库开始大面积接触sql server 20xx,写很多存储过程。net写一些winform的东西,不是特别高深。但是很好的对于结构的锻炼vb6跟不同版本的cad及其衍生物结合(这个一直在做,不过越做越高深)

最后就是我每年都会写的细节与规范,现在身边立着几个榜样,我需要时时刻刻鞭策自己。

篇11:编程年度工作总结

XX年度,我在公司领导的大力支持和各部门的团结合作下,在部门员工努力工作下,认真学习编程基本知识及岗位职责,积极完成领导交办的各项工作,顺利完成了年初既定的各项目标及计划。

最近几周一直在弄程序,说实话真的很累,但累中也有成功的快乐。我觉得学到了很多东西,这是只看课本知识所不能学到的。

说实话,以前我一直没学过java虽然我也知道java的重要性,可是即使上课听了,不实践还是掌握不了。因为种种原因,今年我没有买笔记本。没有机器,仅仅靠每周一次的上机练习是绝对不够的。所以我就插空调程序,在舍友们不用的时候自己再接她们的电脑调。

以下是我今年入职公司的编程经验总结:

1、当性能遇到问题时,如果能在应用层进行计算和处理,那就把它从数据库层拿出来。排序和分组就是典型的例子。在应用层做性能提升总是要比在数据库层容易的多。就像对于mysql,sqlite更容易掌控。

2、关于并行计算,如果能避免就尽量避免。如果无法避免,记住,能力越大,责任越大。

如果有可能,尽量避免直接对线程操作。尽可能在更高的抽象层上操作。例如,在ios中,gcd,分发和队列操作是你的好朋友。人类的大脑没有被设计成用来分析那些无穷临时状态——这是我的惨痛教训所得。

3、尽可能简化状态,尽可能局部本地化,适用至上。

4、短小可组合的方法是你的好朋友。

5、代码注释是危险的,因为它们很容易更新不及时或给人误导,但这不能成为不写注释的理由。不要注释鸡毛蒜皮的事情,但如果需要,在某些特殊地方,战略性的长篇注释是需要的。你的记忆会背叛你,也许会在明天早上,也许会在一杯咖啡后。

6、如果你认为一个用例场景也许“不会有问题吧”,它也许就是一个月后让你在发布的产品中遭受惨痛失败的地方。做一个怀疑主义者,测试,验证。

7、有疑问时,和团队中所有相关人交流。

8、做正确的事情——你通常会知道这指的是什么。

9、你的用户并不傻,他们只是没有耐心理解你的捷径。

10、如果一个开发人员没有被安排长期的维护你们开发的系统,对他保持警惕。80%的血、汗、泪水都是在软件发布后的时间里流的——那时你会变成一个厌世者,但也是更聪明的“行家”。

11、任务清单是你的好朋友。

12、主动让你的工作更有乐趣,有时这需要你付出努力。

13、悄无声息的崩溃,我仍然会为此从噩梦中惊醒。监控,日志,警报。清楚各种的假警报和不可避免的感觉钝化。保持你的系统对故障的敏感和及时警报。

14、复杂是大敌。

工作不在朝夕,对于工作在很多时候也会出现一些问题,这一年来部门也出现了这种情况,整体的工作效率还是有所欠缺,这对今后的工作还是会有一定的影响,我想这些都是必然的,我相信在工作上面把这些做好是会有足够的收获的,纠正工作效率底下这个问题没在接下来的工作中一定严格到位。

编程实习报告

笔记

c语言编程心得体会

学习编程的方法

大学生编程实习总结

数控编程就业前景

趣味编程小学作文

编程的学习总结

编程猫教学设计

VC图像编程教案 第二章

《UG4.0编程笔记(精选11篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

点击下载本文文档