ひろぐりのブログ

ひろぐりのブログ

**************

FPad5のタッチ不良ですが、グラフィック設定を変えても再発しますね。

設定変更前にパネル外したので、しばらく問題ないのがどちらの効果によるものかはわかりません。

 

12月までは問題でなかったので、乾燥による静電気の影響と考えています。

アルミテープやアルミ箔はさんだりいろいろしていたのですが、これというパターンが見つかりませんね・・・

 

パネル外すとしばらく発生しないので、シールドが効果ありそうなのですが・・・

乾燥する季節になり、Fpad5のタッチ不良が再発しています。

 

静電気の処理が甘いんだろうなと思っていたのですが、グラフィックドライバ不良という記事も見かけますね。


本日設定変更してみました。様子見になります。

 

 

・設定 →ビルド番号を連打し、開発者向けオプションを表示させる

・設定→システム→開発者向けオプション→グラフィックスドライバの設定

・アプリ単位で「デフォルト」「システムのグラフィックスドライバ」

で切り替えるそうですが、デフォルトが何を指すんでしょう・・・

とりあえず、「デフォルト」だったので「システムの・・・」に変更してみました。

 

Windows UI操作用Driver として、WinAppDriver というものをMS社が提供していたようです。


Win10 VS2017用で、更新はされていないのだろうか・・・

 

自宅に帰ったタイミングで調べてみよう。

 

 

各種AIにAutoCAD VBAのコードを作成してみてもらったところ、与えるプロンプト次第になるのだろうが、かなりの情報を与えないと希望する物は作れないと判断しました。


CADの場合、まず利用設定やルールを作成しているがそれらを与えない場合は作成されたコードをルールに合わせて修正する必要がある。

細かく指示を出したり、修正するスキルがなければまともなコマンドは作れないだろう。

 

そもそもどのようなコマンドをどのようなアプローチでコード化するか考えることができなければ指示出しもできないでしょう。

 

企業ライセンスのCopilotはログインしている状態で与える情報をドメイン外へは出さないらしい。 情報を与え続ければ成長してくれるかな・・・

人に教えるよりも楽ですね。

AIでマクロが書けると言うのを見かけますが、ObjectARXはどうなのだろう・・・

ということでGoogle検索で作ってもらってみた。
GoogleなのでGeminiになるのかな?

 

・VisualStudio2022にObjectARXWizard2026を設定

・テンプレートによる開始状態でエラーが出ていないことを確認

・Googleさんに 「ObjectARXで全てのブロック定義の透過性をByBlockにするコードを教えて」 と質問

・表示されたコードのincludeとVoidを除いたコード部分をテンプレート作成したコードの「Put your command code here」以下にペースト

 

ビルドしてエラーなし。 読み込ませて実行したところ問題なく動きました。

 

自作のVBAマクロのほうでは全てのオブジェクトの透過性にしていたので、次にそのようにGoogleさんに頼んだところ、

#include "acdbtrans.h"
が必要なコードを表示してくれました。

acdbtrans.h はSDKに含まれていないのでエラーになりました。

 残念・・・・

 

変なコードを提案されてCADがクラッシュする恐れがあることは承知の上で試しています。

サンプルコードが欲しい時の参考(それ以上)になりますね。

上記の動かないコードはバージョンによる変更ですかね・・・

Web検索結果は新旧の判断が困難なところがあります。

バージョンを指定するなど条件付けで改善するか、いろいろ試してみたいと思います。

 

著作権は・・・どうなるんでしょう

 

マクロにしても、最低限の使い方だけ覚えてAIに作ってもらえるようになれば、外注依頼する必要がなくなりますね。
後進育成を悩んでいましたが・・・・時代が何とかしてくれそうです。

C#アプリのウィンドウハンドル取得について考えてみる。


コントロールを配置しただけのフォームを作成し、PowerAutomateのレコーダーにてEDitBOXに値を入力してみる。

Nameプロパティで特定している模様

 

Googleさんに質問


らしいです。

Autodesk_AutoCAD_2026_VBA_Enabler.exe を7-Zipで覗いてみたところ、VBEのバージョンは7.1.11.18でした。

 

手元に残っていた2023,2025用も同じでした。

動作確認は7.1.11.18で行われているということでしょう・・・

バグの状況から動作確認しているのか疑問ですが。


EXCEL VBEバージョン 7.1.11.53 というのは現時点でのMicrosoft365版です。

 

AddressOf を使用しているWinAPIで利用しているのは

EnumWindows と EnumChildWindows です。

生産管理アプリの特定ウィンドウハンドル検索に使用していますが、新しいWinAPIが増えていないか調べないとと思っています。


生産管理アプリが ウィンドウのクラス名から想像するとC#アプリなのですが、キャプションとクラス名でウィンドウを特定できません。

親ハンドルから何番目の子ハンドルという調べ方をしています。

