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

[求問]判斷line到shape的最短距離

[复制链接]
  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    跳转到指定楼层
    1#
     楼主| 发表于 2024-11-4 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    各位前輩好,
    我正在編寫skill 其通能:當Line碰到shape時,自動退縮1mil.

    我目前可以想到的方法是
    ---------------------------------------------------------------------------------------------------
    檢查:  
       1.axlPathSegGetEndPoint 取得Line的端點。
       2.axlGeoPointInShape  檢查Line的端點有沒有在shape內。
    退縮: axlPolyFormDB將line 轉成 polygon , 然後透過axlPolyExpand 來縮小1mil

    可是這個條件會卡在,如果我line與shape沒有重合,但距離卻小於1mil時,我無法把line進行cut.
    請問各位專家有解嗎?

    感激不盡

  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    推荐
    发表于 2024-11-4 18:12 | 只看该作者
    计算距离可以用axlAirGap来算。
    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    推荐
    发表于 2024-11-7 10:15 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情

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

    [LV.7]常住居民III

    4#
    发表于 2024-11-4 18:39 | 只看该作者
    如果没有重合,可以用axlAirGap判断下距离
    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    6#
    发表于 2024-11-5 02:44 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    7#
     楼主| 发表于 2024-11-5 13:57 | 只看该作者
    db-_- 发表于 2024-11-4 18:12
    计算距离可以用axlAirGap来算。

    感謝,這個剛好也可以檢查有沒有line碰到shape , 因為碰到的話距離會為0。
    接著要來處理大魔王,怎麼樣cut 掉碰到的線段了 ~目前還沒想法

  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    8#
     楼主| 发表于 2024-11-5 13:58 | 只看该作者
    w_w 发表于 2024-11-4 18:39
    如果没有重合,可以用axlAirGap判断下距离

    感謝,這個剛好也可以檢查有沒有line碰到shape , 因為碰到的話距離會為0。
    接著要來處理大魔王,怎麼樣cut 掉碰到的線段了 ~目前還沒想法


  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    9#
     楼主| 发表于 2024-11-5 14:08 | 只看该作者
    aarom 发表于 2024-11-5 02:44
    盲點:
    1.線 與 SHAPE 重疊長度, 退1mil 可能非你所求.

    本帖最后由 aarom 于 2024-11-5 02:56 编辑


    大師果然就是可以想得比較多比較遠 !!感謝

    盲點:
    1.線 與 SHAPE 重疊長度, 退1mil 可能非你所求.
    ->沒錯,有可能重疊長度是2mil ,退了1mil 還是重疊....

    2.是否為 線 與 SHAPE "外框" ,  退1mil.  或 無論 線 與 SHAPE 重疊長度, 只要退1mil.
    兩種做法:
    ->1.我的想法是線不能碰到shape 外框,所以一旦碰到就是繼續退1mil 直到不再重疊;
    ->2.這個做法就非常考驗我常常不及格的數學,我是把算把line 轉成長方形的polygon , 計算他與shape重疊面積。
       根據: 面積/line寬=干涉的長度x。
       line的Length - x -1mil 就會是我理想的值

    但是又有問題,我怎麼知道line會從哪邊開始縮短....


    3.連接 屬線(飛線, 代表未連接.) 的  產生, 若在框外退1mil."可能"會 產生, 若在框內退1mil , 就產生機率很低.
    ->這裡我倒不擔心,主要是給鍵零件的同事,所以應該不用擔心這個問題


  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    10#
    发表于 2024-11-5 14:59 | 只看该作者
    虽然有点没太明白楼主的目的和思路,但我尽量试着去理解了下。

    是不是可以这么做?
    1、line转poly,shape转poly并扩大1mil
    2、line的poly和shape扩大了1mil的poly进行andnot
    3、如果line的poly和运算结果的poly面积一样大,表示没有接触,不做处理
    4、如果line的poly比运算结果的poly面积大,表示有接触,将原line删除,绘制新的line
  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    11#
     楼主| 发表于 2024-11-6 13:45 | 只看该作者
    db-_- 发表于 2024-11-5 14:59
    虽然有点没太明白楼主的目的和思路,但我尽量试着去理解了下。

    是不是可以这么做?

    大大理解正確。看來我語言表達還有待進步 Orz
    我現在會實作看哪個寫法比較省程式碼 ,非常謝謝您提供另一種解決方法
  • TA的每日心情
    无聊
    2025-5-16 15:22
  • 签到天数: 34 天

    [LV.5]常住居民I

    12#
     楼主| 发表于 2024-11-15 14:26 | 只看该作者
    紀錄一下,這個主要實作應用於當Line 壓到 shape時,自動退縮。
    我透過axlPolyOperation取得兩個物件的andnot ,
    然後根據非重疊部分來取得polygon頂點座標,進行一系列的計算,用上了axlMXYSub ,axlMUniVector


    补充内容 (2025-1-13 11:34):
    確實目前已17.4可以支援 axlDeleteByRectangle
    用茅台大的做法非常的節省程式碼,可讀性也很高!!
    但16.6就很悲劇QQ 。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-20 12:18 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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