この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

投稿者削除
(投稿者により削除されました)
  • (削除)
  • 2025/05/07 (Wed) 22:34:04
Re: LISP作成依頼
こういうことでしょうか。

(defun c:moddim ()

(setq obj (car(nentsel)))
(setq ent (entget obj))
(setq dimtext_new (getstring "新規寸法を入力: "))

(setq dimtext_old (cdr(assoc 1 ent)))

(entmod (subst (cons 1 dimtext_new )(assoc 1 ent) ent))

)
  • ruru
  • 2025/05/08 (Thu) 08:26:21
Re: LISP作成依頼
変更したい"1000"と寸法がありましたら、1000と入力する。→対象寸法選択→ 書き換え後の文字列入力→書き換え
ということでしょうか。
  • ruru
  • 2025/05/08 (Thu) 10:45:30
Re: LISP作成依頼
こういうことでしょうか?

(defun c:SelectDimAndChangeValue ()
;; 最初の寸法値を取得
(setq originalDimString (getstring "\n変更する対象の寸法値を入力してください (例: 1000 高さ): "))
;; 指定した寸法値のオブジェクトを選択
(if originalDimString
(setq ss (ssget "X" (list (cons 0 "DIMENSION") (cons 1 originalDimString))))
)
;; オブジェクトが見つかった場合
(if ss
(progn
(alert (strcat (itoa (sslength ss)) " 個の " originalDimString " の寸法が選択されました。"))

;; 新しい寸法値を入力
(setq newDimString (getstring "\n新しい寸法値を入力してください (例: 1200 幅): "))

;; 選択された寸法オブジェクトの値を更新
(setq i 0)
(while (< i (sslength ss))
(setq ent (ssname ss i)) ;; 寸法オブジェクトの名前を取得
(setq entData (entget ent)) ;; プロパティを取得
(setq entData (subst (cons 1 newDimString) (assoc 1 entData) entData)) ;; グループコード1の値を更新
(entmod entData) ;; 更新を適用
(entupd ent) ;; AutoCADに変更を通知
(setq i (1+ i))
)

(alert (strcat "選択した " originalDimString " の寸法値が " newDimString " に変更されました。"))
)
(alert "指定した寸法値の寸法が見つかりませんでした。")
)
(princ)
)
  • ruru
  • 2025/05/09 (Fri) 18:48:36

返信フォーム






プレビュー (投稿前に内容を確認)