[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match
請教各位前輩:
我正在寫一個關於決定出圖比例的lisp,但遇到了一點困難。
我定義了幾個出圖比例,如10 20 30 100 200,假設今天由圖面框選範圍計算出來後,出圖比例是195,最接近200,我想取200這個數字,有什麼方法嗎…
有想過將195加入定義的串列,然後用vl-sort排序,找到195這個位置,用if前後比對看哪個值比較近再取,但似乎沒有查尋195在串列內是第幾個位置的函數?
或者各位前輩有沒有什麼比較好的做法
我正在寫一個關於決定出圖比例的lisp,但遇到了一點困難。
我定義了幾個出圖比例,如10 20 30 100 200,假設今天由圖面框選範圍計算出來後,出圖比例是195,最接近200,我想取200這個數字,有什麼方法嗎…
有想過將195加入定義的串列,然後用vl-sort排序,找到195這個位置,用if前後比對看哪個值比較近再取,但似乎沒有查尋195在串列內是第幾個位置的函數?
或者各位前輩有沒有什麼比較好的做法
millerwu91 在 2019-02-15, 12:59 作了第 1 次修改
millerwu91- 一般會員
- 文章總數 : 36
年齡 : 38
來自 : 板橋
職業 : 土木工程
愛好 : 看電影
個性 : 友善
使用年資 : 1
使用版本 : 2012
經驗值 : 3920
威望值 : 6
注冊日期 : 2014-09-16
回復: [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match
寫個簡易函數就可以達成了
_$ (listnear '(10 20 30 100 200) 195)
200
_$ (listnear '(10 20 30 100 200) 105)
100
_$ (listnear '(10 20 30 100 200) 25)
20
_$ (listnear '(10 20 30 100 200) 35)
30
_$ (listnear '(10 20 30 100 200) 45)
30
_$ (listnear '(10 20 30 100 200) 65)
30
_$ (listnear '(10 20 30 100 200) 75)
100
- 代碼:
;;;搜尋在數值列表中最接近的數值
;;;作者:naruto018
;;;時間:20190215
;;;(listnear 數值列表 搜尋數值)
;;;回傳:數值
(defun listnear ( lst num / )
(car (vl-sort lst
(function (lambda (a b)
(< (abs (- a num)) (abs (- b num)))))))
);_結束
_$ (listnear '(10 20 30 100 200) 195)
200
_$ (listnear '(10 20 30 100 200) 105)
100
_$ (listnear '(10 20 30 100 200) 25)
20
_$ (listnear '(10 20 30 100 200) 35)
30
_$ (listnear '(10 20 30 100 200) 45)
30
_$ (listnear '(10 20 30 100 200) 65)
30
_$ (listnear '(10 20 30 100 200) 75)
100
naruto018 在 2019-02-15, 12:58 作了第 1 次修改
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
回復: [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match
OOPS,感謝NARUTO018大大,功力太弱,我來研究一下這個程式碼。
millerwu91- 一般會員
- 文章總數 : 36
年齡 : 38
來自 : 板橋
職業 : 土木工程
愛好 : 看電影
個性 : 友善
使用年資 : 1
使用版本 : 2012
經驗值 : 3920
威望值 : 6
注冊日期 : 2014-09-16
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章