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

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

線種で選択するLISP
プロパティの線種コントロールに表示されている線種を選択するマクロです。

まず変数を手動で登録します。
setenv→sen1→「(sssetfirst nil (ssget '((6 . "」
setenv→sen2→「"))));」

^C^C$M=$(getenv,sen1)$(getvar,celtype)$(getenv,sen2)
マクロ起動後、範囲選択やA11で現在線種のオブジェクトが選択されます。

AutoCADではOKでしたが、IJCADは無理なのでLISPで考えました。

(defun c:d-sensyu ( )
(setq sen (getvar "celtype"))
(sssetfirst nil (ssget '((6 . sen))))
)

「SSGET リスト値エラー」となり動きません。
解決案を教えて下さい。
  • Den
  • 2021/08/22 (Sun) 18:23:01
Re: 線種で選択するLISP
変数と「'」の組み合わせがとダメみたいです。
なんで、(ssget (list (cons '6 sen)))) ならOKかな。
  • LUNE
  • 2021/08/23 (Mon) 10:01:10
Re: 線種で選択するLISP
zukki-さん、LUNEさん
ありがとうございます。

クォートするとそのリストは評価されないので中のsenは評価されない。
変数を使う場合、関数でそのリストになるように組み立てる必要がある。

(defun c:d-sensyu ( )
(setq sen (getvar "celtype"))
(sssetfirst nil (ssget (list (cons 6 sen))))
)

上記で解決しました。

内容はまだ把握していません( ;∀;)
  • Den
  • 2021/08/23 (Mon) 10:15:52
寸法スタイルで選択するLISP
ついでに作ってみました。

;--- 現在の寸法スタイルのオブジェクトを抽出 ----
(defun c:d-sunpoustyle ( )
(setq sen (getvar "dimstyle"))
(sssetfirst nil (ssget (list (cons 3 sen))))
)
  • Den
  • 2021/08/23 (Mon) 10:36:16

返信フォーム






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