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

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

マクロ修正お願いいたします。
1.選択したブロックのみ全解除 (ブロックの中のさらにブロックも)

ブロックを新規図面に置き換えないと使いないので改善できませんか?
仕様しているマクロ
 *^C^C$M=useri1;0;$(nth,$(getvar,USERI1),offset;;ブロック選択(全ブロック分解はR-Click)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;\,select;all;;)"""copybase;non;0<0;p;;erase;p;;point;non;0<0;^R-block;tmpbk;non;0<0;l;;useri1;1,,,,,)$(nth,$(getvar,USERI1),,-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteblock;non;0<0;zoom;e;useri1;2,,,,)$(nth,$(getvar,USERI1),,,-insert;tmpbk;non;0<0;;;;useri1;5;selectsimilarmode;0;SelectSimilar;l;;select;selectsimilarmode;$M=$(getvar,SELECTSIMILARMODE);select;p;r;l;;useri1;3,,,)$(nth,$(getvar,USERI1),,,,copybase;non;0<0;p;;erase;p;;erase;l;;pasteblock;non;0<0;useri1;4,,)$(nth,$(getvar,USERI1),,,,,explode;l;^Rexplode;p;;-purge;b;*$(substr,$(getvar,insname),4);n;useri1;2,)$(nth,$(getvar,USERI1),,,,,,erase;l;;copybase;non;0<0;all;;model;pasteclip;non;0<0;-layout;d;tmplo;-purge;b;tmpbk;n;^Cuseri1;0)^M

2.ブロックをByBlockに一括で変えたい。(ブロックの中のさらにブロックも)
 

仕様CAD AutoCAD2024(LTではありません)
マクロ、lspでも構いません。お願いいたします。
  • moto
  • 2025/04/04 (Fri) 14:10:50
Re: マクロ修正お願いいたします。
とりあえず、2つ目に関しては、下記の一番上のrlx氏の投稿にあるLispで可能です。
https://www.cadtutor.net/forum/topic/71349-lisp-to-set-all-properties-inside-a-block-to-byblock/
  • LUNE
  • 2025/04/04 (Fri) 15:25:39
Re: マクロ修正お願いいたします。
>ブロックを新規図面に置き換えないと使いないので改善できませんか?
この意味がよく分からないのですが・・・
  • LUNE
  • 2025/04/04 (Fri) 15:36:29
Re: マクロ修正お願いいたします。
図面の中にあるブロックを一度新規作成で新規の図面にコピペするという意味です。
わかりにくくてすみません。
  • moto
  • 2025/04/04 (Fri) 16:26:33
Re: マクロ修正お願いいたします。
選択したブロックのみ全解除

オブジェクト選択は、窓選択で1回のみの制限付きですが・・・

(defun c:exselblk (/ ss)
(setq pt1 (getpoint "\nオブジェクトを選択:"))
(setq pt2 (getcorner pt1))
(setq ss (ssget "W" pt1 pt2 '((0 . "INSERT"))))

(while (/= ss nil)
(command-s "explode" ss)
(setq ss (ssget "W" pt1 pt2 '((0 . "INSERT"))))
)

(princ)

)
  • LUNE
  • 2025/04/04 (Fri) 16:37:15
Re: マクロ修正お願いいたします。
ありがとうございました。2つとも出来ました。

もう一つお願いしたいのですがポリラインの多角形に対角線を描きたいのですが、
いわゆる×のラインです。
こちらのサイトにあるやつはUCSになって傾いたりどうもうまくいきません。
宜しくお願いいたします。
  • moto
  • 2025/04/07 (Mon) 12:35:01
Re: マクロ修正お願いいたします。
原則、異なる質問はトピックを分けてください。

>もう一つお願いしたいのですがポリラインの多角形に対角線を描きたい
長方形の対角線は2本しか作成できませんが、多角形の場合複数の対角線が作成できます。

>いわゆる×のラインです。
複数あるうちから2本を作成することになりますが、どのような条件で選びますか?
添付画像のように、対角線でxラインと言っても、色々描けます。
また、図形の角度が違えば、見え方が異なるので、その場合も検討が必要です。

必要なのは、本当に「対角線」ですか?
図形によっては、対角ではなく対辺、あるいは角と辺などになりませんか?
  • LUNE
  • 2025/04/08 (Tue) 09:14:41
Re: マクロ修正お願いいたします。
申し訳ありません。
このサイトに不慣れでして、今後気を付けます。
希望したいのが上段の一番左のものです。
宜しくお願いいたします。
  • moto
  • 2025/04/08 (Tue) 12:04:07
Re: マクロ修正お願いいたします。
>このサイトに不慣れでして、今後気を付けます
質問を受け付けるサイトなら、前段の質問内容に関係ない質問は、新規にトピ立てが基本です。
どこでもそうなので、お気を付けください。

>希望したいのが上段の一番左のものです。
その前には、
>ポリラインの多角形に対角線を描きたい
とあります。添付画像の左上のものというなら、多角形ではなく四角形限定ということですか?
「多角形」とあったので、前の書き込みをしたのですが。
  • LUNE
  • 2025/04/08 (Tue) 12:24:33
Re: マクロ修正お願いいたします。
たびたびすみません。四角形です。
  • moto
  • 2025/04/08 (Tue) 12:42:27
Re: マクロ修正お願いいたします。
対象となる四角形は
・頂点が4で閉じているポリライン
・頂点が5で閉じていない、かつ始点と終点が同じポリライン
のみです。
その他の頂点が6以上のポリラインで複数点が同一座標にあるために、見かけが四角形に見えるものは除外です。
Xラインは現在の設定で作成されます。

(defun c:crsl ( / ss cnt i ent pt_list gap)
(setq ss (ssget '((0 . "*POLYLINE"))))

(setq i 0)

(repeat (sslength ss)
(setq ent (entget (ssname ss i)))
(setq pt_list nil)
;頂点数が4で閉じている場合
(if (and (= 4 (cdr (assoc 90 ent))) (= 1 (cdr (assoc 70 ent))))
(repeat 4
(setq pt_list (append pt_list (list (trans (cdr (assoc 10 ent)) 0 1)))) ;頂点のリスト
(setq ent (cdr (member (assoc 10 ent) ent)))
)
)

;頂点数が5で閉じていない場合
(if (and (= 5 (cdr (assoc 90 ent))) (= 0 (cdr (assoc 70 ent))))
(progn
(repeat 5
(setq pt_list (append pt_list (list (trans (cdr (assoc 10 ent)) 0 1)))) ;頂点のリスト
(setq ent (cdr (member (assoc 10 ent) ent)))
)
(setq gap (expt 0.1 (getvar "LUPREC")))
(if (equal (nth 0 pt_list) (nth 4 pt_list) gap)
(setq pt_list (cdr pt_list))
(setq pt_list nil)
)
)
)

(if (/= pt_list nil)
(progn
(entmake (list
(cons 0 "LINE")
(cons 10 (nth 0 pt_list))
(cons 11 (nth 2 pt_list))
)
)
(entmake (list
(cons 0 "LINE")
(cons 10 (nth 1 pt_list))
(cons 11 (nth 3 pt_list))
)
)
)
)
(setq i (+ 1 i))
)
)
  • LUNE
  • 2025/04/08 (Tue) 16:14:03
Re: マクロ修正お願いいたします。
助かりました。ありがとうございました。
  • moto
  • 2025/04/08 (Tue) 16:36:32

返信フォーム






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