50769


現在、IJCAD2013からIJCAD2018へのマイグレーションを行っております。

[code]

    ads_command(RTSTR,_T(".OPEN"),RTSTR,filePath,RTNONE);
    
[/code]

上記の処理を実行すると、「コマンドが認識されません」と表示され図面のオープンに失敗します。  
IJCAD2013の時には問題なく動作していて、今回もコード自体は特に変更ない状態です。  
同じ位置で「ZOOM」を実行した場合は認識されました。

また、マイグレーション前後の環境は下記の通りです。  
[前]  
Windows7(32bit)  
IJCAD2013(32bit)

[後]  
Windows10(64bit)  
IJCAD2018(32bit)

何か回避策があればご教示いただけないでしょうか。よろしくお願いいたします。

## 追記

ご教示いただいた方法で実装したところ、望む動作になりました。  
ありがとうございます。

前)

[code]

    void dwgopen()
    {
        ...
        ads_command(RTSTR,_T(".OPEN"),RTSTR,filePath,RTNONE);
    
        //元々開いていた図面を閉じる処理
        ...
    }
    
[/code]

後)

[code]

    void openDocHelper( void *pData)
    {
        AcApDocument* pDoc = acDocManager->curDocument();
        if (acDocManager->isApplicationContext()) {
            acDocManager->appContextOpenDocument((const GCHAR *)pData);
        } else {
            acutPrintf( _T("\nドキュメント作成に失敗: %s"),(const char *)pData );
        }
    
        //元々開いていた図面を閉じる処理
        ...
    }
    
    void dwgopen()
    {
        ...
        acDocManager->executeInApplicationContext(openDocHelper, (void *)filepath);
    }
    
[/code]

また、補足ですが、本処理後に別のコマンドにてダイアログの表示時にエラーが発生するようになり、表示前に「CAcModuleResourceOverride
resourceOverride;」を追加することで解決しました。


CC BY-SA 4.0
2018-11-29T10:12:15.707
50758
2018-12-03T08:30:07.700
2018-12-03T08:30:07.700
31208
31208
question
c++ ijcad arx
ads_commandによるOPENコマンドの実行に失敗します


ads_command関数ではOPENコマンドを呼び出すことは出来ません。

図面を開くのであれば、GcApDocManager::SendStringToExcute関数でOPENコマンドを呼び出すか、  
GcApDocManager::appContextOpenDocument関数を使用して図面を開いてみてください。

また、appContextOpenDocument関数はアプリケーションコンテキストで呼び出す必要があります。


CC BY-SA 4.0
2018-11-30T01:59:29.120
50769
2018-11-30T01:59:29.120
50758
answer