コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
GizmoLab 関連
オンラインショップ
CAD&CGブログ
YouTube
GitHub
CAD 系
GizmoTools
AutoLISP
Visual LISP
BricsCADのLISP
GzLib
DCL
OpenDCL
DWG
DXF
CADのコマンド一覧
システム変数
図形の種類
Ver別サポートAPI
CAD用語集
メモ
newLISP
CommonLISP
Script-Fu
Inno setup
JavaScript
ANDROID
Windowsでのファイルハッシュ確認
Prolog
Python
Clojure
Electron
フォント
数学メモ
イメージサイズとメモリ量
blender
Processwire
Win10,11メモ
IIJmio
mediawiki資料
ヘルプ
検索
検索
表示
ログイン
個人用ツール
ログイン
選択フィルタのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
選択フィルタ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
ssget 等で特定の条件を満たすオブジェクトのみ選択をする場合、フィルタ リストの引数を記述する。 例えば、特定の画層上のオブジェクトや、特定のタイプのオブジェクト、特定の色のオブジェクトオブジェクト、指定以上のサイズのオブジェクトというような選択セットを取得できる。 フィルタリストは、entget が返すリストと同じ形式の DXF グループ コードを使用した連想リストで、図形のどの特性(1 つまたは複数)を調べさせて、どの値と一致していなければならないかを指定する。(グループ コードのリストは、『DXF リファレンス』を参照)。 ssget 関数は、図形名(グループ -1)、ハンドル(グループ 5)、および拡張データ(Xdata)コード(1000 以上のグループ)以外のすべてのグループ コードを認識する。フィルタリスト引数に無効なグループ コードを指定した場合は、ssget により無視される。拡張データ(Xdata)を持つオブジェクトを検索するには、コード -3 を使用する。 以下は、ssget でのフィルタリストの使用例。 <pre class="brush: autolisp;"> ; ユーザにオブジェクト選択を要求し、文字オブジェクトだけを選択セットに追加。 (setq ss1 (ssget '((0 . "TEXT")))) ; ユーザにオブジェクト選択を要求し、文字とマルチテキストオブジェクトだけを選択セットに追加。 (setq ss1 (ssget '((0 . "TEXT,MTEXT")))) ; 直前に作成された選択セットから線分を含む選択セットを作成。 (setq ss1 (ssget "P" '((0 . "LINE")))) ; 画層"寸法"上にある、窓内のすべてのオブジェクトの選択セットを作成。 (setq ss1 (ssget "W" pt1 pt2 '((8 . "寸法"))) ) ; データベース内の円オブジェクトの選択セットを作成。 (setq ss1 (ssget "X" '((0 . "CIRCLE")))) ; 暗黙の選択セット(PICKFIRST が有効なときに選択されたオブジェクト)に含まれるすべての青(5番)の線分オブジェクトの選択セットを作成。 ; 注意:このフィルタでは、ByLayer または ByBlock の色を持つ線分は選択されない。 (ssget "I" '((0 . "LINE") (62 . 5))) ; 半径(グループ コード 40)が 2.0 以上 のすべての円の選択セットを作成。 (ssget "X" '((0 . "CIRCLE") (-4 . ">=") (40 . 2.0))) ; APPNAMEアプリケーションの拡張データを含む全ての円オブジェクトの選択セットを作成。 (ssget "X" '((0 . "CIRCLE") (-3 ("APPNAME")))) ; APP1またはAPP2 アプリケーションの拡張データを含む全ての円オブジェクトを選択 (ssget "X" '((0 . "CIRCLE") (-3 ("APP1")("APP2")))) (ssget "X" '((0 . "CIRCLE") (-3 ("APP[12]")))) ; 同、ワイルドカードを使用した例 (ssget "X" '((0 . "CIRCLE") (-3 ("APP1,APP2")))) ; 同、ワイルドカードを使用した例 ; 匿名ブロック *U2 の選択セットを作成。ワイルドカードを使用した例 (ssget "X" '((2 . "`*U2"))) </pre> == 選択セット操作の例 == * 現在の図面の最初と最後の図形を含む選択セットを作成する。 <pre class="brush: autolisp;"> (setq fname (entnext)) ; 図面内の最初の図形を取得。 (setq lname (entlast)) ; 図面内の最後の図形を取得。 (if (not fname) (princ "¥n図面内に図形はありません。")") (progn (setq ourset (ssadd fname)) ; 最初の図形の選択セットを作成。 (ssadd lname ourset) ; 選択セットに最後の図形を追加。 ) ) </pre> * この例は、1 つの図形しかなくても正しく実行される(fname とlnameは同じ値になる)。既に選択セットに含まれている図形名を ssadd に渡しても、その要求は無視され、エラーにはならない。 * 選択セットの最後の図形名を取得する <pre class="brush: autolisp;"> (setq sset (ssget)) ; 選択セットを作成するようユーザに要求。 (setq ent1 (ssname sset 0)) ; sset 内の最初の図形の名前を取得。 (setq ent4 (ssname sset 3)) ; sset 内の 4 番目の図形の名前を取得。 (if (not ent4) (princ "¥n最低 4 つの図形を選択しなければなりません。 ")") ) (setq ilast (sslength sset)) ; sset 内の最後の図形のインデックスを取得し、sset 内の最後の図形の名前を取得する (setq lastent (ssname sset (1- ilast))) </pre> * 選択セットへの図形追加で、選択セットに図形が重複して含まれることはない。同じ図形を複数回追加しても、2 回目以降の追加は無視される。したがって、sslength は、指定された選択セット内の図形の正確な数を返す。 [[Category:AutoLISP]]
選択フィルタ
に戻る。
検索
検索
選択フィルタのソースを表示
話題を追加