AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Oo-2-110 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Ia15010 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Ziao1510 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match BPl3tjj [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Uos15010 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Uos15011

[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match

向下

[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Empty [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match

發表 由 millerwu91 于 周五 15 2月 2019 - 11:30

請教各位前輩:
        我正在寫一個關於決定出圖比例的lisp,但遇到了一點困難。
 我定義了幾個出圖比例,如10 20 30 100 200,假設今天由圖面框選範圍計算出來後,出圖比例是195,最接近200,我想取200這個數字,有什麼方法嗎…
有想過將195加入定義的串列,然後用vl-sort排序,找到195這個位置,用if前後比對看哪個值比較近再取,但似乎沒有查尋195在串列內是第幾個位置的函數?
或者各位前輩有沒有什麼比較好的做法


millerwu91 在 周五 15 2月 2019 - 12:59 作了第 1 次修改
millerwu91
millerwu91
一般會員
一般會員

文章總數 : 34
年齡 : 32
來自 : 板橋
職業 : 土木工程
愛好 : 看電影
個性 : 友善
使用年資 : 1
使用版本 : 2012
經驗值 : 1896
威望值 : 6
注冊日期 : 2014-09-16
男 處女座 虎

回頂端 向下

[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Empty 回復: [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match

發表 由 naruto018 于 周五 15 2月 2019 - 12:47

寫個簡易函數就可以達成了
代碼:
;;;搜尋在數值列表中最接近的數值
;;;作者: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 在 周五 15 2月 2019 - 12:58 作了第 1 次修改
naruto018
naruto018
中級會員
中級會員

文章總數 : 147
年齡 : 27
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 1902
威望值 : 299
注冊日期 : 2016-11-29
藍鵲726號
男 摩羯座 羊

回頂端 向下

[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Empty 回復: [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match

發表 由 millerwu91 于 周五 15 2月 2019 - 12:54

OOPS,感謝NARUTO018大大,功力太弱,我來研究一下這個程式碼。
millerwu91
millerwu91
一般會員
一般會員

文章總數 : 34
年齡 : 32
來自 : 板橋
職業 : 土木工程
愛好 : 看電影
個性 : 友善
使用年資 : 1
使用版本 : 2012
經驗值 : 1896
威望值 : 6
注冊日期 : 2014-09-16
男 處女座 虎

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Uos15011 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Uos15010 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match BPl3tjj [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Ziao1510 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Ia15010 [已解決]lisp有辦法在一數字串列內,找最接近輸入值的結果嗎? 類似excel的match Oo-2-110