「Acet-geom-self-intersect」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成:「{{AutoLISP}} ;構文 :(acet-geom-self-intersect ''ename1'' ''ename2'' ''flags'' ) ;機能 :エンティティename1とentity2のすべての交点を返す。 ;引数 :*ename1 … エンティティ名。 :*ename2 … エンティティ名。 :*flags … ビットコードのフラグ。 ::*bit 0 (1) : エンティティ1 を仮想的に拡張する。 ::*bit 1 (2) : エンティティ2 を仮想的に拡張する。 ;戻り値 :ename1とentity2のすべて…」)
 
編集の要約なし
 
1行目: 1行目:
{{AutoLISP}}
{{AutoLISP}}
;構文
;構文
:(acet-geom-self-intersect ''ename1''  ''ename2''  ''flags'' )
:(acet-geom-self-intersect ''pointlist''  ''flag'' )




;機能
;機能
:エンティティename1とentity2のすべての交点を返す。
: pointlist で定義されたポリゴン点列の自己交差をチェックする。




;引数
;引数
:*ename1 … エンティティ名。
:* pointlist… ポリゴン点列のリスト
:*ename2 … エンティティ名。
:* flag フラグ。(無視されるらしいののでnilで良い)
:*flags ビットコードのフラグ。
::*bit 0 (1) : エンティティ1 を仮想的に拡張する。
::*bit 1 (2) : エンティティ2 を仮想的に拡張する。




;戻り値
;戻り値
:ename1とentity2のすべての交点リスト、交点がない場合は nil
: 最初に見つかった交点を返すか、ポリゴンが自己交差しない場合はNILを返す。




;サンプル
;サンプル
<pre class="brush:autolisp;">
<pre class="brush:autolisp;">
(acet-geom-intersectwith (car (entsel)) (car (entsel)) nil) ; 交点なしの図形を選択
(acet-geom-self-intersect '((0 0) (10 10) (10 0)) nil)
nil
nil


(acet-geom-intersectwith (car (entsel)) (car (entsel)) nil) ; 交点が1か所ある図形を選択
(acet-geom-self-intersect '((0 0) (10 10) (10 0) (0 10)) nil)
((574.668758604656 190.900010747012 0.0))
(5.0 5.0)


(acet-geom-self-intersect '((0 0) (10 10) (10 0) (0 10) (5 0)) nil)
(5.0 5.0)


(acet-geom-intersectwith (car (entsel)) (car (entsel)) nil) ; 交点が2か所ある図形を選択
; こんな感じで、自己交差の有無を判定できる
((612.617878240543 123.615608493559 0.0) (574.668758604656 164.052088440882 0.0))
(setq vtx (acet-pline-segment-list (entget (car (entsel)))))
(if (acet-geom-self-intersect (car vtx) nil))
  (princ "交差しとるで")
  (princ "交差しとらんで")
)
 
</pre>


(acet-geom-intersectwith (car (entsel))  (car (entsel)) nil) ; ソリッドはエッジとの交点は拾ってくれるが面上の交点は拾われない。
((429.887694547308 229.662354663656 12.4850445326728) (441.338668646996 205.350930437544 12.4850445326728))


(acet-geom-intersectwith (car (entsel))  (car (entsel)) nil) ; ソリッドはエッジとの交点は拾ってくれるが面上の交点は拾われない。
((421.888449199183 217.035665639247 12.4850445326728) (432.358100086416 205.350930437544 12.4850445326728) (432.358100086416 205.350930437544 0.0) (421.888449199183 217.035665639247 0.0))x
</pre>
[[ファイル:Acet-geom-intersectwithのサンプル.png|中央|サムネイル|左は交点を拾うが、右は交点なしになる。]]
-----
-----
関連事項
関連事項

2025年8月12日 (火) 09:24時点における最新版

構文
(acet-geom-self-intersect pointlist flag )


機能
pointlist で定義されたポリゴン点列の自己交差をチェックする。


引数
  • pointlist… ポリゴン点列のリスト
  • flag … フラグ。(無視されるらしいののでnilで良い)


戻り値
最初に見つかった交点を返すか、ポリゴンが自己交差しない場合はNILを返す。


サンプル
(acet-geom-self-intersect '((0 0) (10 10) (10 0)) nil)
nil

(acet-geom-self-intersect '((0 0) (10 10) (10 0) (0 10)) nil)
(5.0 5.0)

(acet-geom-self-intersect '((0 0) (10 10) (10 0) (0 10) (5 0)) nil)
(5.0 5.0)

; こんな感じで、自己交差の有無を判定できる
(setq vtx (acet-pline-segment-list (entget (car (entsel)))))
(if (acet-geom-self-intersect (car vtx) nil))
  (princ "交差しとるで")
  (princ "交差しとらんで")
)



関連事項