コミュニティ
AutoCAD - 日本語
製品テクニックや情報を共有、質問、解答したり、情報を検索など使い方は様々です。お役立てください。
キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

ads_command()からacedCommandS()への移行について

6件の返信6
解決済み
返信
メッセージ1/7
sayaka_oka
1121 件の閲覧回数, 6 件の返信

ads_command()からacedCommandS()への移行について

ads_command()では同期的な処理ができていたため、以下のように途中で命令を分けて実行できていました。 しかし、AutoCAD2017になりacedCommandS()に関数が変更されたため単純にacedCommandS()に書き換えたのですが正常に動作しませんでした。 以下の例のようにMaxが可変であるためacedCommandS()の1行では書けないのですが、どのように対処すればよいでしょうか。 ads_command(RTSTR,L"spline",RTNONE); for(i=0;i < Max;i++){ p1[i][X] = aaa*i; p1[i][Y] = bbb*i; ads_command(RTPOINT,p1[i],RTNONE); } ads_command(RTSTR,L"",RTSTR,L"",RTSTR,L"",NULL);
6件の返信6
メッセージ2/7
K.NAOI
次のアカウントへの返信: sayaka_oka

sayaka_okaさん、投稿ありがとうございます。

 

十分な技術情報にならないかもしれませんが、次のADN(Autodesk Developer Network) のブログ記事は参考になりませんか。

 

■ AutoCAD 2015 のカスタマイズ互換性
http://adndevblog.typepad.com/technology_perspective/2014/04/autocad-2015-interoperability-for-custo...

 

ファイバー削除の影響の項目に、acedCommandS()/acedCommandC() の説明があります。

 

ご確認ください。




K.NAOI
ATI Support Specialist
Global Product Support
Autodesk Ltd. Japan

メッセージ3/7
sayaka_oka
次のアカウントへの返信: K.NAOI

返信ありがとうございます。 AutoCAD2015以降、acedCommandS()/acedCommandCに移行することは理解しております。 また、基本的にはacedCommandS()でよく、PAUSEキーワードを使用してユーザ入力を待つ場合はacedCommandC()を使用することも理解しております。 今回は、ユーザ入力待ちではないので、acedCommandS()の使用になるかと思います。 以前の関数では以下のように1つの命令文を複数回に分けて書くことができました。 ads_command(RTSTR,L"spline",RTNONE); for(i=0;i< Max;i++){ p1[i][X] = aaa*i; p1[i][Y] = bbb*i; ads_command(RTPOINT,p1[i],RTNONE); } ads_command(RTSTR,L"",RTSTR,L"",RTSTR,L"",NULL); しかし、ads_command()を単純にacedCommandS()に変換するだけではではうまく動作しませんでした。 docsフォルダのreadarx.chmのacedCommand()を確認したところ、命令文を分割する(命令文が不十分な場合)と進行中のコマンドは取り消されてしまうようです。 つまり、Maxが固定であればacedCommandS(RTSTR, L"spline", RTPOINT, p1[0], RTPOINT, p1[1], RTPOINT, p1[2], RTPOINT, p1[3], RTPOINT, p1[4], RTSTR, L"", RTSTR, L"", RTSTR, L"", RTNORM); とプログラムを変更でき正常に動作するのですが、Max(p1の配列数)が可変であるのでacedCommandS()にひとつにまとめられず困っております。 どのように対処すれば以前のように動作させることができるでしょうか。 ご教授のほど、よろしくお願いいたします。
メッセージ4/7
Katsuaki.T
次のアカウントへの返信: sayaka_oka

こんにちは。その後いかがでしょう?

 

SPLINEコマンドの頂点入力など、入力項目数が可変のAutoCADのコマンドを再利用する場合は、resbuf 変数を使用して個々の入力項目を生成し、acedCmdS関数を使用する方法がご利用できる筈です。


Katsuaki Takamizawa
Technical Support Specialist
メッセージ5/7
Katsuaki.T
次のアカウントへの返信: Katsuaki.T

こちらで確認をしてみましたところ、やはり acedCmdS 関数を使用できるようです。みなさんにご参考になるように解決策といたしました。よろしくお願いします。


Katsuaki Takamizawa
Technical Support Specialist
メッセージ6/7
sayaka_oka
次のアカウントへの返信: sayaka_oka

解決しました。
ありがとうございました。
メッセージ7/7
Katsuaki.T
次のアカウントへの返信: sayaka_oka

sayaka_oka さん、ご返信ありがとうございます。

 

解決して良かったです。


Katsuaki Takamizawa
Technical Support Specialist

お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。

フォーラムに投稿