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

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

ポリラインにデバイダ
お願いします。オートキャド2024を使用しています。
ポリラインで描かれた四角形の上下・左右の線に数値の違うデバイダをかけることができたらいいなと思い投稿しました。
ポリラインは分解いたしません。出来ればLISPで対応願えれば幸いです。
  • ss
  • 2024/11/19 (Tue) 12:44:10
Re: ポリラインにデバイダ
コマンド名はpldv ポリラインで閉じた四角(辺が水平&垂直)にしか対応しません。
斜めになっている場合は、UCSで軸を合わせてから使用してください。
ただし、平行四辺形でも、そのときのUCSに対して水平or垂直な辺のみに実行されます。

(defun c:pldv ( / pitv pith ss ent flg pt_list i pt1 pt2 dpt pit e)
(setq pith (getreal "\n縦の分割数を入力:"))
(setq pitv (getreal "\n横の分割数を入力:"))

(while (= ss nil)
(prompt "\n分割する図形(ポリラインの長方形のみ)を選択:")
(setq ss (ssget "_:S" '((0 . "*POLYLINE")(70 . 1)(90 . 4))))
)

(setq ent (entget (ssname ss 0)))
(repeat 4
(setq pt_list (append pt_list (list (trans (cdr (assoc 10 ent)) 0 1)))) ;頂点のリスト
(setq ent (cdr (member (assoc 10 ent) ent)))
)
(setq pt_list (append pt_list (list (car pt_list))))

(setq i 0)
(repeat 4
(setq pit nil)
(setq pt1 (nth i pt_list))
(setq pt2 (nth (+ i 1) pt_list))
;(setq dpt (mapcar '(lambda (x1 x2) (abs (- x1 x2))) pt1 pt2)) ;デルタx デルタy
(cond
((= (car pt1) (car pt2))
(setq pit pith)
)
((= (cadr pt1) (cadr pt2))
(setq pit pitv)
)
(T nil)
)

(if (/= pit nil)
(progn
(entmake
(list
(cons 0 "LINE")
(cons 10 (trans pt1 1 0))
(cons 11 (trans pt2 1 0)))
)
(setq e (entlast))
(command-s "divide" e pit)
(entdel e)
)
)
(setq i (+ i 1))
)

(princ)
)

  • LUNE
  • 2024/11/21 (Thu) 10:20:12
Re: ポリラインにデバイダ
LUNE様

見事に動作いたしました。これでずいぶん助けられます。

本当にありがとうございました。
  • ss
  • 2024/11/21 (Thu) 13:21:40

返信フォーム






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