找回密码
 注册
关于网站域名变更的通知
查看: 902|回复: 7
打印 上一主题 下一主题

求助:文字转shape

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-10 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
因为文字的Bbox比文字本身要大一些。所以想把文字转为shape再去比较文字和文字以及文字和其他东西有没有重叠。
之前在网上看到过大神提供的思路:先用axlText2Lines ,再用axlPolyFromDB,最后用axlDBCreateShape,但是我试了一下午都没有成功。有高手可以帮忙看看吗?或者有其他更好的办法不。我的最终目的是要判断文字和文字、焊盘、零件外框之类的有没有重叠。感谢感谢~~~

该用户从未签到

2#
发表于 2018-4-11 09:32 | 只看该作者
axlCmdRegister("c2s" 'LCB_cline_to_shape ?cmdType "interactive"
?doneCmd 'LCB_Done ?cancelCmd 'LCB_Cancel)
axlSetFunckey("cts" "c2sXXX")
procedure(LCB_cline_to_shape()
let( ()
axlSetFindFilter(?enabled list("noall" "clines" "lines" )
                  ?onButtons list("noall" "clines" "lines"))
LCBpopup = axlUIPopupDefine( nil (list
    (list "Undo" 'LCB_unDo)
    (list "Done" 'LCB_Done)
    (list "Cancel" 'LCB_Cancel)
     ))
axlUIPopupSet(LCBpopup)

LCB_mark = axlDBTransactionStart()
notdone = t
while(notdone
  lclines = axlGetSelSet(axlSelect(?prompt "Select Clines to convert to a shape."))
  if(lclines then
    foreach(clinedbid lclines
      ;layer = "etch/bottom"
      layer = car(axlGetSelSet())->layer
       polydbid = axlPolyFromDB(clinedbid ?endCapType "ROUND")
       if(polydbid then
        ;axlDeleteObject(clinedbid)
        if(! axlDBCreateShape(car(polydbid) t layer)  then
          axlUIWPrint(nil "** Error. Failed to create Shape from Cline. **")
        ); endif
        if(cadr(polydbid) then
            axlDBCreateShape(cadr(polydbid) t layer)  )
       else
        axlUIWPrint(nil "** Error. Failed to create Polydbid from Cline. **")
       ); endif
    ); end foreach cline
  ); endif
); end while
axlDBTransactionCommit(LCB_mark)

)); let and procedure

procedure(LCB_unDo()
let( ()
  if(! axlDBTransactionOops(LCB_mark) then
    axlUIWPrint(nil "-- Nothing Left To Undo. --")
  else
    axlUIWPrint(nil "-- Replacing Clines. --")
  ); endif
  axlClearSelSet()
)); end let procedure

procedure(LCB_Cancel()
let( ()
  axlUIWPrint(nil "** Cancelled Program. **")
  ;axlDBTransactionRollback(LCB_mark)
  notdone = nil
  axlClearSelSet()
  axlCancelEnterFun()

)); end let procedure

procedure(LCB_Done()
let( ()
  axlUIWPrint(nil "- Done -")
  axlDBTransactionCommit(LCB_mark)
  notdone = nil
  axlCancelEnterFun()
   
)); end let and procedure

点评

改天再来研究下你这个。感谢Jordan童鞋~~  详情 回复 发表于 2018-4-11 16:20
楼主要的是文件转图形,不是铜线转图形  详情 回复 发表于 2018-4-11 10:48

该用户从未签到

3#
发表于 2018-4-11 09:34 | 只看该作者
cline2shape.rar (838 Bytes, 下载次数: 0)
  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    4#
    发表于 2018-4-11 10:47 | 只看该作者
    本帖最后由 leilei4908 于 2018-4-11 10:49 编辑

    lines = axlText2Lines(text)
    paths = foreach(mapcan x lines x)
    tPolys = nil
    foreach(path paths
          polys = axlPolyFromDB(path ?endCapType 'ROUND ?line2poly t)
          foreach(poly polys
                 tPolys = axlPolyOperation(tPolys poly 'OR)
          )
    )
    unless(listp(tPolys) tPolys = list(tPolys))
    foreach(tPoly tPolys
          axlDBCreateShape(tPoly t "BOARD GEOMETRY/SILKSCREEN_TOP")
    )
    这个方式仅限于16.6及以上版本使用

    点评

    试了,很好哦,非常非常感谢您  详情 回复 发表于 2018-4-11 16:19
  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    5#
    发表于 2018-4-11 10:48 | 只看该作者
    本帖最后由 leilei4908 于 2018-4-11 10:51 编辑
    jordanli22 发表于 2018-4-11 09:32
    axlCmdRegister("c2s" 'LCB_cline_to_shape ?cmdType "interactive"
    ?doneCmd 'LCB_Done ?cancelCmd 'LCB ...


    楼主要的是文字转图形,不是铜线转图形

    该用户从未签到

    6#
     楼主| 发表于 2018-4-11 16:19 | 只看该作者
    leilei4908 发表于 2018-4-11 10:47
    lines = axlText2Lines(text)
    paths = foreach(mapcan x lines x)
    tPolys = nil

    试了,很好哦,非常非常感谢您

    点评

    检查文字是否与焊盘重叠,可以用axlPolyOperation(tPoly pPoly 'And)判断  详情 回复 发表于 2018-4-11 16:29

    该用户从未签到

    7#
     楼主| 发表于 2018-4-11 16:20 | 只看该作者
    jordanli22 发表于 2018-4-11 09:32
    axlCmdRegister("c2s" 'LCB_cline_to_shape ?cmdType "interactive"
    ?doneCmd 'LCB_Done ?cancelCmd 'LCB ...

    改天再来研究下你这个。感谢Jordan童鞋~~
  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    8#
    发表于 2018-4-11 16:29 | 只看该作者
    chengcheng123 发表于 2018-4-11 16:19
    试了,很好哦,非常非常感谢您

    检查文字是否与焊盘重叠,可以用axlPolyOperation(tPoly pPoly 'And)判断
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-14 08:46 , Processed in 0.109375 second(s), 34 queries , Gzip On.

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

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

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