[已解決]如 快速選取 篩選"多行文字" 然後炸開
+2
shenhung
judyyai
6 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]如 快速選取 篩選"多行文字" 然後炸開
大家好~JUDY有一個問題
如 快速選取 篩選"多行文字" 這效果,可一次全選此圖多行文字,然後炸開
請問~ 除了快速選取"qselect 圖檔,多行文字" 並炸開
還有更快方法, 快速選取圖檔的多行文字,並炸開嗎?
有詢問友人~有一個 巨集+LISP語法
經測試~
測試的圖面有8個多行文字,
將以上語法,用工具選項版,製作按鈕
必須連按8次,才可以把圖面全部多行文字炸開
不知道是否可以,如快速選取(qselect) 篩選"多行文字" 這種效果,可以一次全選此圖多行文字,然後炸開!
在此之前, 我先前有先用一個LSP 把圖檔字形統一需要字形,
但是多行文字!沒變更到...有被鎖住,所以乾脆炸開
因為要修改的圖檔有200張~不知道是否有更快的方法~
如 快速選取 篩選"多行文字" 這效果,可一次全選此圖多行文字,然後炸開
請問~ 除了快速選取"qselect 圖檔,多行文字" 並炸開
還有更快方法, 快速選取圖檔的多行文字,並炸開嗎?
有詢問友人~有一個 巨集+LISP語法
- 代碼:
^C^CEXPLODE;(SSGET "X" '((0 . "MTEXT")));;
經測試~
測試的圖面有8個多行文字,
將以上語法,用工具選項版,製作按鈕
必須連按8次,才可以把圖面全部多行文字炸開
不知道是否可以,如快速選取(qselect) 篩選"多行文字" 這種效果,可以一次全選此圖多行文字,然後炸開!
在此之前, 我先前有先用一個LSP 把圖檔字形統一需要字形,
但是多行文字!沒變更到...有被鎖住,所以乾脆炸開
因為要修改的圖檔有200張~不知道是否有更快的方法~
judyyai 在 2014-06-11, 16:49 作了第 2 次修改
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
- 代碼:
(defun c:expt(/ ss i )
(setvar "cmdecho" 0)
(setq ss (ssget "x" '((0 . "MTEXT"))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(command "explode" (ssname ss i))
(setq i (1+ i))
(princ "\r處理中...") (princ i)
)
(prompt (strcat "\n共炸開" (rtos (sslength ss) 2 0) "個 MTEXT 圖元."))
)
(prompt "\n沒選到MTEXT圖元")
) ;if
(setvar "cmdecho" 1)
(princ)
)
炸開全圖MTEXT
EXPT.LSP 載點
https://db.tt/BiqzAwzw
配合腳本檔.就可以一次處理200張圖.
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
judyyai 寫到:大家好~JUDY有一個問題
請問~ 除了快速選取"qselect 圖檔,多行文字" 並炸開
還有更快方法, 快速選取圖檔的多行文字,並炸開嗎?
有詢問友人~有一個 巨集+LISP語法
- 代碼:
^C^CEXPLODE;(SSGET "X" '((0 . "MTEXT")));;
經測試~
測試的圖面有8個多行文字,
將以上語法,用工具選項版,製作按鈕
必須連按8次,才可以把圖面全部多行文字炸開
不知道是否可以,如快速選取(qselect) 篩選"多行文字" 這種效果,可以一次全選此圖多行文字,然後炸開!
在此之前, 我先前有先用一個LSP 把圖檔字形統一需要字形,
但是多行文字!沒變更到...有被鎖住,所以乾脆炸開
因為要修改的圖檔有200張~不知道是否有更快的方法~
我也來練習一下基本功........
_________________________________________________________↓留一空格
^C^C(command "explode" (SETQ DF (ssget "all" '((0 . "MTEXT")))) "") (prompt (strcat "\n共炸開" (rtos (sslength DF) 2 0) "個 MTEXT 圖元."))
或
(defun c:201()
(command "explode" (SETQ DF (ssget "all" '((0 . "MTEXT")))) "")
(prompt (strcat "\n共炸開" (rtos (sslength DF) 2 0) "個 MTEXT 圖元."))
(PRINC))
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7210
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
shenhung 寫到:
- 代碼:
(defun c:expt(/ ss i )
(setvar "cmdecho" 0)
(setq ss (ssget "x" '((0 . "MTEXT"))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(command "explode" (ssname ss i))
(setq i (1+ i))
(princ "\r處理中...") (princ i)
)
(prompt (strcat "\n共炸開" (rtos (sslength ss) 2 0) "個 MTEXT 圖元."))
)
(prompt "\n沒選到MTEXT圖元")
) ;if
(setvar "cmdecho" 1)
(princ)
)
炸開全圖MTEXT
EXPT.LSP 載點
https://db.tt/BiqzAwzw
配合腳本檔.就可以一次處理200張圖.
感謝shenhung 幫助~果然快更多了
再次感謝
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
adslwang 寫到:
我也來練習一下基本功........
_________________________________________________________↓留一空格
^C^C(command "explode" (SETQ DF (ssget "all" '((0 . "MTEXT")))) "") (prompt (strcat "\n共炸開" (rtos (sslength DF) 2 0) "個 MTEXT 圖元."))
或
(defun c:201()
(command "explode" (SETQ DF (ssget "all" '((0 . "MTEXT")))) "")
(prompt (strcat "\n共炸開" (rtos (sslength DF) 2 0) "個 MTEXT 圖元."))
(PRINC))
感謝幫忙
巨集+lsp語法 結果~
指令: (command "explode" (SETQ DF (ssget "all" '((0 . "MTEXT")))) "") nil
指令: (prompt (strcat "
也是一個一個按~
用lsp
指令: 201
不明的指令「201」。請按 F1 取得說明。
共炸開8個 MTEXT 圖元.
其實沒炸到,因為快速選取還有多行文字
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
shenhung 寫到:
- 代碼:
(defun c:expt(/ ss i )
(setvar "cmdecho" 0)
(setq ss (ssget "x" '((0 . "MTEXT"))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(command "explode" (ssname ss i))
(setq i (1+ i))
(princ "\r處理中...") (princ i)
)
(prompt (strcat "\n共炸開" (rtos (sslength ss) 2 0) "個 MTEXT 圖元."))
)
(prompt "\n沒選到MTEXT圖元")
) ;if
(setvar "cmdecho" 1)
(princ)
)
炸開全圖MTEXT
EXPT.LSP 載點
https://db.tt/BiqzAwzw
配合腳本檔.就可以一次處理200張圖.
前輩請教一下,為麼你寫的這一個分解可以分解,而有的時後要加入(setvar "qaflags" 1)這個後才能分解呢?
我練習寫的201,應該是缺少了裏面這一個,才導致找的到,分解不掉,這個問題在困擾了我好久..............
另外judy可以提供一下無法分解的多行文字圖檔嘛? 留下幾個文字就可以 圖內容物不需要........
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7210
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
試過自行指令式操作,輸入EXPLODE,然後再輸入(SSGET "X" '((0 . "MTEXT"))),這樣是可以一次全部分解的~judyyai 寫到:請問~ 除了快速選取"qselect 圖檔,多行文字" 並炸開
還有更快方法, 快速選取圖檔的多行文字,並炸開嗎?
有詢問友人~有一個 巨集+LISP語法
- 代碼:
^C^CEXPLODE;(SSGET "X" '((0 . "MTEXT")));;
沒想到改成「巨集+LISP語法」就不行,寫成lisp程式也不行...
查過網路上的文章,好像程式不支援EXPLODE操作!
後來看到 adslwang大大 分享的 qaflags系統變數改為 1 就可以囉(學到一招)~
▼「巨集+LISP語法」方式
- 代碼:
^C^Cqaflags;1;EXPLODE;(SSGET "X" '((0 . "MTEXT")));;
▼「LISP」方式
- 代碼:
(DEFUN C:XMT ()
(setvar "qaflags" 1)
(command "explode" (ssget "_X" '((0 . "MTEXT"))) "")
(princ)
)
qaflags這個系統變數...找不到相關資訊,可否說明是什麼意思啊~adslwang 寫到:前輩請教一下,為麼你寫的這一個分解可以分解,而有的時後要加入(setvar "qaflags" 1)這個後才能分解呢?
我練習寫的201應該是缺少了裏面這一個才導致找的到分解不掉,這個問題在困擾了我好久..............
另外juddy可以提供一下無法分解的多行文字圖檔嘛? 留下幾個文字就可以 圖內容物不需要........
shenhung前輩shenhung 寫到:炸開全圖MTEXT
EXPT.LSP 載點
https://db.tt/BiqzAwzw
配合腳本檔.就可以一次處理200張圖.
我試過程式不行...不知哪裡出問題啊~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
adslwang 寫到:
另外judy可以提供一下無法分解的多行文字圖檔嘛? 留下幾個文字就可以 圖內容物不需要........
剛剛本想 隨意打上8個多行文字 上傳上來
後來發現~
其實有炸開多行文字
但是跟巨集一樣 要輸入7次
因為一次 指令201(註:須新增lsp)
只能炸開1次 所以有8組多行文字 必須分批炸開7次
judyyai 在 2014-06-10, 07:42 作了第 1 次修改
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
Tiger&蘋果爸 寫到:
▼「巨集+LISP語法」方式
- 代碼:
^C^Cqaflags;1;EXPLODE;(SSGET "X" '((0 . "MTEXT")));;
謝謝蘋爸 巨集+lsp語法
測試可行~太感謝你們了~得救了
ps.lsp也是ok的~
只不過 不是很懂內容~
蘋爸得內文比較短~跟shenhung前輩的效果是一樣的
剛剛發現 若qaflags=1
強迫更換圖檔字形的lsp不能用
- 代碼:
(defun c:ss1 ()
(SETVAR "CMDECHO" 0)
(COMMAND "UNDO" "BE")
(command "regenauto" "off")
(setq stytbl (tblnext "style" T))
(while stytbl
(progn (setq style (cdr (assoc 2 stytbl)))
(command "style" style "isocteur.ttf" "" 1 "" "" "" "")
(setq stytbl (tblnext "style"))
)
)
(command "regenauto" "on")
(COMMAND "UNDO" "E")
(PRIN1)
)
除非改回qaflags=0
但是用shenhung前輩的lsp沒有這個問題
因為不用手動更改qaflags=1
不過要qaflags=0 狀態下
後來將巨集+lsp語法改如下 就可以了
- 代碼:
^C^Cqaflags;1;EXPLODE;(SSGET "X" '((0 . "MTEXT")));;qaflags;0
ps2.judy的問題解決了~不過大家還是有疑問~所以繼續讓它"討論" 下去~
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
fqflags 這個變數以前有討論過.只是我們都忘了. https://www.autocad-tw.com/t14991-topic~
不過今天寫了這個程式.讓自己認識這個系統變數.真是魚幫水.水幫魚阿.~!!
蘋果爸 ,你方便給個測試圖檔嗎?
後來你寫的XMT.LSP 應該是最好的解決方式了.~程式又短.~!!
JUDY後來反應的qaflags=1時.變更字型不能用的話..程式內就要先把qaflags 關閉再執行.
強迫變更字型的令一種寫法..不受qaflags變數影響.
SS1.LSP 載點
https://db.tt/WxD31k33
不過今天寫了這個程式.讓自己認識這個系統變數.真是魚幫水.水幫魚阿.~!!
蘋果爸 ,你方便給個測試圖檔嗎?
後來你寫的XMT.LSP 應該是最好的解決方式了.~程式又短.~!!
JUDY後來反應的qaflags=1時.變更字型不能用的話..程式內就要先把qaflags 關閉再執行.
強迫變更字型的令一種寫法..不受qaflags變數影響.
- 代碼:
(defun c:ss1(/ sty:list tblname_list)
(setvar "cmdecho" 0)
(command "undo" "be")
(setq sty:list (tblnext "style" T))
(while sty:list
(setq tblname (tblobjname "style" (cdr (assoc 2 sty:list)))) ;取得表物件
(setq tblname_lis (entget tblname))
(setq tblname_lis (entmod (subst (cons 3 "isocteur.ttf") (assoc 3 tblname_lis) tblname_lis))) ;字體檔
(setq tblname_lis (entmod (subst (cons 4 "") (assoc 4 tblname_lis) tblname_lis))) ;大字體檔
(setq tblname_iis (entmod (subst (cons 41 1 ) (assoc 41 tblname_lis) tblname_lis))) ;字型寬度
(setq tblname_lis (entmod (subst (cons 50 0 ) (assoc 50 tblname_lis) tblname_lis))) ;字型傾斜度
(entupd tblname)
(setq sty:list (tblnext "style"))
)
(command "regen")
(command "undo" "e")
(setvar "cmdecho" 1)
(princ)
)
SS1.LSP 載點
https://db.tt/WxD31k33
Tiger&蘋果爸 寫到: 謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
shenhung大大shenhung 寫到:蘋果爸 ,你方便給個測試圖檔嗎?
後來你寫的XMT.LSP 應該是最好的解決方式了.~程式又短.~!!
後來重開2015,使用NEW指令,建立多行文字,再測一次就OK囉~
不過會出現以下訊息!
真的有討論過...都忘了!shenhung 寫到:fqflags 這個變數以前有討論過.只是我們都忘了. https://www.autocad-tw.com/t14991-topic~
不過今天寫了這個程式.讓自己認識這個系統變數.真是魚幫水.水幫魚阿.~!!
年紀大記憶力衰退囉~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
shenhung 寫到:fqflags 這個變數以前有討論過.只是我們都忘了. https://www.autocad-tw.com/t14991-topic~
不過今天寫了這個程式.讓自己認識這個系統變數.真是魚幫水.水幫魚阿.~!!
原來這個變數QAFLAGS是這樣應用~
當初也是上網撿到的資訊~
謝謝shenhung前輩~
還幫忙修改 強迫變更字形 LSP
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
不懂語法的運行,所以上面的文章都看不懂,
感覺上~有一個lisp可以把字炸開,但是這個lisp要執行5次或7次才能完全炸開,
那是否可以把這個lisp加入到acad之後,作一個工具按紐,
這個按鈕是執行5次或7次住個lisp,那是不是會變成按一次就好了,
不好意思~~我的想法,要是說錯了大家就笑一笑就好了~^_^
感覺上~有一個lisp可以把字炸開,但是這個lisp要執行5次或7次才能完全炸開,
那是否可以把這個lisp加入到acad之後,作一個工具按紐,
這個按鈕是執行5次或7次住個lisp,那是不是會變成按一次就好了,
不好意思~~我的想法,要是說錯了大家就笑一笑就好了~^_^
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
總教頭 寫到:不懂語法的運行,所以上面的文章都看不懂,
感覺上~有一個lisp可以把字炸開,但是這個lisp要執行5次或7次才能完全炸開,
那是否可以把這個lisp加入到acad之後,作一個工具按紐,
這個按鈕是執行5次或7次住個lisp,那是不是會變成按一次就好了,
不好意思~~我的想法,要是說錯了大家就笑一笑就好了~^_^
謝謝總大~關注~
原本只能一次炸開一個多行文字
由於 一個不存在的變數
- 代碼:
QAFLAGS是個未公佈的變量,用來控制LISP中使用EXPLODE炸開一個選擇集的時候的表現。
如果QAFLAGS=0,那麼用LISP執行
(command "explode" ss "")的時候僅僅能炸開選擇集的第一個實體,其他實體炸不了.
如果QAFLAGS=1,可以炸開選擇集所有實體。
這個變量不影響標準的EXPLODE命令的執行。
所以一次全炸開 我所需要的多行文字 這類物件
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [已解決]如 快速選取 篩選"多行文字" 然後炸開
感謝大大無私地分享......感恩
rickyyang- 專屬會員
- 文章總數 : 196
年齡 : 45
來自 : 台北
職業 : 營建暨室內裝修工程管理
愛好 : 喜愛黃金獵犬、哈士奇
個性 : 誠信、正義、穩健
使用年資 : 17
使用版本 : AutoCAD 2023
經驗值 : 4590
威望值 : 36
注冊日期 : 2014-11-11
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章