请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 802|回复: 0

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

[复制链接]

13

主题

0

回帖

69

E币

技术员

Rank: 2

积分
26
发表于 2017-12-15 22:33:16 | 显示全部楼层 |阅读模式
  1. /****************************************************/
  2. /*               Title :  mil2mm                    */
  3. /*     Execute Command :  mil2mm                    */
  4. /*              Author :  Vivien Luo                */
  5. /*       Creation Date :  2013-05-01                */
  6. /*              Update :                            */
  7. /****************************************************/

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

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

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

  88. procedure(M2MVersion()
  89.         axlUIWPrint(nil "------ mil2mm V1.1 ---- Written By Vivien Luo  ------");在命令栏输出版本及作者
  90.         axlUIWPrint(nil "------ E-mail : vivienluo@allegro-skill.com ------ May 1, 2013 ------");在命令栏输出日期
  91. );end procedure
复制代码


注意:MIL的精度设置为2就可以了,mm精度设置为4才能与mil精度对应
积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-16 16:50 , Processed in 0.044646 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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