過去ログ

                                Page     314
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼図面情報コピーとタグジャンプ  mirror 17/3/22(水) 19:33
   ┗Re:図面情報コピーとタグジャンプ  mirror 17/3/23(木) 12:52
      ┣Re:図面情報コピーとタグジャンプ  いっち 17/3/26(日) 19:09
      ┃  ┗Re:図面情報コピーとタグジャンプ  いっち 17/3/26(日) 19:32
      ┣Re:図面情報コピーとタグジャンプ  いっち 17/3/26(日) 23:55
      ┃  ┗Re:図面情報コピーとタグジャンプ  mirror 17/3/27(月) 7:05
      ┃     ┗Re:図面情報コピーとタグジャンプ  いっち 17/3/27(月) 12:56
      ┗Re:図面情報コピーとタグジャンプ  いっち 17/4/1(土) 5:24
         ┗Re:図面情報コピーとタグジャンプ  mirror 17/4/1(土) 7:25
            ┗Re:図面情報コピーとタグジャンプ  いっち 17/4/1(土) 9:55
               ┗Re:図面情報コピーとタグジャンプ  mirror 17/4/1(土) 11:16
                  ┗Re:図面情報コピーとタグジャンプ  いっち 17/4/1(土) 14:48

 ───────────────────────────────────────
 ■題名 : 図面情報コピーとタグジャンプ
 ■名前 : mirror
 ■日付 : 17/3/22(水) 19:33
 -------------------------------------------------------------------------
   Jw_cadのタグジャンプは、同一インスタンスを使う仕様ですが
図面情報コピーで取得できる文字列は、起動オプションとして利用可能です
従って、別のインスタンスを起動(多重起動)して開くことも可能ですので
同一図面内の図面参照についても、違ったアプローチが可能になります
https://youtu.be/Uhsh99mGIsI

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : mirror  ■日付 : 17/3/23(木) 12:52  -------------------------------------------------------------------------
   図面情報コピーやタグジャンプを、あまり使われていない場合には
判り難いと思われますので、サンプルの動作説明を書き込んでおきます

ツールのタスクトレイアイコンをマウスオーバーして表示されるメニューは
図面情報文字列(クリップボードデータ)を、履歴して列挙していきます
履歴しようとするデータが、既に履歴されている場合は排除します
従って、Jw_cadでの表示を変更して、図面情報コピーを行うと
その図面情報文字列を、リストにして保持するようになっています

サンプルでは
レイヤファイル(*.jwl)を適用して、レイヤ表示を変更し画面拡大したあと
(この時に、印刷範囲を変更しておくと、印刷範囲も変更が適用されます)
マクロリストを表示して、図面情報コピーを実行し履歴を確認しています

メニューから、図面情報文字列リスト内を選択すると
新たに、Jw_cadに起動オプションとして上記文字列を与えて起動しています
今回の動作は、同一ファイルを、表示を変更して多重起動しましたが
別ファイルであっても、同様に動作させることができます

ツールでなくても、図面情報文字列を取得し、txtファイルなどのリストにし
そのリストを利用して、Jw_cadを多重起動できるようにしておけば
Windows 10の仮想デスクトップの切り替えを、組み合わせて使うことで
他図面・参照時の表示を、違ったアプローチで利用できるようになります

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/3/26(日) 19:09  -------------------------------------------------------------------------
   ▼mirrorさん:
>ツールのタスクトレイアイコンをマウスオーバーして表示されるメニューは
>図面情報文字列(クリップボードデータ)を、履歴して列挙していきます

不要になった履歴を消すのは、どのようにすれば良いですか?
たとえば、削除した図面の履歴でも残ったままとなるようですが。

Exmenuのフォルダー内とかにリストが出来る訳では無いようですし。

機能そのものは便利そうですが、消し方も知りたいです。

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/3/26(日) 19:32  -------------------------------------------------------------------------
   ▼いっちさん:

>機能そのものは便利そうですが、消し方も知りたいです。

Exmenuの再起動では消えないようですが、Windowsの再起動を行うと消えました。

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/3/26(日) 23:55  -------------------------------------------------------------------------
   ▼mirrorさん:

しばらく考えこんでしまいましたが、ようやくExmenu037hの

sub:3 印刷範囲指定付 図面情報コピー,sub:28,sub:29
sub:28 印刷範囲指定,cmd:99,btn:OK,until:確認,(ここに各種設定),btn:範囲変更,until:指示,until:確認,(btn:印刷),cmd:1
sub:29 図面情報コピー,cmd:72, --空白以下は列挙しません
sub:37 印刷ヘルパー,cmd:132

