Page 1973 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼外部変形で特定の文字を削除 田原文夫 24/3/1(金) 9:52 ┣Re:外部変形で特定の文字を削除 Lion 24/3/1(金) 11:17 ┣Re:外部変形で特定の文字を削除 John 24/3/1(金) 12:50 ┃ ┗Re:外部変形で特定の文字を削除 田原文夫 24/3/1(金) 13:41 ┃ ┣Re:外部変形で特定の文字を削除 John 24/3/1(金) 15:34 ┃ ┣Re:外部変形で特定の文字を削除 somem 24/3/1(金) 15:52 ┃ ┣Re:外部変形で特定の文字を削除 O.M 24/3/2(土) 1:56 ┃ ┃ ┗JWW_SMPL.BATの抜粋 O.M 24/3/2(土) 1:58 ┃ ┃ ┗Excelで作る外部変形 O.M 24/3/2(土) 2:00 ┃ ┗Re:外部変形で特定の文字を削除 卯之介 24/3/2(土) 9:49 ┗Re:外部変形で特定の文字を削除 田原文夫 24/3/2(土) 11:12 ┣Re:外部変形で特定の文字を削除 John 24/3/2(土) 14:28 ┗Re:外部変形で特定の文字を削除 田原文夫 24/3/3(日) 11:42 ┗Re:外部変形で特定の文字を削除 O.M 24/3/3(日) 13:04 ┗Re:外部変形で特定の文字を削除 田原文夫 24/3/3(日) 13:33 ─────────────────────────────────────── ■題名 : 外部変形で特定の文字を削除 ■名前 : 田原文夫 ■日付 : 24/3/1(金) 9:52 -------------------------------------------------------------------------
| jw_cadから全データ出力された「JWC_TEMP.TXT」をEXCEL VBAで読込んで、 内容の解析結果に応じて、一部の既存文字列を書き換える命令を 返しの「JWC_TEMP.TXT」に記述したいのですが、その文法が分かりません。 書き換える操作は1.文字列を削除と2.文字列を追記の操作になるのだと 思いますが、2.の追記は標準添付の外変(三斜)の中の説明で分かるのですが、 1.文字列の削除の説明が分かりません。 具体的にどうすれば実現できるのでしょうか。 数が多いので、いちいち画面上での選択操作は出来れば避けたいです。 |
| ▼田原文夫さん: >1.文字列の削除の説明が分かりません。 >具体的にどうすれば実現できるのでしょうか。 >数が多いので、いちいち画面上での選択操作は出来れば避けたいです。 文字変換なら、外変で無くても、範囲文字指定で文字の全てを 選択、文字コマンドのエディター(メモ帳等)を選んで エディター内で、文字検索、削除、置換等全て行えますが??? 私は秀丸エディターを使って置換を良く使います |
| JWC_TEMP.TXTの冒頭の「hq」を「hd」にすると良いかもしれません |
| 冒頭の「hq」は未実行フラグで、返しのファイルではこれを削除するように説明があったと思いますが、これを「hd」に替えるということは、一旦すべてを削除すると言うことなのでしょうか。 「hd」の説明には「選択データを削除」とだけしか説明がないのですが、 もしかしたら、「hd」の使いかたは、 「hd」行があると、削除モードオン(以降の内容を削除対象とする)。 削除モードの終了は「#」でいいのでしょうか。 ということでしょうか。 |
| hdはオンオフできません。 外変のbatファイルに記すプログラムにメモ帳などを指定して実行してみて、手作業でhqをhdに書き換えて上書きして終了、などで試してみると動作の仕組みが把握しやすいかもしれません。 |
| ▼田原文夫さん: >冒頭の「hq」は未実行フラグで、返しのファイルではこれを削除するように説明があったと思いますが、これを「hd」に替えるということは、一旦すべてを削除すると言うことなのでしょうか。 >「hd」の説明には「選択データを削除」とだけしか説明がないのですが、 >もしかしたら、「hd」の使いかたは、 >「hd」行があると、削除モードオン(以降の内容を削除対象とする)。 >削除モードの終了は「#」でいいのでしょうか。 > >ということでしょうか。 読込まれるjwc_temp.txtに、「hd」が記述されると選択図形を全て削除します。 削除モードという機能はありません。 必要な文字や図形のデータを、jwc_temp.txt内に記述すれば、JWWが再作図します。 |
| ▼田原文夫さん: ※間違いがあったので削除して書き直しました。 文字置換の外部変形は複数あるため、 単純に作業を楽にしたいということでしたら任意のものを ダウンロードして使用すればいいのではないかと思います。 外部変形に興味があるという事でしたら 横文字の場合の消去ですと ch %lg %lg %lg %lg "文字列 の部分を全部消すか、 ch %lg %lg %lg %lg " とするなどすると文字を消すことができます。 置換は文字列の部分を書き換えればできます。 文字起点を変更したり、指定して変換する場合は、 文字位置の補正なども必要になってきます。 変換の例を書きますと ※※※ 変換前データ ※※※ #の上の部分は縮尺設定や文字設定や書き込みレイヤ、 書き込みグループなどの情報で、変換データの書き込みの際にはあってもなくても大丈夫です。 cnは文字種、cn"$はフォント、ccは文字基点で、 記入した行の下から記入のあった文字種などになります。 ※更などがあるたびに記載されています。 ※文字ごとに記載をしても大丈夫で、文字を消す場合に残しても大丈夫です。 (下手に消すと下の行の同じ文字種が変わってしまうこともあるので、 あまり触らない方がいいと思います) hq hk 0 hs 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 1 hcw 2 2.5 3 4 5 6 7 8 9 10 hch 2 2.5 3 4 5 6 7 8 9 10 hcd 0 0 0.5 0.5 0.5 1 1 1 1 1 hcc 1 1 2 2 3 3 4 4 5 5 hn -1630.69909856947 -833.386932886246 1849.9828532236 1229.23940891705 lg0 ly0 lc2 lt1 cn2 cn"$<MS ゴシック> # cn3 cc0 ch 320.592298647858 455.754530740813 150 0 "a cn6 cn"$<MS Pゴシック> cc2 ch 912.42542513119 -493.522365202749 300 0 "c cn2 cn"$<MS ゴシック> cc3 ch -1220.51772377904 162.767834461937 125 0 "b ※※※ 変換後データ ※※※ aという文字を消したい場合、 【変換例 1】 hd hk 0 hs 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 1 hcw 2 2.5 3 4 5 6 7 8 9 10 hch 2 2.5 3 4 5 6 7 8 9 10 hcd 0 0 0.5 0.5 0.5 1 1 1 1 1 hcc 1 1 2 2 3 3 4 4 5 5 hn -1630.69909856947 -833.386932886246 1849.9828532236 1229.23940891705 lg0 ly0 lc2 lt1 cn2 cn"$<MS ゴシック> # cn3 cc0 ch 320.592298647858 455.754530740813 150 0 " cn6 cn"$<MS Pゴシック> cc2 ch 912.42542513119 -493.522365202749 300 0 "c cn2 cn"$<MS ゴシック> cc3 ch -1220.51772377904 162.767834461937 125 0 "b 【変換例 2】 hd cn3 cc0 cn6 cn"$<MS Pゴシック> cc2 ch 912.42542513119 -493.522365202749 300 0 "c cn2 cn"$<MS ゴシック> cc3 ch -1220.51772377904 162.767834461937 125 0 "b 【変換例 3】 hd cn3 cc0 cn6 cn"$<MS Pゴシック> cc2 ch 912.42542513119 -493.522365202749 300 0 "c cn2 cn"$<MS ゴシック> cc3 ch -1220.51772377904 162.767834461937 125 0 "b |
| JWW_SMPL.BATですでにご確認済みかもしれませんが、 batファイルの記述をどうしているかによっても 文字基準点変更時などの文字位置補正の座標の計算方法が変わってくるので、 そちらも含め主に関連しそうなとこを抜き出してみました。 REM ◎データ範囲選択指定 REM #h0:データ選択をしない、データ書き出し無し REM #h1 #h1:範囲内のデータのみを選択 REM #h2:範囲内データ・範囲内外に跨る線データを選択 REM #h3:範囲内の「文字」データのみを選択 REM #h4:データ選択をしない、読取可能データ書き出し REM #h5:選択範囲に跨るデータを選択(曲線は全線選択)(未対応) REM 範囲選択の終点指示のときの(LL)(RR)で使用(曲線不可) REM REM #hp:範囲選択データの基準点を強制的に用紙左下に設定する。 REM ◎ブロック、曲線、寸法図形およびソリッドの消去と書出しをしない設定 REM (選択データを削除「hd」参照) REM #ht1 ブロックを消去しない REM #ht10 ブロックの消去と書出しをしない REM #ht2 曲線 を消去しない REM #ht20 曲線 の消去と書出しをしない REM #ht3 寸法図形を消去しない REM #ht30 寸法図形の消去と書出しをしない REM #ht4 ソリッドを消去しない REM #ht40 ソリッドの消去と書出しをしない REM REM ◎データ選択のときレイヤグループのデータ選択指定 REM (必ず「#h*」または「#hc」の後に続けて記載する) REM #g0 (or無指定):書込レイヤグループのみ選択 REM #g0 #g1 全 レイヤグループ選択 ◎図面サイズの書き込み(用紙寸法 mm) REM #zs ◎図面寸法でデータを書込み REM #bz ◎文字基準点の書込を指定 REM #zc ◎文字寸法等の書き込み ※文字種1〜10の文字の設定 hcw %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg 文字 幅 寸法 (文字種類 No1〜10 ) hch %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg 文字 高 寸法 (文字種類 No1〜10 ) hcd %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg 文字間隔寸法 (文字種類 No1〜10 ) hcc %d %d %d %d %d %d %d %d %d %d 文字色(ペンNo) (文字種類 No1〜10 ) ※cn0が任意サイズ文字、cn1は文字種1といった内容になり、 任意サイズ文字の場合はcn0の後に文字情報がありますが、 文字種1〜10の場合は、文字情報の記載がないため、 基準点を変更する場合などは上記の文字設定の部分から 文字情報を取得して位置の補正の計算をして記述します。 ◎文字種の変更(1〜10) cn%d jww形式(#jww)の場合、次ぎの※印の事項を書き出す 任意サイズ文字種の書出し(幅 高さ 間隔 ペン番号) ※ cn0 %lg %lg %lg %d (jww形式の指定がない場合、任意サイズ文字種は文字幅が近似している 文字種1〜10で書出す) 文字フォントを書き出す ※ cn"$<MS 明朝> 文字フォントと同時に斜体文字を書き出す ※ cn"$<MS 明朝>/ ◎文字基準点の書込 「REM #zc」により文字基準点の書込の指定がある場合 (0:左下 1:中下 2:右下 3:左中 4:中中 5:右中 6:左上 7:中上 8:右上) (読込のとき、「cc%d」は「REM #zc」に関係なく有効になる。) (文字の座標(x y)は文字基準点の座標値になる。) cc%d ◎文字列 横文字 ( x y 方向x 方向y "文字列 ) ch %lg %lg %lg %lg "文字列 縦文字 cv %lg %lg %lg %lg "文字列 寸法値 cs %lg %lg %lg %lg "文字列 半径 寸法値 cr %lg %lg %lg %lg "文字列 直径 寸法値 co %lg %lg %lg %lg "文字列 角度 寸法値 cp %lg %lg %lg %lg "文字列 累寸 寸法値 ct %lg %lg %lg %lg "文字列 日影 真北データ ck %lg %lg %lg %lg "文字列 日影 建物高さデータ cz %lg %lg %lg %lg "文字列 2.5D データ c2 %lg %lg %lg %lg "文字列 |
| Excel 外部変形 つくり方 などで検索すると作り方の解説サイトがヒットします。 下の方のスレッドにもあるので既に見て不要と判断されていたら 申し訳ないのですが、一応かいておきます。 私もエクセルで外部変形を作成していて、 Excelで外部変形を作成する際のきっかけになればいいなと 作った外部変形があるのでよろしかったらそちらで データを書き換えてみたら書き換え方がわかりやすくなるかもしれません。 https://www.jwcad.net/bbs2/c-board.cgi?cmd=one;no=57060;id=004#57060 1.外部変を実行 座標ファイルっぽい感じで外変を制作する為のセット2フォルダ→ jwwからデータを取得し処理する場合フォルダ→作成例フォルダ→ 文字色変換.batを実行 2.起動したExcelを手書きで書き換え 変換処理記入のシートの文字列の該当部分を手書きで書き換え (作成例として関数で文字色を変更するようにしていますが、 文字列には関係しないので無視してください。) 3.選択シートの実行ボタンを押して変換処理記入シートを選択して実行ボタンをおしたら 変換されます。 ※元データの文字取得.bat実行→取得データを手書きで書き換え 選択シートの実行ボタンを押し→ユーザーフォームで取得データを選択し実行 でも変換できます。 (変換の際にVBAで自動で先頭行にhdを入れるようになっています) ユーザーフォームを使用しての外部変形も作っていて https://www.jwcad.net/bbs2/c-board.cgi?cmd=one;no=57022;id=004#57022 Excel置換2で文字の置換をしています。 プロテクトをを掛けていないのでコードも見れます。 ※いいかげんな性格が影響してコードがとてつもなく見難いものなので 逆に混乱するかもしれません。 ※外部変形から実行した際に一定時間すぎるとユーザーフォーム画面が画面の後ろに 潜ってしまう事があるようなのでユーザーフォームが消えた場合はjwなどの画面を 最小化してユーザーフォムを探してみてください。 |
| jw_cad側の振る舞いは以下の3通りです。 1. jwc_temp.txt冒頭に"hq"が書かれている場合……jw_cadは何もしない 2. "hd"が書かれている場合……最初に選択したデータは全て削除され、jwc_temp.txtに書かれた内容が作図される 3. "hq"も"hd"も何もない場合……最初に選択したデータはそのまま残り、jwc_temp.txtに書かれた内容が図面に追記される 文字列を変更したい場合は 2. とし、変更しないデータもろとも削除する事になるので、変更しないデータも全てjwc_temp.txtに書き戻す必要があります。 |
| 回答をお寄せいただいた皆さん、 お忙しい中お手数をお掛けし、ありがとうございました。 私の場合、「#h4」で全データを書き出しているので、 返しのファイルは、元のファイルの 先頭行を「hd」に変更して一旦全データを消去、 途中の変更したいデータを変更して、 それ以外はそのままとして全データを書き戻し ということでしょうか。 |
| そうです。 |
| すみません。まだ解決していませんでした。 先頭行を「hd」に変更して、 必要な行の内容を変更して全データを書き戻して、 実行後の「JWC_TEMP.TXT」をメモ帳で確認すると、 きちんとそうなっているのですが、 なぜか、JW_CADには「未実行」で内容も書き換わっていません。 因みに、「JWW」は「C:\」〜Cドライブのルートにおいていますが、 バッチファイル・実行ブックやカレントフォルダは 「C:\Users\Owner\DeskTop\フォルダ\フォルダ」の5層目に、 JWWファイルはさらに深い6層目に入っていますが、 パス内に半角ブランクはありません。 見よう見まねで作ったバッチファイルは、 ----------------------------------------------------------------- REM 損傷図_チェック・データ出力・写真番号変更_V3.00(2024/03/03) REM #jww REM #cd REM #hf REM #h4 REM #hp REM #zs REM #bz start "" "損傷図_確認等_V300.xlsm" REM #e ----------------------------------------------------------------- となっています。 また、「JW_TEMP.TXT」の読込み・書出しはエクセルの 自動起動マクロで処理しています。 どこに問題があるのでしょうか。 |
| ▼田原文夫さん: start "" "損傷図_確認等_V300.xlsm" としているのででデータを書き替える前にbatファイルがそのまま終了してしまっていますので start /waitでExcel終了までbatファイルを待機させておく必要があると思います。 また、Excelでの外部変形でしたら使用環境によっては 起動時にマクロを有効にするようなコードを追加するといいと思います。 |
| 「start」と「""」の間に「/W」を挿入したら、 無事、図面内容の自動変更が成功しました。 お忙しいところ、ご指導ありがとうございました。 |