AutoCADマクロ屋本舗 掲示板


スペースの前の図面番号取得

1:mappy :

2024/05/21 (Tue) 11:34:49

いつもお世話になっております。
以前こちらでスペース後のファイル名取得をご教授いただいたのですが
今度はスペース前の図面番号を取得し、ファイル名取得のコードと一緒にワンクリックで使いたいです。
どのように変更したらいいのでしょうか?
よろしくお願いします。

使用CAD:AutoCAD2025

ファイル名の例)
PT-101-R0 架台製作図
PT-101-R0 → 図面番号
架台製作図 → 図面名称
図面番号と図面名称はそれぞれ記入場所が違うため分けて取得したい。


*ご教授いただいた使い方*
アイコンに登録
(setq hoge (vl-string-trim ".dwg" (substr (getvar "dwgname") (+ 2 (vl-string-search " " (getvar "dwgname"))))))(command-s "regen")
登録した後、↑一度このアイコンをクリックしてください。

フィールドに登録
フィールド分類:その他 フィールド名:Lisp変数 Lisp変数:hoge(一度アイコンクリックしてないと出てきません)

オプション→基本設定→フィールド更新設定で再作図にチェックを入れておいてください。

2:LUNE :

2024/05/21 (Tue) 12:54:08

(setq meisho (vl-string-trim ".dwg" (substr (getvar "dwgname") (+ 2 (vl-string-search " " (getvar "dwgname"))))))(setq bango (substr (getvar "dwgname") 1 (vl-string-search " " (getvar "dwgname"))))(command-s "regen")

Lisp変数
図面番号→bango
図面名称→meisho
3:mappy :

2024/05/21 (Tue) 13:44:08

LUNE様

ありがとうございました。
希望通りにできました。

(+ 2 ←ここを変えればいいのかな・・・と、それしかわかりませんでした。(^_^;)

とりあえず2を1にしてみましたが変わらなかったのでお手上げでした。

いつもありがとうございます。
4:mappy :

2024/05/21 (Tue) 13:55:05

LUNE様

度々すみません。
これを全角にも対応するにはどうすればいいのでしょうか?
以前全角にも対応していただいたコードを頼りに書き直してみたのですがうまく動かなかったのでご教授いただけると幸いです。


自分なりの考えで全角スペースにも対応
(setq meisho (vl-string-trim ".dwg" (substr (getvar "dwgname") (+ 2 (vl-string-search " " (vl-string-subst " " " " (getvar "dwgname")))))))(setq bango (substr (getvar "dwgname") 1 (vl-string-search " " (vl-string-subst " " " " (getvar "dwgname")))))(command-s "regen")
5:LUNE :

2024/05/21 (Tue) 14:50:55

全角・半角対応版
(setq meisho (vl-string-trim ".dwg" (substr (getvar "dwgname") (+ 2 (vl-string-search " " (vl-string-subst " " " " (getvar "dwgname")))))))(setq bango (substr (getvar "dwgname") 1 (vl-string-search " " (vl-string-subst " " " " (getvar "dwgname")))))(command-s "regen")

以下のような流れです。
1. (getvar "dwgname") システム変数のdwgnameから、現在開いているファイル名を取得
2. (vl-string-subst " " " " (getvar "dwgname")) vl-string-substで、全角スペースを半角スペースに置換
 ※ただし、置換されるのは最初のスペースのみ 該当するものがなければそのまま
3. (vl-string-search " " ・・・) 最初の半角スペース位置を取得
 ※先頭文字位置は0と数える
4. (substr ・・・) 部分文字列を取得 ※先頭文字位置は1と数える
 meishoの場合→ 文字の取り出し開始位置 3で取得した数字 +2 (先頭文字が0、そしてスペース自身があるため)
         最後まで取り出すので、文字数は指定なし
 bangoの場合→ 文字の取り出し開始位置 最初からなので 1 取り出す文字列の長さはスペースの前までなので、3で取得した数字

6:mappy :

2024/05/21 (Tue) 15:25:39

LUNE様
できました。
解説までしていただきありがとうございます。

まだ今ひとつ理解できないのでもう少しジックリ勉強したいと思います。

  • 名前: E-mail(省略可):
  • 画像:

Copyright © 1999- FC2, inc All Rights Reserved.