辺りの理解が出来て来ました。

> ツールのタスクトレイアイコンをマウスオーバーして表示されるメニューは
> 図面情報文字列(クリップボードデータ)を、履歴して列挙していきます

の意図するところが、解って来たような気がします。

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : mirror  ■日付 : 17/3/27(月) 7:05  -------------------------------------------------------------------------
   ▼いっちさん:
ご利用ありがとうございます

Jw_cadの、データ読み込み起動時の画面を指定する方法で
一番簡単なのは、図面情報コピーで得られる図面情報文字列です
これは、表示範囲記憶・印刷範囲記録された起動オプション文字列で
且つ、起動時にその画面で開けるという特徴があります

建築などでは、多工種の図面を一度に開いて確認したい場合がありますので
図面を開きレイヤ操作して拡大表示する、手間を省くのに使う想定です

日々変更され、追加修正される施工図などを扱う場合には
リスト保存などしたものを使うと、ミスを誘発する可能性があると思い
敢えて
>ツールでなくても、図面情報文字列を取得し、txtファイルなどのリストにし
>そのリストを利用して、Jw_cadを多重起動できるようにしておけば
と、考えています

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/3/27(月) 12:56  -------------------------------------------------------------------------
   ▼mirrorさん:

お返事ありがとうございます。

> 敢えて
> >ツールでなくても、図面情報文字列を取得し、txtファイルなどのリストにし
> >そのリストを利用して、Jw_cadを多重起動できるようにしておけば
> と、考えています

クリップボードへコピーされた図面情報を、テキストファイルにして、
普段利用しているエディターに組み込んだマクロでJw_cadを開けば良いですね。
(というか、mirrorさんのレスを見て、サクラエディター用を作りました。)

そうでは無い場合にも、c:\jwwには、sample.xlsが入っていますし。

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/4/1(土) 5:24  -------------------------------------------------------------------------
   mirrorさんの言われている
>ツールでなくても、図面情報文字列を取得し、
の意味を、考えてみました。

mirrorさんが公開されているExmenuを用いない場合でも、
例えば、汎用ツールであるUWSCなどを用いて、
図面情報を取得すれば良い。
と言われているように、受け取れます。

その為、Exmenuの
> sub:3 印刷範囲指定付 図面情報コピー,sub:28,sub:29
> sub:28 印刷範囲指定,cmd:99,btn:OK,until:確認,(ここに各種設定),btn:範囲変更,until:指示,until:確認,(btn:印刷),cmd:1
> sub:29 図面情報コピー,cmd:72, --空白以下は列挙しません
を参考にし、UWSCの高レベル記録を用いて、UWSCスクリプトを私も書いてみました。

// 印刷範囲指定付図面情報コピー.uws
// ブロック編集中の印刷は無い。
jww_id = GETID("- jw_win", "", -1)
SLEEP(0.1)
jww_print(jww_id)
jww_information(jww_id)

// 印刷範囲指定
Procedure jww_print(id)
CLKITEM(id, "印刷", CLK_MENU, True)
prt_id = GETID("印刷", "#32770", -1)
SLEEP(0.1)
CLKITEM(prt_id, "OK", CLK_BTN)
SLEEP(0.1)
CLKITEM(id, "範囲変更", CLK_ACC)
// 範囲変更ボタンを押す前の"確認"と区別する為に、
// "指示"を確認する必要がある。
Repeat
SLEEP(0.1)
Until POS("指示",GETSTR(id, 1, STR_STATUS)) > 0
// ここでマクロは、待機する。
// 範囲変更ボタンが押された後すべき事を、
// jwwの画面上で各種設定を行う。
Repeat
SLEEP(0.1)
Until POS("確認",GETSTR(id, 1, STR_STATUS)) > 0
// 印刷は行わずに、AUTOモードに戻る。
CLKITEM(id, "AUTOモード", CLK_MENU, True)
Fend

// 図面情報コピー
Procedure jww_information(id)
CLKITEM(id, "図面情報コピー(I)", CLK_MENU, True)
Fend

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : mirror  ■日付 : 17/4/1(土) 7:25  -------------------------------------------------------------------------
   ▼いっちさん:

>例えば、汎用ツールであるUWSCなどを用いて、
>図面情報を取得すれば良い。
>と言われているように、受け取れます

その通りです
いっちさんのようなJw_cadのユーザーが、沢山増えてくれれば
マクロを利用した、より新しい使い方も増えてくるものと期待しています

汎用のマクロツールで、ユーザーの操作を待機する方法ですが
何かの参考になるかも知れませんので、書き込んでおきます

