• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

ラベル(タグ)ブロック属性の名前を変更

  • Thread starter Thread starter 77marco77
  • Start date Start date

77marco77

Guest
夕方,
属性のラベルの名前を変更するには、この lisp を見つけた
HTML:
(defun c:c1 ( / oldtagname newtagname タグ名 s x n blk att atts )))
(vl-load-com)
(setq 古いtagname "aukstis")
(setq newtagname "ag")
(setq s の nill)
(prompt "\npick すべてのブロックを変更: ")
(setq ss (ssget)) ) )
(/= oldtagname "")(/= newtagname "")(/= ss nil))
(progn)
(setq x 0 n 0)
(repeat (sslength ss)))
(setq blk (vlax-ename->vla-object (sss x)))))))
(安全値 (setq atts (vlax-variant-value (vla-getattributes blk))))))))))
(progn)
(setq atts (vlax-safearray->list (vlax-variant-value)))))))))
(foreach att atts) (foreach att atts (foreach att atts) (foreach att atts) (foreach att att atts) (foreach att att atts (foreach att atts) (foreach att atts) (foreach att atts (foreach att atts) (foreach att att atts (foreach att atts) (foreach att atts (foreach att att atts) (foreach att atts (foreach att atts) (foreach att atts (foreach atts (foreach att atts (foreach att atts))) (foreach atts (foreach atts (foreach att (foreach att (foreach att atts (foreach atts)))))) (foreach atts (foreach att (foreach atts (foreach att (foreach att (foreach att (foreach atts (foreach att (foreach att (foreach att att (foreach att att
(setq タグ名 (strcase (vla-get-tagstring att)))))))); tagname
(with (/= newtagname "")(= tagname oldtagname)))
(progn)
(vla-put-tagstringのatt newtagname)
(setq n) (+ n 1))
; 予後
; 場合
; フォアチ
; 予後
; 場合
(setq x (+ x 1)))
; 繰り返し長さ sss
(arert (strcat "changed "(toa n)" タグ名を "newtagname")))
; 予後
; 場合
(プライアンス)
;機能
お問い合わせ block属性タグの名前何をすべきか。
他の人の間でブロックまたはラベルを含まない要素を選択する場合でも、指示を完了するように、私はそれを変更できるようにしたいです(ミスとコマンドから終了して瞬間に)。
属性が変更され、その値が最大になるたびに変更することなく新しい名前を尋ねることもできますが、最初の部分だけに助けを借りて喜んでいます。
 
Code:
(defun c:c1 (/oldtagname newtagname ss x n blk atts)) )
(vl-load-com)
(setq oldtagname) (文字列)
Newtagname (文字列 "\nnuova etichetta:")
n 0
)
(おそらく変更するすべてのブロック)
(setq ss (ssget '(0. "insert")))))))))
(とsss (/= oldtagname)))
(progn)
(repeat(setq x)))
(setq blk (vlax-ename->vla-object)))
(vla-get-hasattributes :vlax-true の場合)
(progn)
(setq toss (vlax-safearray->list (vlax variant-value (vla-getattributes blk)))))))))))))
(Foreach Elem Atts) (Foreach Elem Atts) (Foreach Elem Atts) (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts) (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts) (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem Atts))) (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem (Foreach Elem Atts (Foreach Elem Atts)))))) (Foreach Elem Atts (Foreach Elem Atts (Foreach Elem (Foreach Elem Atts (
(vla-get-tagstring elem) 古いタグ名
(progn)
(vla-put-tagstring elem newtagname) は、
(setq n (1+ n)) )
)
)
)
)
)
)
)
)
(arert (strcat "changed" (toa n)" ) は、"newtagname")
(Princ)
)
 
こんにちは confutatis, これで我々 は 3 つは、非常に短い時間ヘルプ私!
コードは、私が望んでいたものを正確に行います(コーヒーを飲むか、新聞を閲覧するか、左手で書いたシーンを想像してみてください)。 . )

