「Acet-list-remove-duplicate-points」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成:「{{AutoLISP}} ; 構文 : (acet-list-remove-duplicates-points ''datalist'' ''fuz'' ) ; 機能 : datalist から許容差 fuz を考慮した同じ値を取り除いたリストを返す。 ; 引数 :* datalist … 評価するリスト :* fuz … 許容誤差 ; 戻り値 : 重複が取り除かれた datalist のリスト。lst が NIL の場合は NIL を返す。 ===MEMO=== * 除去はリスト値の最初から処理されるのでリスト値の順番に…」)
 
編集の要約なし
5行目: 5行目:


; 機能
; 機能
: datalist から許容差 fuz を考慮した同じ値を取り除いたリストを返す。
: 座標点リスト datalist から許容差 fuz を考慮した重複するエントリーをすべて削除してリストを返す。




; 引数
; 引数
:* datalist … 評価するリスト
:* datalist … 座標点リスト
:* fuz … 許容誤差
:* fuz … 許容誤差




; 戻り値
; 戻り値
: 重複が取り除かれた datalist のリスト。lst が NIL の場合は NIL を返す。
: 重複が取り除かれた datalist のリスト。datalist が NIL の場合は NIL を返す。




===MEMO===
===MEMO===
* 除去はリスト値の最初から処理されるのでリスト値の順番により異なる結果になりえる。
* 除去はリスト値の最初から処理されるので fuz 指定時はリスト値の順番により異なる結果になりえる。
* 2D点と3D点は別物として扱われる




; サンプル
; サンプル
<pre class="brush:autolisp;">
<pre class="brush:autolisp;">
(acet-list-remove-duplicates '(1 2 3 4 3 2 4 5) 0)
(acet-list-remove-duplicate-points '((0 0) (0 0 0) (10.2 10) (10.2 10) (10.2 10)) 0)
(1 2 3 4 5) ; リスト内の重複値が除去される(後ろが削られる)
((0 0) (0 0 0) (10.2 10))
; 2D点と3D点は別物として扱われるので 0,0 と 0,0,0 が残ってる


(acet-list-remove-duplicates  '(1.1 1.2 1.3 1.4 1.31 2.0 4.0 5.5) 0)
(acet-list-remove-duplicate-points nil nil)
(1.1 1.2 1.3 1.4 1.31 2.0 4.0 5.5)
nil


(gz:deduplicate '(1 2 3 3 4 3 2 4 5))
(acet-list-remove-duplicate-points '((0 0) (0 0.1) (10.0 10.0) (10.0 10.1) (10.1 10.0) (10.1 10.1) (10.2 10.1) (9.8 10.1)) 0.1)
(1.1 1.2 1.3 1.4 1.31 2.0 4.0 5.5) ; fuz は無いので完全に同じもの以外は残る acet-list-remove-duplicatesの Fuz=0 と同じ
((0 0) (10.0 10.0) (10.2 10.1) (9.8 10.1))
; すべての座標点がfuzの範囲内なら除去される


 
(acet-list-remove-duplicate-points '((0 0) (0 0.1) (10.0 10.1) (10.0 10.0) (10.1 10.0) (10.1 10.1) (10.2 10.1) (9.8 10.1)) 0.1)
; fuz 指定でリストの順番により消える値が異なる例
((0 0) (10.0 10.1) (10.2 10.1) (9.8 10.1))
(acet-list-remove-duplicates '(1.1 1.2 1.3 1.4 1.31 2.0 4.0 5.5) 0.1)
; (10.0 10.0) と (10.0 10.1) の順番違いで残る値が変わってる
(1.1 1.3 2.0 4.0 5.5)
; 1.2 1.4 1.31 が除去される 1.3 は 1.2 が除去された後なので除去されない
 
(acet-list-remove-duplicates  '(1.3 1.2 1.1 1.4 1.31 2.0 4.0 5.5) 0.1)
(1.3 1.2 2.0 4.0 5.5)  
; 1.1 1.4 1.31 が除去される 1.3 は 1.2 が除去されていないので残り 1.1 が消える


</pre>
</pre>

2025年8月10日 (日) 05:28時点における版

構文
(acet-list-remove-duplicates-points datalist fuz )


機能
座標点リスト datalist から許容差 fuz を考慮した重複するエントリーをすべて削除してリストを返す。


引数
  • datalist … 座標点リスト
  • fuz … 許容誤差


戻り値
重複が取り除かれた datalist のリスト。datalist が NIL の場合は NIL を返す。


MEMO

  • 除去はリスト値の最初から処理されるので fuz 指定時はリスト値の順番により異なる結果になりえる。
  • 2D点と3D点は別物として扱われる


サンプル
(acet-list-remove-duplicate-points  '((0 0) (0 0 0) (10.2 10) (10.2 10) (10.2 10)) 0)
((0 0) (0 0 0) (10.2 10))
; 2D点と3D点は別物として扱われるので 0,0 と 0,0,0 が残ってる

(acet-list-remove-duplicate-points nil nil)
nil

(acet-list-remove-duplicate-points  '((0 0) (0 0.1) (10.0 10.0) (10.0 10.1) (10.1 10.0) (10.1 10.1) (10.2 10.1) (9.8 10.1)) 0.1)
((0 0) (10.0 10.0) (10.2 10.1) (9.8 10.1))
; すべての座標点がfuzの範囲内なら除去される

(acet-list-remove-duplicate-points  '((0 0) (0 0.1) (10.0 10.1) (10.0 10.0) (10.1 10.0) (10.1 10.1) (10.2 10.1) (9.8 10.1)) 0.1)
((0 0) (10.0 10.1) (10.2 10.1) (9.8 10.1))
; (10.0 10.0) と (10.0 10.1) の順番違いで残る値が変わってる


関連事項