Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 29810|回复: 36

MM与MIL互转源码,带详细注释

[复制链接]
发表于 2013-5-1 22:18:26 | 显示全部楼层 |阅读模式
  1. /****************************************************/
  2. /*               Title :  mil2mm                    */
  3. /*     Execute Command :  mil2mm                    */
  4. /*              Author :  Vivien Luo                */
  5. /*       Creation Date :  2013-05-01                */
  6. /*              Update :                            */
  7. /*            Web site :  www.allegro-skill.com     */
  8. /****************************************************/

  9. axlCmdRegister( "mil2mm" 'mil2mm)
  10. procedure(mil2mm()
  11.         M2MVersion()                                ;显示版本等信息
  12.         M2MCreatFormFile()                        ;创建FORM文件
  13.         M2MFormFile = "./M2MFormFile.form"        ;指定FORM文件
  14.         M2MForm = axlFormCreate( (gensym) M2MFormFile nil 'M2MFormAction t)        ;创建FORM
  15.         ;axlFormTest(M2MForm)
  16.         axlFormDisplay(M2MForm)                ;显示FORM
  17.         axlUIWPrint(M2MForm "Written By Vivien Luo - www.allegro-skill.com");状态栏显示的信息
  18.         if(isFile(M2MFormFile) then        ;删除FORM文件
  19.                 deleteFile(M2MFormFile)
  20.         )
  21. );end procedure

  22. procedure(M2MFormAction(M2MForm)
  23.         case(M2MForm->curField        ;获取FORM当前的字段
  24.                 ("MM"        ;对输入的MM数据进行转换
  25.                         mm = M2MForm->curValue        ;获取MM的值
  26.                         mils = axlMKSConvert(mm "mm" "mil")        ;将MM转换为MIL,使用的是axlMKSConvert函数
  27.                         axlFormSetField(M2MForm "MIL" mils)        ;将转换的值传递给FORM的MIL
  28.                         axlUIWPrint(M2MForm "MM Convert to MILS Successful !");状态栏显示的信息
  29.                 )
  30.                 ("MIL"        ;这部分与上面基本类似,就不做注释了
  31.                         mils = M2MForm->curValue
  32.                         mm = axlMKSConvert(mils "mil" "mm")
  33.                         axlFormSetField(M2MForm "MM" mm)
  34.                         axlUIWPrint(M2MForm "MILS Convert to MM Successful !")
  35.                 )
  36.         );end case
  37. );end procedure

  38. procedure(M2MCreatFormFile()
  39.         M2MFilePort = outfile("./M2MFormFile.form");指定FORM文件
  40.         fprintf(M2MFilePort "FILE_TYPE=FORM_DEFN VERSION=2\n");FORM文件头,FORM文件里面第一句必须为这个
  41.         fprintf(M2MFilePort "FORM\n");FORM开始
  42.         fprintf(M2MFilePort "FIXED\n")
  43.         fprintf(M2MFilePort "PORT 35 6\n");FORM大小
  44.         fprintf(M2MFilePort "HEADER "MIL MM Interconversion"\n");FORM标题栏显示的内容
  45.         fprintf(M2MFilePort "\n")
  46.        
  47.         fprintf(M2MFilePort "TILE\n");TILE开始
  48.        
  49.         fprintf(M2MFilePort "TEXT "MM"\n");创建文本
  50.         fprintf(M2MFilePort "TLOC 2 1\n");指定坐标
  51.         fprintf(M2MFilePort "ENDTEXT\n");结束文本
  52.         fprintf(M2MFilePort "\n")
  53.        
  54.         fprintf(M2MFilePort "FIELD MM\n");创建MM输入文本框
  55.         fprintf(M2MFilePort "FLOC 6 1\n");指定坐标
  56.         fprintf(M2MFilePort "REALFILLIN 8 12\n");文本框类型为REALFILLIN,注意区分INTFILLIN STRFILLIN
  57.         fprintf(M2MFilePort "REALMIN -9999999.9999\n");最小值
  58.         fprintf(M2MFilePort "REALMAX 9999999.9999\n");最大值
  59.         fprintf(M2MFilePort "DECIMAL 4\n")        ;设置精度
  60.         fprintf(M2MFilePort "ENDFIELD\n");结束MM文本框
  61.         fprintf(M2MFilePort "\n")
  62.        
  63.         fprintf(M2MFilePort "TEXT "<-->"\n");创建文本
  64.         fprintf(M2MFilePort "TLOC 16 1\n");指定坐标
  65.         fprintf(M2MFilePort "OPTIONS BOLD\n");结束文本
  66.         fprintf(M2MFilePort "ENDTEXT\n")
  67.        
  68.         fprintf(M2MFilePort "FIELD MIL\n");创建MIL输入文本框
  69.         fprintf(M2MFilePort "FLOC 20 1\n");指定坐标
  70.         fprintf(M2MFilePort "REALFILLIN 8 12\n");文本框类型为REALFILLIN,注意区分INTFILLIN STRFILLIN
  71.         fprintf(M2MFilePort "REALMIN -99999999.99\n");最小值
  72.         fprintf(M2MFilePort "REALMAX 99999999.99\n");最大值
  73.         fprintf(M2MFilePort "DECIMAL 2\n");设置精度
  74.         fprintf(M2MFilePort "ENDFIELD\n");结束MIL文本框
  75.        
  76.         fprintf(M2MFilePort "TEXT "MIL"\n");创建文本
  77.         fprintf(M2MFilePort "TLOC 31 1\n");指定坐标
  78.         fprintf(M2MFilePort "ENDTEXT\n");结束文本
  79.         fprintf(M2MFilePort "\n")
  80.        
  81.         fprintf(M2MFilePort "\n")
  82.         fprintf(M2MFilePort "ENDTILE\n");结束TILE
  83.         fprintf(M2MFilePort "\n")
  84.         fprintf(M2MFilePort "ENDFORM\n");结束FORM
  85.         close( M2MFilePort)
  86.         ;Debuge Message
  87.         ;axlUIWPrint(nil "Form Created!")
  88. );end procedure

  89. procedure(M2MVersion()
  90.         axlUIWPrint(nil "------ mil2mm V1.1 ---- Written By Vivien Luo  ------");在命令栏输出版本及作者
  91.         axlUIWPrint(nil "------ E-mail : vivienluo@allegro-skill.com ------ May 1, 2013 ------");在命令栏输出日期
  92. );end procedure
复制代码
注意:MIL的精度设置为2就可以了,mm精度设置为4才能与mil精度对应

评分

参与人数 1SKILL币 +2 收起 理由
375259768 + 2 很给力!

查看全部评分

发表于 2014-7-5 00:19:38 | 显示全部楼层
这个不错,带注解,顶
 楼主| 发表于 2013-5-17 21:44:29 | 显示全部楼层
自己顶
发表于 2013-7-12 09:10:55 | 显示全部楼层
太好了,我现在就有用这个SKILL,现在能看懂了
发表于 2013-10-4 15:18:17 | 显示全部楼层
我也有這個skill 感謝詳細的說明
发表于 2013-12-22 18:34:17 来自手机 | 显示全部楼层
好东西啊小东西没看到
发表于 2013-12-23 00:29:55 | 显示全部楼层
感谢版主一直以来的贡献,我坚决拥护本站!
发表于 2013-12-23 00:30:33 | 显示全部楼层
感谢版主一直的贡献
发表于 2014-1-2 21:10:34 | 显示全部楼层
謝謝  版主的 分享說明  
发表于 2014-1-4 05:43:19 来自手机 | 显示全部楼层
goodinformation
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-23 17:11 , Processed in 0.159139 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表