お問い合わせ
 
こんにちはconfutatis、
上記のコードは、私が今日必要とするすべてのものではなく、その時間に尋ねたものではないことに気付きました。 . . .
属性タグを翻訳する必要があり、ブロック定義のタグを変更する必要があり、複数のブロック属性のタグ名を同時に変更する方法を探しています。
変更は、属性の定義(および参照だけでなく)で行われるべきです。つまり、タグの上に lisp を起動した後にブロックエディタでブロックを開くと、新しい名前があるはずですが、残念ながらそれはそうではありません。
また、incatt が変更を削除し、タグと属性をブロックの元の名前と定義に報告すると、属性に置いた情報も失われます。

私はこのコードを見つけました(私はどこにいるかわからない)。
Code:
;;;; 属性の名前を変更する
(defun renattrib ($blk $old $new / ブロック bo eo ao))
;;;; 現在のデッサンのブロックのコレクションを得て下さい
(setqブロック(vla-get-blocks))))
;;すべてのブロックを通してステップ
(ボブロック用)
;;; ブロック内のすべてのエンティティティをステップ
(vlax-for eo bo)
(コンド)
;;; ターゲットブロックと古いタグのattdefと
(vla-get-objectname eo) "acdbattributedefinition")
(= (strcase (vla-get-name bo))) (strcase $blk)))
(= (vla-get-tagstring eo) $old)
) ;_ の端および
(vla-put-tagstring eo $new) ;新しい名前に変更
)

;;; ブロック参照及びターゲット ブロックなら
(vla-get-objectname eo) "acdbblockreference")
(= (strcase (vla-get-effectivename eo))) (strcase $blk)))
) ;_ の端および
;;;全ての属性によるステップ
(foreach ao (vlax-safearray->list (vlax-variant-value)))))))
;;;; ターゲットattribかどうかチェック
(= (strcase (vla-get-tagstring ao))) (strcase $old)))
(vla-put-tagstring ao $new) ;新しい名前に変更
) ;_ の終了
) ;_ フォアの終了
)
) ;_ コンドの終了
) ;_ vlax-forの終了
) ;_ vlax-forの終了
) ;_ defunの終了
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
それは私が必要とするものではなく、それを作るために私はすべての単一のブロックとすべての単一の属性のためのプロンプトにコマンドを与える必要があります。
手順をスピードアップする方法はありますか?
お問い合わせ
 
はい、6と28の間の属性の可変数を持つ、altogether 6358ブロックがあります。 すべてのブロックは、これらの6タグを常に等しく、ブロックの約80%が追加6等しい属性を持ち、残りの20%は2と14(また等しい)の間で追加番号が異なります。
 
欲しかったものだったらわからない...。
Code:
;;;; 属性の名前を変更する
(defun c:renatt (/ブロックボオアオ))
;;;; 現在のデッサンのブロックのコレクションを得て下さい
(setq oldtag (文字列 "\nold タグ: ")))))
(setq newtag (文字列 "\nnew タグ: "))))
(setqブロック(vla-get-blocks))))
;;すべてのブロックを通してステップ
(ボブロック用)
;;; ブロック内のすべてのエンティティティをステップ
(vlax-for eo bo)
(コンド)
;;; ターゲットブロックと古いタグのattdefと
(vla-get-objectname eo) "acdbattributedefinition")
(= (vla-get-tagstring eo) 古いタグ)
) ;_ の端および
(vla-put-tagstring eo newtag) ;新しい名前の変更
)
) ;_ コンドの終了
) ;_ vlax-forの終了
) ;_ vlax-forの終了
(vl-cmdf "_attsync" "n" "*")
(プライアンス)
) ;_ defunの終了
 
Last edited:
コードは、それが何であるかを正確に行います(そして光の速度で!)。

あなたのコードについて本当に好きなのは、「シンプルさ」であり、それらが見えるようにエレガンスです(そして残念ながら見て)十代のゲーム。

お問い合わせ
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top