AutoCADでビューポート内の文字列を検索して中心に表示するAutoLISPスクリプトの作成方法

CAD

AutoCADのレイアウト内でビューポートに表示されたモデル空間内の特定の文字列を検索し、その文字列をビューポートの中心に表示するためのAutoLISPスクリプトを作成する方法について解説します。AUTOCAD 2017を使用している方に向けて、基本的なスクリプト作成の流れを紹介します。

1. AutoLISPとは?

AutoLISPは、AutoCADのカスタマイズや自動化を行うためのプログラミング言語です。これにより、繰り返し行う作業を簡素化したり、複雑な図面作業を効率化することができます。特に、特定の操作を自動化することで作業時間の短縮が期待できます。

2. ビューポート内で文字列を検索する方法

AutoCAD内でビューポート内の特定の文字列を検索するには、まずビューポート内のモデル空間にあるテキストオブジェクトを検索するスクリプトを作成する必要があります。以下の基本的なAutoLISPコードを使って、指定した文字列を検索します。

(defun c:searchText (/ ss searchText foundObject)
  (setq searchText (getstring T "Enter text to search: "))
  (setq ss (ssget "X" '((0 . "TEXT,MTEXT"))))
  (setq foundObject nil)
  (foreach obj (vlax-invoke ss 'Item) ; Search through the selection set
    (if (wcmatch (strcase (vla-get-textstring obj)) (strcase searchText))
        (setq foundObject obj)
    )
  )
  (if foundObject
    (princ (strcat "Found: " (vla-get-textstring foundObject)))
    (princ "Text not found")
  )
)

このコードは、指定された文字列を検索し、見つかったテキストオブジェクトを返します。

3. 文字列をビューポートの中心に配置する方法

次に、見つかった文字列をビューポートの中心に表示するためには、ビューポートの座標を取得し、その中心に文字列を配置する必要があります。以下はそのための基本的なスクリプトです。

(defun c:centerText (/ foundObject vpCenter)
  (setq vpCenter (vlax-get (car (entsel)) 'Center)) ; Get the center of the viewport
  (if foundObject
    (progn
      (setq obj (vlax-get foundObject 'ObjectID))
      (vla-put-InsertionPoint foundObject vpCenter) ; Move the object to the center
      (princ (strcat "Text moved to center: " (vla-get-textstring foundObject)))
    )
    (princ "No object found to center.")
  )
)

このスクリプトは、ビューポートの中心座標を取得し、見つかったテキストオブジェクトをその位置に移動させます。

4. 注意点とヒント

スクリプトを実行する前に、必ずモデル空間内で検索したい文字列が存在していることを確認してください。また、ビューポートの座標を正確に取得するためには、ビューポートが正しく設定されている必要があります。

5. まとめ

AutoLISPを使用すると、AutoCADの作業を効率化するためにさまざまなカスタマイズが可能です。特に、ビューポート内で文字列を検索し、見つかった文字列をビューポートの中心に配置するスクリプトは、デザイン作業を迅速に進めるために有用です。上記のサンプルコードを参考にして、自分のニーズに合ったスクリプトを作成してみましょう。

コメント

タイトルとURLをコピーしました