找回密码
 注册
12
返回列表 发新帖
楼主: ashnoer
打印 上一主题 下一主题

【分享】用于PDF原理图快速抓取器件的SKILL

[复制链接]

该用户从未签到

16#
发表于 2024-12-8 08:08 | 只看该作者
谢谢!感谢分享!
  • TA的每日心情
    无聊
    2025-1-13 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    17#
    发表于 2025-1-2 01:24 | 只看该作者
    请问代码怎么用

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-1-19 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    18#
    发表于 2025-2-14 21:35 | 只看该作者
    谢谢分享,下来试一试
  • TA的每日心情
    郁闷
    2024-7-25 15:18
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    19#
     楼主| 发表于 2025-3-18 18:33 | 只看该作者
    1. /*
    2. By4311
    3. 240908
    4. 用于PDF原理图,PDF中框选复制器件文本信息,在设计中使用~1抓取

    5. 历史更新:
    6.   2025.03.18
    7.     新增某些位号重叠被合并为一个字符串时也会抓取
    8. */

    9. axlSetFunckey("~1" "By4311_GrabClipboardSymbol")
    10. axlCmdRegister("By4311_GrabClipboardSymbol" 'By4311_Main_GrabClipboardSymbol)

    11. (procedure By4311_FindSymbol()
    12.   axlZoomToDbid(car(axlSelectByName("REFDES" axlUIPrompt("Find Symbol Name:"))) t)
    13. )

    14. (procedure By4311_Main_GrabClipboardSymbol()

    15.   ;器件位号前缀合集
    16.   Pre = list("U" "R" "C" "L")
    17.   ;字符前缀
    18.   Regular = "[A-Za-z0-9_+-=.]+"

    19.   By4311_GetClipboardSymbol()
    20.   By4311_GrabClipboardSymbol(GrabList)
    21. )

    22. (procedure By4311_GetClipboardSymbol()
    23.   axlUIConfirmEx( "Use This Command At Your Own Risk." "By4311_GrabClipboardSymbol")
    24. let( (P)
    25. ;清除选择集,设置过滤器
    26. axlClearSelSet()
    27. Filter = list("NoAll" "Symbols")
    28. axlSetFindFilter(?enabled Filter ?onButtons cdr(Filter))

    29. ;获得剪切板内容进行解析,转换为字符串链表
    30. TexList = axlClipboardGetText()
    31. TexList = buildString(parseString(TexList "\r") " ")
    32. TexList = buildString(parseString(TexList "\n") " ")
    33. TexList = parseString(TexList " ")

    34.   Analysis = list()
    35.   (foreach item Pre
    36.     printf("\n%s :" item)
    37.     New = rexMatchList(strcat(Regular item "[0-9]+") TexList)

    38.     rexCompile(strcat(Regular item))
    39.     (foreach otem New
    40.       printf("%L\t" rexReplace(otem item 1))
    41.       Analysis = cons(rexReplace(otem item 1) Analysis)
    42.     )
    43.   )

    44.   GrabList = list()
    45.   TexList = unique(append(TexList Analysis))

    46. ;在设计中查找链表包含的对象,放置到抓取合集中
    47.   (foreach item TexList
    48.     ID = car(axlSelectByName("REFDES" item))
    49.      when( ID
    50.      GrabList = cons(ID GrabList)
    51.      ;printf("%L\n" car(P)->refdes)
    52.      )
    53.   )

    54.   GrabList = unique(GrabList)
    55. )
    56. )

    57. (procedure By4311_GrabClipboardSymbol(TarList)
    58. let((Point item)
    59.    (if TarList ;传入的链表;如果不为空则抓取,如果为空则提示
    60.    then axlHighlightObject(TarList)
    61.    item = axlDBAltOrigin('center car(TarList)) ;默认鼠标附着基准点为第一个元素的中心坐标
    62.    axlDynamicsObject(TarList item) ;鼠标附着
    63.    Point = axlEnterPoint(?prompts `("Please Click To Select The Point To Place...")) ;选择新位置
    64.    axlDehighlightObject(TarList)
    65.    (if Point
    66.    then axlTransformObject(TarList ?move axlMXYSub(Point item)) ;整体移动
    67.    else axlMsgPut("User Canceled Operation.");用户取消操作
    68.    )
    69.    axlClearDynamics();清除鼠标附着
    70.    else
    71.    axlMsgPut("Did Not Grab The Symbol.");没有抓取到有用的信息
    72.    )
    73.   )
    74. )
    复制代码
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-7 21:48 , Processed in 0.078125 second(s), 18 queries , Gzip On.

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

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

    快速回复 返回顶部 返回列表
    网站统计