ホーム
■ Acad MDL検索システムの概要  201.5.1
mdl_kensaku.zip


    ■ はじめに  
    Advance Cad(以下Acad)には独自にモデル検索コマンドがあるようですが、膨大な(1モデルファイルに付き一個)MDIファイルが
    できてしまいます。ちょっとHDDがもったいないような気がして、直接モデルファイルからモデルタイトルを抜き出すPython Script
    「mdl_ttl_ext.py3」を作りました。
    フルパスのモデルファイル名とモデルタイトルをスペースで区切っただけのデーターベースファイル(kensaku_db_files)です。
    づっとLinux環境で運用していたので「cron」に登録して毎日夜中に仕事をしてもらってました。90000 Fileで30分ぐらいかかります。
    Microsoftが好きじゃなくて(貧乏人のひがみです)、「早くLinuxの時代が来ないかなー」と思っていたのですが、回りがWindowsの利用者
    ばかりなので、ちょっと自慢したくてWindows版を作ることにしました。実際にはLinuxのシェルコマンドも駆使したシステムだったので、
    Acadマクロの「FNC_GREP.MAC」なども作りました。(テキストファイルから特定の文字列を検索して抜き出すマクロです。)
  
    ■ 準備するもの
    1.python3.5以上
      ウチでは「anaconda」をを使ってPython環境を構築しました。「人口知能」などに興味があればお勧めらしいです。
      そんなに難しいことをしてないので、標準のPythonシステムで十分なはずです。

    2.Python script(mdl_kensaku.zipに同梱)
        mdl_ttl_ext.py3     # AcadのMDL Fileからモデルタイトルを抜き出すスクリプト
        ※ フルパスで起動すれば、保存先はどこでも構いません。ウチではファイルサーバーのx:\script\pythonに置いてあります。

    3.Acad Macro(mdl_kensaku.zipに同梱)
        KENSAKU_WIN.MAC     # モデル検索マクロ本体
        FNC_GREP.MAC        # データーベースファイルから検索文字列を探し出すファンクションマクロ
        ※ 保存先はマクロの保存フォルダーに「KITA」というサブフォルダーを作って保存してください。
          ウチでは「acad_sys」を「w:」ドライブに割り当てているので、「w:\macro/KITA/」に置いてあります。

  
    ■ マクロとスクリプトのパス設定、及び実行 
        編集前にバックアップを取っておくことをお勧めします。
          mdl_ttl_ext.py3.bak  KENSAKU_WIN.MAC.bak 等

    1.mdl_ttl_ext.py3の編集
        mdl_ttl_ext.py3を適当なエディタ(例えばメモ帳)で開いて以下の行を環境に合わせて書き換えてください。
        --------------------------------------------------------------------------------------------------
        elif platform.system() == 'Windows':
          terget_dir = 'x:/'                    # 検索対象Dir、ファイルサーバードライブが「x:/」の場合  
          fout_name = 'x:/kensaku_db_files_win' # Data base File name KENSAKU.MACと合わせてください。
        --------------------------------------------------------------------------------------------------
        ※  いきなりファイルサーバーにアクセスするのは怖い、という方は一度テストしてからにしてもいいですね。
           MDL Fileは読み込みだけなので、書き換わったり消えることはない(はず)ですが。

    2.KENSAKU_WIN.MACの編集
        同じく、以下の行を環境に合わせて書き換えてください。
        ------------------------------------------------
        grep_fn = "x:/kensaku_db_files_win";   /* mdl_ttl_ext.py3の fout_name と合わせてください。
        ------------------------------------------------

    3.mdl_ttl_ext.py3を走らせて、データーベースファイルkensaku_db_files_winを作成します。
        「Windows PowerShell」もしくは「Windowsシステムツール」「コマンドプロンプト」を起動します。
        mdl_ttl_ext.py3の保存先が x:\script\python\ なら
        ------------------------------------------------
          python x:\script\python\mdl_ttl_ext.py3
        ------------------------------------------------
        のようにフルパスでスクリプトファイル名を入力して Enter キーを押します。
        MDLファイル名、モデルタイトルが次々を表示されるので、しばらく待ちます。

    
    4.Acadを起動し、KENSAKU_WIN.MACを走らせます。
        ------------------------------------------------
        MACRO
        KITA/KENSAKU_WIN.MAC
        ------------------------------------------------
        ※ マクロを編集し直した場合は「CLA/MAC」と入力しマクロ機能を初期化する必要があります。

    5.使い方
        1)検索したい文字列を3個まで入力できます。
            2個だけの場合は3個目の入力画面で Enter キーを押してください。
            文字列が数値の場合は(例えば「300112」)明示的に「"」で囲んでください。
        2)「継続検索」という機能もあって、以前に入力した検索を再開する場合は「Space」キーを押してください。
        3) 検索でヒットしたモデルファイルが表示されるので、読み込みたいファイルのところで Enter キーを押してください。
            「.....を読み込みます」と表示されるので、もう一度 Enter。
            読み込み形態には「参照モード」と「通常モード」があって、「参照モード」はファイル名が「NONAME」となって、保存
            できません。間違って保存することを防止できます。
            「印刷して検索を継続」というモードもありますが、あまり使い道がなかったです。
        4)この検索システムはモデルタイトルが対象になるので、モデルタイトルにいろいろ追記しておくと検索にヒットします。
          例えば、「Hcrのかかったカムを探したい」といった場合「モデルタイトルに「カム Hcr」と書いてあればヒットします。

    6.Acadメニューの編集
        いちいちマクロを呼び出すのは面倒だ、という方はメニューにマクロを張りつけることをお勧めします。
        方法は当社サイトの「acad_menu」を参照してください。
        当社では以下のように、「モデル呼び出し」のサブメニューに張りつけています。
        --------------------------------------------------------------------------
        / Pagename = mdf_mdlread
        / [モデル呼出し]の修飾メニュー
        /
        Menu    [mdf_mdlread, 1, 17, c3]
          ....
          ....

        T <19, 1> "MDL検索"             !MACRO"KITA/KENSAKU_WIN"!        [none,none,c5]
          ...
          ...
        --------------------------------------------------------------------------

    7.mdl_ttl_ext.py3の定時実行
        当社では、mdl_ttl_ext.py3を常時稼働しているサーバー上で夜中に走らせて、データーベースの更新を行っています。
        ただし、環境がLinaxなので、「cron」というデーモンプログラムを使っているため、Windows環境では使えません。
        「タスクスケジューラ」を使えば定時実行が可能なようです。挑戦してみてください。