Jw_cadでは何かの操作を行うと、ステータスバーの表示が変わりますので
各操作の後で、どのような表示になるか確認し、ステータスバーを監視します
ステータスバーの監視は、do〜loop内で実行するようにし
その中では、sleepでは無く、DoEventsを実行し動作中の制御をWindowsに渡します
その表示になるまでか、その表示を継続しているのか、で判断して
loopを抜けるように構築する事で、スムーズな待機制御ができます

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/4/1(土) 9:55  -------------------------------------------------------------------------
   ▼mirrorさん:

おはようございます。

> >例えば、汎用ツールであるUWSCなどを用いて、
> >図面情報を取得すれば良い。
> >と言われているように、受け取れます

> その通りです

今回のコードは、取りあえず動く位なもので、もう少し直す必要があるようです。
このようなマクロは、特に繰り返しの実行を行う時、完成度の差が大きく出てしまうようです。
単発的な動作確認だけではダメなようです。

やはり、Exmenuの動作は素晴らしいと思います。

> 汎用のマクロツールで、ユーザーの操作を待機する方法ですが
> 何かの参考になるかも知れませんので、書き込んでおきます

ありがとうございます。

エクセルで、DoEventsを実行というのは普通の事ですが、
UWSCでDoEventsを実行となると、少々勉強が必要です。

但し、下記のページに記述のある「vbsでdoevents」
https://note.chiebukuro.yahoo.co.jp/detail/n271679?__ysp=RG9FdmVudHMgdXdzYw%3D%3D
なら、

Procedure DoEventsCmd()
DOSCMD("cmd /c")
Fend

位のものなのかも知れません(?)

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : mirror  ■日付 : 17/4/1(土) 11:16  -------------------------------------------------------------------------
   ▼いっちさん:

>UWSCでDoEventsを実行となると、少々勉強が必要です

DoEventsの実態の動作は

PeekMessage(msg,NULL,0,0,PM_REMOVE)が真の間
msg構造体内のmessageを調べて
WM_QUITならExitProcess()
そうでない場合は
TranslateMessage(msg)とDispatchMessage(msg)を実行するです

WindowsAPIを使えば、UWSCでも実装できると思います
Exmenuでは、CPU使用率低減や実行速度改善のため自前で実装しています

 ───────────────────────────────────────  ■題名 : Re:図面情報コピーとタグジャンプ  ■名前 : いっち  ■日付 : 17/4/1(土) 14:48  -------------------------------------------------------------------------
   mirrorさんのレスの内容が、現在の私にとっては、大変難しい内容の為、今すぐに具体的なコードを書くことは出来ません。

しかしながら、mirrorさんのレスの内容は、単に難しいだけでは無く、的確な内容を書かれているように思える為、取り急ぎ、mirrorさんのレスの内容そのままを解る範囲でコードにしてみました。

ここに書いた内容を、UWSCで実際に動かすような事は、一切行っておりません。(というより、このままでは、行えないはずです。)
どこが間違えているかも、(私本人は)解っていません。

いつになったら、ちゃんとしたコードが書けるのか、謎です。

> WindowsAPIを使えば、UWSCでも実装できると思います

// DEF_DLL 関数名(型, 型, ...): 戻り型: DLL名
// 型: int、long、bool、uint、hwnd、string、Wstring、float、double、word、dword、byte、char、pchar、Wchar、pWchar、boolean、longlong、SafeArray
// 構造体:型を { } にて展開して書く 関数名( double, {int, int, int} ) 
DEF_DLL PeekMessage({LPMSGのUWSCでの指定方法不明です?},hwnd,uint,uint,uint)bool:user32.dll

> DoEventsの実態の動作は
> PeekMessage(msg,NULL,0,0,PM_REMOVE)が真の間
> msg構造体内のmessageを調べて
> WM_QUITならExitProcess()
> そうでない場合は
> TranslateMessage(msg)とDispatchMessage(msg)を実行するです

// DoEventsの実態の動作は
Procedure UwscDoEvents()
// PeekMessage(msg,NULL,0,0,PM_REMOVE)が真の間
While PeekMessage(msg,NULL,0,0,PM_REMOVE)
// msg構造体内のmessageを調べて
Select msg.message
// WM_QUITならExitProcess()
Case WM_QUIT
ExitProcess()
// そうでない場合は
// TranslateMessage(msg)と
// DispatchMessage(msg)を実行するです
Default
TranslateMessage(msg)
DispatchMessage(msg)
Selend
Wend
Fend

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 314