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

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

寸法線の寸法値をエクセルに貼り付ける
AutoCAD2024使用です

寸法線の寸法値をエクセルに貼り付けるlspを見つけたのですが、計測値がコピーされてしまいます。lspの修正できないでしょうか?
設定した精度のままエクセルにコピーしたいです。
例えば寸法線の計測値が110491.123だとしたら、精度0ですと110491になります。
設定した精度の数字でエクセルにコピーしたいのです。
そして,(カンマ)ではなく.(点)でエクセルで表現できないでしょうか。
例えば測定値が110491.123 設定精度0ならば110.491 精度が0.0ならば110.4911といった感じです。

見つけたlspは

(defun c:aaa ( / ExlTxt ent ents html)
(setq ExlTxt "")
(while (setq ents (entsel "\n寸法を選択:"))
(setq ent (entget (car ents)))
(if (= (cdr (assoc 0 ent)) "DIMENSION")
(progn
(setq ExlTxt (if (= ExlTxt "") (rtos (cdr (assoc 42 ent))) (strcat ExlTxt "\n" (rtos (cdr (assoc 42 ent))))))
(princ (strcat "\n" ExlTxt))
(setq html (vlax-create-object "htmlfile"))
(vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'setData "Text" ExlTxt)
(vlax-release-object html)
)
(princ "\n寸法ではありません")
)
)
(princ "\nクリップボードにコピーしました")
(princ)
)

宜しくお願いいたします。
  • syu
  • 2025/04/23 (Wed) 16:51:57
Re: 寸法線の寸法値をエクセルに貼り付ける
設定精度を取得して・・・といった処理が面倒なので、寸法を分解して寸法値を読み取る方法にしました。
ご希望とは違うかもしれませんが。

(defun c:aaa ( / ExlTxt ent ents html LL)
(setq ExlTxt "")
(while (setq ents (entsel "\n寸法を選択:"))
(setq ent (entget (car ents)))
(if (= (cdr (assoc 0 ent)) "DIMENSION")
(progn
(command "undo" "be" "explode" (car ents) "explode" "l")
(setq LL (rtos (/ (atof (cdr (assoc 1 (entget (entlast))))) 1000)))
(setq ExlTxt (if (= ExlTxt "") LL (strcat ExlTxt "\n" LL)))
(command "undo" "e" "u")
(princ (strcat "\n" ExlTxt))
(setq html (vlax-create-object "htmlfile"))
(vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'setData "Text" ExlTxt)
(vlax-release-object html)
)
(princ "\n寸法ではありません")
)
)
(princ "\nクリップボードにコピーしました")
(princ)
)

  • Hamu
  • 2025/04/23 (Wed) 17:27:49
Re: 寸法線の寸法値をエクセルに貼り付ける
先越されましたね。
分解を使わないバージョンです。

>(カンマ)ではなく.(点)でエクセルで表現できないでしょうか。
ということですが、AutoCADのコマンドラインの表記から(点)です。
そして、実際はカンマ表記を点表記にしているのではなく、1/1000にしている数値なので、
寸法値が 2510 だとすると、コマンドライン上は 2.510 となりますが、貼り付け先のExcelの書式設定によっては、
2.51と表記されることになります。

本当にカンマを点にした状態でExcelに入れるには、Excel側の設定が必要です。

(defun c:bbb ( / ExlTxt ent ents html dimu)
(setq ExlTxt "")
(while (setq ents (entsel "\n寸法を選択:"))
(setq ent (entget (car ents)))
(if (= (cdr (assoc 0 ent)) "DIMENSION")
(progn
(setq dimu (getpropertyvalue (car ents) "Dimdec"))
(setq ExlTxt (if (= ExlTxt "") (rtos (/ (cdr (assoc 42 ent)) 1000) 2 (+ dimu 3)) (strcat ExlTxt "\n" (rtos (/ (cdr (assoc 42 ent)) 1000) 2 (+ dimu 3)))))
(princ (strcat "\n" ExlTxt))
(setq html (vlax-create-object "htmlfile"))
(vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'setData "Text" ExlTxt)
(vlax-release-object html)
)
(princ "\n寸法ではありません")
)
)
(princ "\nクリップボードにコピーしました")
(princ)
)
  • LUNE
  • 2025/04/23 (Wed) 17:37:00
Re: 寸法線の寸法値をエクセルに貼り付ける
Hamu様 LUNE様
ありがとうございました。
希望通りのものができました。
  • syu
  • 2025/04/24 (Thu) 11:08:17

返信フォーム






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