找回密码
 注册
查看: 345|回复: 9
打印 上一主题 下一主题

导入logo skill 【源码】

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2025-3-19 15:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 digitzing 于 2025-3-19 17:01 编辑

导入logo skill 源码,还有些报错,不知道哪里问题?大家帮忙看看



axlFormTest("gtopen_Logo.form")




  1. ; 定义主函数


  2. axlCmdRegister("gtopen_Logo" 'gtopen_Logo ?cmdType "interactive")
  3. procedure( gtopen_Logo()
  4. let((form)        
  5.         axlShell("noappmode")        
  6.         form = gtopen_Logo_Createform()
  7.         print("0")
  8.         gtopen_Logo_Int_Var(form)
  9.         gtopen_Logo_Update_form(form)
  10.         )        
  11. )


  12. procedure( gtopen_Logo_Createform()
  13. let((file form)
  14.         file = "~/Skill/Forms/gtopen_Logo.form"               
  15.         when('gtopen_Logoform && boundp('gtopen_Logoform)
  16.                 when(axlIsFormType(eval('gtopen_Logoform))
  17.                         axlFormClose(eval('gtopen_Logoform))
  18.                 )
  19.         )        
  20.         
  21.         form = axlFormCreate('gtopen_Logoform "gtopen_Logo.form" nil 'gtopen_Logo_CB t)
  22. )
  23. )



  24. procedure( gtopen_Logo_Int_Var(form)
  25. let((_getFontList)
  26.         form->pop = ncons(nil)
  27.         form->pop->layerclass = list("BOARD GEOMETRY" "PACKAGE GEOMETRY" "MANUFACTURING" "ETCH" "DRAWING FORMAT")        
  28.         form->var = ncons(nil)
  29.         form->var->layerclass = "BOARD GEOMETRY"
  30.         form->var->layersubclass = "DIMENSION"
  31.         form->var->pic_size = 1
  32.         form->var->neg = nil
  33. )
  34. )


  35. procedure( gtopen_Logo_CB(form)
  36. prog((tt bmp_show Blockw Blockh width height pixel_size box pick)
  37.         case(form->cuRField
  38.                 ("layerclass"
  39.                         form->var->layerclass = form->curValue
  40.                         form->var->layersubclass = car(axlSubclasses(form->var->layerclass))
  41.                 )
  42.                 ("layersubclass" | "neg" | "pic_size"
  43.                         evalstring(sprintf(nil "form->var->%s = form->curValue" form->curField))
  44.                 )
  45.                 ("vis"
  46.                         if(form->curValue then
  47.                                 axlVisibleLayer(strcat(form->var->layerclass "/" form->var->layersubclass) t)
  48.                         else
  49.                                 axlVisibleLayer(strcat(form->var->layerclass "/" form->var->layersubclass) nil)
  50.                         )
  51.                         axlVisibleUpdate(t)
  52.                 )
  53.                 ("load"
  54.                         tt = axlDMFileBrowse("\321\241\324\361\315\274\306\254" nil ?optFilters "BMP Files(*.bmp)|*.bmp")
  55.                         when(tt
  56.                                 if(isFile(tt) && member(upperCase(lastelem(axlDMFileParts(tt))) list("BMP")) then
  57.                                         form->var->bmpinput = tt
  58.                                 else
  59.                                         printf(">>\262\273\326\247\263\326\315\274\306\254\270\361\312\275\n")
  60.                                 )
  61.                         )
  62.                 )
  63.                 ("place"
  64.                         when(form->bmpdate
  65.                                 tt = axlGetParam(sprintf(nil "paramTextBlock:%d" form->var->pic_size))
  66.                                 Blockw = tt->width
  67.                                 Blockh = tt->height
  68.                                 width = (form->bmpdate[21] << 24) + (form->bmpdate[20] << 16) + (form->bmpdate[19] << 8) + form->bmpdate[18]
  69.                                 height = (form->bmpdate[25] << 24) + (form->bmpdate[24] << 16) + (form->bmpdate[23] << 8) + form->bmpdate[22]
  70.                                 pixel_size = max(Blockw/width Blockh/height)
  71.                                 box = list(list(0 0) list(width*pixel_size height*pixel_size))
  72.                                 axlClearDynamics()
  73.                                 axlAddSimpleMoveDynamics(0:0 axlPathStart(box) "box" ?ref_point 0:0)
  74.                                 pick = axlEnterPoint()
  75.                                 axlClearDynamics()
  76.                                 when(pick
  77.                                         axlDBCloak(gtopen_Logo_addshape(form pick) 'shape)
  78.                                 )
  79.                         )
  80.                 )
  81.                 ("textset"
  82.                         axlShell("define text")
  83.                 )
  84.                 (t
  85.                         return(t)
  86.                 )
  87.         )
  88.         gtopen_Logo_Update_form(form)
  89. )
  90. )

  91. procedure( gtopen_Logo_Update_form(form)
  92. let((tt port bmpdate)

  93.         form->pop->layersubclass = nil
  94.         foreach(n0 axlSubclasses(form->var->layerclass)
  95.                 when(axlIsLayer(buildString(list(form->var->layerclass n0) "/"))
  96.                         form->pop->layersubclass = cons(list(n0 n0 axlLayerGet(buildString(list(form->var->layerclass n0) "/"))->color) form->pop->layersubclass)
  97.                 )
  98.         )
  99.         tt = axlLayerGet(strcat(form->var->layerclass "/" form->var->layersubclass))
  100.         if(tt->visible then
  101.                 form->var->vis = tt->color
  102.                 axlFormSetField(form "vis" t)
  103.         else
  104.                 form->var->vis = 0
  105.                 axlFormSetField(form "vis" nil)
  106.         )
  107.         
  108.         foreach(n0 form->pop->?
  109.                 tt = member(n0 form->pop)
  110.                 axlFormBuildPopup(form symbolToString(car(tt)) cadr(tt))
  111.         )
  112.         foreach(n0 form->var->?
  113.                 tt = member(n0 form->var)
  114.                 axlFormSetField(form symbolToString(car(tt)) cadr(tt))
  115.         )
  116.         when(form->curField == "load" && form->var->bmpinput
  117.                 form->bmpsize = fileLength(form->var->bmpinput)
  118.                 axlFormSetField(form "bmp_show" form->var->bmpinput)
  119.                 port = infile(form->var->bmpinput)
  120.                 declare(bmpdate[form->bmpsize])
  121.                 for(i 0 form->bmpsize-1
  122.                         bmpdate[i] = charToInt(getc(port))
  123.                 )
  124.                 close(port)
  125.                 form->bmpdate = bmpdate
  126.         )
  127.         if(form->var->bmpinput then
  128.                 axlFormSetFieldEditable(form "place" t)
  129.         else
  130.                 axlFormSetFieldEditable(form "place" nil)
  131.         )
  132.         axlFormAutoResize(form)
  133.         axlFormDisplay(form)
  134. )
  135. )

  136. procedure( gtopen_Logo_addshape(form pickxy)
  137. prog((tt Blockw Blockh number num row max_column column max_w bit x y offset width height Grid imagesize path polys symbolid)
  138.         tt = axlGetParam(sprintf(nil "paramTextBlock:%d" form->var->pic_size))
  139.         Blockw = tt->width
  140.         Blockh = tt->height
  141.         
  142.         offset = (form->bmpdate[13] << 24) + (form->bmpdate[12] << 16) + (form->bmpdate[11] << 8) + form->bmpdate[10]
  143.         width = (form->bmpdate[21] << 24) + (form->bmpdate[20] << 16) + (form->bmpdate[19] << 8) + form->bmpdate[18]
  144.         height = (form->bmpdate[25] << 24) + (form->bmpdate[24] << 16) + (form->bmpdate[23] << 8) + form->bmpdate[22]
  145.         imagesize = form->bmpsize - offset
  146.         
  147.         max_column = (imagesize / height) << 3
  148.         max_w = (imagesize / width) << 3
  149.         number = offset + imagesize - 1
  150.         Grid = 1/min(width/Blockw height/Blockh)
  151.         column = 0
  152.         polys = '()
  153.         if(!axlSelectByName("SYMTYPE" "GTLogo") then
  154.     axlDBCreateSymDefSkeleton(list("GTLogo" "mechanical") list(list(0 0) list(width height)))
  155.         else
  156.           axlClearSelSet()
  157.         )
  158.         symbolid = car(axlDBCreateSymbolSkeleton(list("GTLogo" "mechanical") pickxy nil 0.0 nil))
  159.         axlMeterCreate("\275\370\263\314\326\320" "" t)
  160.         for(i offset number
  161.                 tt = fix((50*i) / (imagesize-1))
  162.                 when(tt == 12 || tt == 25 || tt == 37 || tt == 50
  163.                         axlMeterUpdate(tt sprintf(nil "\315\352\263\311\266\310 :%d / %d" (i-offset) (imagesize-1)))
  164.                 )
  165.                
  166.                 y = Grid * fix((i - offset) / (max_column >> 3)) + cadr(pickxy)
  167.                 for(j 0 7
  168.             bit = bitfield1(form->bmpdate[i] (7 - j))
  169.             when(form->var->neg
  170.                     bit = abs(bit-1)
  171.             )
  172.             x = Grid * column + car(pickxy)
  173.                         when(zerop(bit) && (column < width)
  174.                                 path = axlPathStart(list(x:y))
  175.                                 axlPathLine(path 0.0 x:(y+1.1*Grid))
  176.                                 axlPathLine(path 0.0 (x+1.1*Grid):(y+1.1*Grid))
  177.                                 axlPathLine(path 0.0 (x+1.1*Grid):y)
  178.                                 axlPathLine(path 0.0 x:y)
  179.                                 polys = append(axlPolyFromDB(path) polys)
  180.                         )
  181.             column++
  182.                 )
  183.                 when(column == max_column
  184.             column = 0
  185.                 )
  186.         )
  187.         polys = axlPolyOperation(car(polys) cdr(polys) 'OR)
  188.         num = 1
  189.         foreach(n0 polys
  190.                 tt = fix((50*num) / length(polys)) + 50
  191.                 when(tt == 62 || tt == 75 || tt == 87 || tt == 100
  192.                         axlMeterUpdate(tt sprintf(nil "\315\352\263\311\266\310 :%d / %d" num length(polys)))
  193.                 )
  194.                 tt = axlDBCreateShape(n0 t strcat(form->var->layerclass "/" form->var->layersubclass) nil symbolid)
  195.                 axlCustomColorObject(car(tt) 0)
  196.                 num++
  197.         )
  198.         axlMeterDestroy()
  199.         axlVisibleUpdate(t)
  200.         
  201. )
  202. )








复制代码



下面这个是Form文件,Form是正常的
  1. FILE_TYPE=FORM_DEFN VERSION=2
  2. FORM AUTOGREYTEXT
  3. FIXED
  4. PORT 69 10
  5. HEADER "BMP Logo导入"
  6. POPUP <fontlist_pop>""""
  7. POPUP <layerclass_pop>""""
  8. POPUP <layersubclass_pop>""""
  9. POPUP <brushmode>""""
  10. TILE

  11. GROUP "预览"
  12. GLOC 1 1
  13. GSIZE 40 22
  14. ENDGROUP
  15. FIELD bmp_show
  16. THUMBNAIL
  17. FLOC 3 5
  18. FSIZE 37 16
  19. ENDFIELD

  20. GROUP "参数"
  21. GLOC 43 1
  22. GSIZE 26 22
  23. ENDGROUP

  24. FIELD layerclass
  25. FLOC 47 4
  26. ENUMSET 18 1
  27. POP layerclass_pop
  28. OPTIONS prettyprint
  29. ENDFIELD

  30. FIELD vis
  31. FLOC 44 7
  32. COLOR 2 1
  33. ENDFIELD

  34. FIELD layersubclass
  35. FLOC 47 7
  36. ENUMSET 18 1
  37. OPTIONS ownerdrawn prettyprint
  38. POP layersubclass_pop
  39. ENDFIELD

  40. TEXT "大小"
  41. TLOC 44 10
  42. ENDTEXT

  43. FIELD pic_size
  44. FLOC 50 10
  45. INTSLIDEBAR 4 2
  46. MIN 1
  47. MAX 50
  48. ENDFIELD

  49. FIELD textset
  50. FLOC 60 10
  51. MENUBUTTON "设置" 3 3
  52. ENDFIELD

  53. TEXT "类型"
  54. TLOC 44 13
  55. ENDTEXT


  56. FIELD neg
  57. FLOC 50 13
  58. CHECKLIST "负片"
  59. ENDFIELD



  60. TEXT
  61. FLOC 1 25
  62. INFO bmpinput 100
  63. FSIZE 45 2
  64. ENDTEXT

  65. FIELD load
  66. FLOC 45 24
  67. MENUBUTTON "1.导入" 9 4
  68. ENDFIELD

  69. FIELD place
  70. FLOC 58 24
  71. MENUBUTTON "2.摆放" 9 4
  72. ENDFIELD

  73. ENDTILE
  74. ENDFORM
复制代码
游客,如果您要查看本帖隐藏内容请回复




gtopen_Logo.rar

2.25 KB, 下载次数: 3, 下载积分: 贡献 -30 , 威望 -10

该用户从未签到

2#
发表于 2025-3-19 16:34 | 只看该作者
谢谢分享,程序写的太好了,一看就是大神杰作

该用户从未签到

3#
发表于 2025-3-19 17:04 | 只看该作者
感谢分享了,学习一下了
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    4#
    发表于 2025-3-19 17:04 | 只看该作者

    点评

    收到,谢谢!发现是和其他skill冲突导致运行不了。  详情 回复 发表于 2025-3-20 09:16

    该用户从未签到

    5#
     楼主| 发表于 2025-3-20 09:16 | 只看该作者
    db-_- 发表于 2025-3-19 17:04
    https://eda365.com/forum.php?mod=viewthread&tid=582943&highlight=%B5%BC%C8%EBBMP
    没时间看,供参考。

    收到,谢谢!发现是和其他skill冲突导致运行不了。

    该用户从未签到

    6#
    发表于 2025-3-20 09:20 | 只看该作者
    谢谢分享

    “来自电巢APP”

  • TA的每日心情

    2021-1-21 15:57
  • 签到天数: 121 天

    [LV.7]常住居民III

    8#
    发表于 2025-4-3 09:21 | 只看该作者
    谢谢分享   学习学习
  • TA的每日心情

    2022-8-15 15:41
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    9#
    发表于 2025-4-10 15:58 | 只看该作者
    感謝大大無私地分享~
  • TA的每日心情
    开心
    2025-5-20 15:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    10#
    发表于 2025-4-14 09:52 | 只看该作者
    感谢分享,学习了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-5-28 21:03 , Processed in 0.093750 second(s), 31 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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