PowerAutomateではIDを使用しているようなので、IDを取得、ハンドルを取得したいところです。

AutoCAD VBAからデータベースUIを操作して自動部品登録のマクロを作成したが動作に問題がある。

・PCを起動、CAD起動、登録マクロ実行後しばらくは動く。

・PCを起動、CAD起動。作図作業を2,3時間行った後に登録マクロを実行させるとエラー35010が表示され動かない。

・エラーは登録処理を書いたモジュールを呼ぶ際に発生。

・Functionで引数にて情報を渡しているが、グローバル変数に変更、Subで呼び出してもエラー発生。

・エラーを回避するにはPC再起動が必要

 

調べているうちに、AddressOf を使用したWinAPIを使用する場合、VBE7.dllのバージョンが 7.1.11.33 より古いものはバグ持ちという書き込みを見つけました。

 

AutoCAD、SOLIDWORKS は 7.1.11.18

EXCELは7.1.11.53 であった。


EXCELがインストールしているVBA関連ファイル5個を他のアプリが使用するVBA関連ファイルフォルダにコピーしたところ問題が解決した感じです。 (まだ一日しか様子を見ていません。)

 

dllファイルをコピーでよいのか?

regsvr32で解除、再登録が必要かとも考えましたが、レジストリ登録情報の内容から考えるとレジストリ項目に対してパスしかないのでコピーでよさそう。

 

EXCEL用はC:\ProgramFiles\Microsoft Office\root\vfs\

ProgramFilesCommonX64\Microsoft Shared\VBA\VBA7.1 下の

VBE7.dll、VBEUI.dll、VBEUIRES.dll

さらに1041フォルダ内の

VBE7INTL.dll、VBEUIINT.dll


これら5ファイルを

C:\Program Files\Common Files\microsoft shared\VBA\VBA7.1

下の同一ファイルと置き換えです。

 

VBE7.dllだけでよさそうですが、バージョンが上がっているようだったので5ファイル置き換えました。

 

 

7.1.11.18をインストールしたアプリが不明です。

AutoCAD2026,SOLIDWORKS2022SP5 のどちらかなのかなと思いましたが、32bitACCESSのためにWindows10のまま放置状態のPCがあるのですが、そのPCは 38?ぐらいのバージョンでした。 AutoCADは2022,2023、SWは同一。

 

もう少し情報収集します。

 

 

 

AutoCAD VBA Enabler ですが、こっそりとアップデートしていた模様・・・

 

今までインストールしていたのは

AcVba.arxの

ファイルバージョン:25.1.60

更新日時: 2025/02/05

のものでした。

 

なんとなく先ほどダウンロード、して入れなおしたところ

ファイルバージョン:25.1.122.0

更新日時:2025/08/07

になってます。

 

不具合治っているのかな?

しばらく使ってみないとわからないですね

 

別途インストールだからなのか? AutodeskAccessへの通知はありませんね。

 

2025用はインストールファイル(.exe)のタイムスタンプが

2024/1/31なので変更されていないようです。

 

 

昔はOfficeの後からAutoCADはインストールするように指定されていましたが今は影響ないんでしょうかねぇ。
dllが置き換えられることによる動作不良問題は過去のものとしてよいのだろうか?

 

久々に他のアプリへ文字列を送り込んで値取得するマクロを作っています。

 

・AutoCAD上で構想図を作成しながら部品名称と図面サイズを決定

・EXCEL部品台帳のサイズ別シートの空きを探して部品名を書き込み図面番号を取得、AutoCAD側へ返す

・AutoCADから生産管理システムに部品名と図面番号、材質と処理、コメント情報を入力させ、発行された部品コードを取得

・EXCEL台帳にコード記入

・AutoCAD上に部品コード、名称、図番、材質、処理をテキスト書き込み。

 

EXCELはVBA積んでるので良いのですが、生産管理システムに対しては別アプリのテキストボックスやボタンハンドルを取得して外部操作させています。

 

基本はできてマルチモニター対応やコードを見やすく作り変えているところなのですがWinAPI使いまくっているせいなのか、AutoCAD VBEからモジュールが突然消える現象が発生しています。

こまめな保存が必須状況・・・・

 

一度目は表示がおかしくなっただけなのか、モジュールが解放されたのか分からず、いったん終了の際に上書きしたところ・・・

消えてしまいました。 3hほど無駄にしました・・・

 

2026のVBEは完成度低いですね。。。 Sendcommandもおかしいし・・・

 

最近は外部操作アプリをRPAと言ってますがいろいろと販売されていますね。

MSのPowerAutomateを触ってみたところウィンドウをつかんで操作しているようでした。

メールできた図面依頼やCAD設計途中にRPA立ち上げて操作が必要なんて馬鹿げてますよね。 OutlookやCADから実行できないと意味ないやん。 

というわけでWinAPIを久しぶりに使っています。