77marco77
Guest
夕方, 描画中のブロック(約6500)の名前を変更する方法を探しています。 必要な変更は、ブロックの名前に存在するスペースを置き換えることです(ブロックのいくつかの名前は持っていません、他の人は、以下のダッシュで1、他の2、または3 ...)。 *の全ての組み合わせで名前を変更しようとしましたが、複数の文字と数字を選ぶとフィールドを2つまたは3つに一度に減らすと機能しません。
お問い合わせ
お問い合わせ
(defun c:renblock )
(setqブロック(vla-get-blocks))))
(vlax-for elemブロック)
(vl-string-search-t " (vla-get-name elem)) の場合)
(vla-put-name elem (vl-string-subst-t "_" (vla-get-name elem))))
)
)
)
[Bleep] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ]
;;;;;;; 文字列のサブ文字列の位置でリストを返す関数
(defun vl-string-search-t (string/number リスト)
(setq カウンター 0 リスト() 番号 0)
(間番号)
(setq 数値 (vl-string-search 要素の文字列のカウンター))
(電話番号の場合)
(プログ)
(Sectsリスト)
カウンター(1+番号)
)
)
)
)
(逆リスト)
)
[Bleep] [Bleep] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep] [ベール]
;;;;;; 文字列で他の文字列と置換する関数
(defun vl-string-subst-t (stringanuova stringavekkia string / stringa1 カウンター番号))
(setq リスト (vl-string-search-t stringavekkia 文字列)))
(setq string1 文字列)
(setq カウンター 0)
(foreach elem リスト)
(setq 番号 (vl-string-search stringavekkia stringa1 (+ elem カウンター))))))))
(setq stringa1 (vl-string-subst stringavekkia stringa1 数値)))
(setq カウンター (- (strlen string1))))
)
文字列1
)
これは魔法です。です。 vl-search-string-t と vl-string-subst-t の2つの関数は、vl-string-search と vl-string-subst の関数から派生します。 これらの最後の2つが最初のサブ文字列だけを認識するという違いです。
Code:(defun c:renblock ) (setqブロック(vla-get-blocks)))) (vlax-for elemブロック) (vl-string-search-t " (vla-get-name elem)) の場合) (vla-put-name elem (vl-string-subst-t "_" (vla-get-name elem)))) ) ) ) [Bleep] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] ;;;;;;; 文字列のサブ文字列の位置でリストを返す関数 (defun vl-string-search-t (string/number リスト) (setq カウンター 0 リスト() 番号 0) (間番号) (setq 数値 (vl-string-search 要素の文字列のカウンター)) (電話番号の場合) (プログ) (Sectsリスト) カウンター(1+番号) ) ) ) ) (逆リスト) ) [Bleep] [Bleep] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep [Bleep] [Bleep] [Bleep] [Bleep] [Bleep] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [ブリープ] [Bleep] [Bleep] [Bleep] [ベール] ;;;;;; 文字列で他の文字列と置換する関数 (defun vl-string-subst-t (stringanuova stringavekkia string / stringa1 カウンター番号)) (setq リスト (vl-string-search-t stringavekkia 文字列))) (setq string1 文字列) (setq カウンター 0) (foreach elem リスト) (setq 番号 (vl-string-search stringavekkia stringa1 (+ elem カウンター)))))))) (setq stringa1 (vl-string-subst stringavekkia stringa1 数値))) (setq カウンター (- (strlen string1)))) ) 文字列1 )
(defun c:renblock2)
(setqブロック(vla-getブロック))
(電気ブロック用)
(vl-string-search) (vla-get-name elem)
(vl-put-name elem (vl-string-translate "_"(vla-get-name elem))))))))))
)
)
)
数行でこれらのことを解決する方法を見ると、私は本当に「小さな」の量を理解しています。 . . .私は問題が解決し、私は、コピー/ペーストすることによって、今日は必要ではないと思う他の断片に二重ループを持つプロリソコードにつながります(古いバージョン、ボア)、私の意見では(それが動作するが)コードはクリーナーと最適化することができます。
2016年版のオートキャドと作品でテストしたバージョンをご提案します。
6,500ブロックは使えませんでしたが、問題ありません。 . . .
誰かがそれをテストしたいのであれば、それがそうであるかどうかを理解しても、あなたのフィードバックが好きです。Code:(defun c:renblock2) (setqブロック(vla-getブロック)) (電気ブロック用) (vl-string-search) (vla-get-name elem) (vl-put-name elem (vl-string-translate "_"(vla-get-name elem)))))))))) ) ) )