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

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

無題
LISPで表(テーブル)オブジェクトのセルに書き込まれている文字列を書き換えたいのですが。
entgetして取得した配列を見て、グループコードの1番と302番が文字列と判断しました。
それら、片方や両方を書き換えて、entmodしても書き変わらない。(entgetした配列の中身は書き換えられている。)
同じ配列でentmakeしたら、空っぽの表ができる。

何か参考になるコードありませんか?

作ったコードが以下です。
(defun C:tableAB (/ ss ent ent2 i DP)
(if (setq ss (ssget "_X"'((0 . "ACAD_TABLE"))))
(progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget (ssname ss i)) ent2 nil)
(foreach DP ent
(cond
((and (= (car DP) 1) (= (cdr DP) "AAA")) (setq ent2 (append ent2 (list (cons 1 "BBB")))))
((and (= (car DP) 302) (= (cdr DP) "AAA")) (setq ent2 (append ent2 (list (cons 302 "BBB")))))
(T (setq ent2 (append ent2 (list DP))))
)
)
(entmod ent2)
(setq i (1+ i))
)
)
)
(princ)
)
  • 表の文字を編集する方法を教えれ下さい
  • 2023/06/09 (Fri) 12:18:01
Re: 無題
このあたりが参考になるでしょうか。
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/replacing-text-in-tables/td-p/3942886

表オブジェクトは、Visual LISPの方が扱いやすい気がします。
  • LUNE
  • 2023/06/09 (Fri) 13:33:58
Re: 無題
ありがとうございます。
出来ました。


(Defun C:tableAB ( / ss r i c n)
(if (setq ss (ssget "_X" '((0 . "ACAD_TABLE"))))
(repeat (setq m (sslength ss))
(setq a (vlax-ename->vla-object (ssname ss (setq m (1- m))))
r (vla-get-rows a)
c (vla-get-columns a)
i 0
n c
)
(while (< i r)
(repeat c
(setq cs (vlax-invoke a 'GetText i (setq n (1- n))))
(If (= cs "AAA") (vlax-invoke a 'SetText i n "BBB"))
)
(setq i (1+ i) n c)
)
)
)
(princ)
)
  • kous
  • 2023/06/09 (Fri) 14:37:24

返信フォーム






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