[討論]分享變更文字高度LISP(2版)
5 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]分享變更文字高度LISP(2版)
各位前輩們好!
小弟又上來分享自己寫的小東西了!
這次是變更文字高度的LISP,
可以依指示的圖層(單一圖層或多圖層),
或直接選取文字,
進而改變文字的高度!
以下為代碼:
2016/12/10影片說明檔來了...
小弟又上來分享自己寫的小東西了!
這次是變更文字高度的LISP,
可以依指示的圖層(單一圖層或多圖層),
或直接選取文字,
進而改變文字的高度!
以下為代碼:
- 代碼:
; 本程式為文字高度變更輔助小工具
; 支援軟體版本("AutoCAD")
; 設計者:Devin,Chou
; 版權所有,歡迎使用
; Rev.2(2016/06/02)
; 進版說明: 1.新增-物件選取判斷式:[全選(A)/單一圖層(S)/多圖層(M)]
(defun C:thc (/ L_X lc_s lc_m L_s m_lt m_in m_o L_mt L_m
s_in s_it n_th s_t s_td s_th )
(setvar "cmdecho" 0 )
(initget "A S M" )
(setq L_X
(getkword
(strcat "\n字高更新模式[全選(A)/單一圖層(S)/多圖層(M)]<A>:" )))
(if (= L_X nil )
(setq L_X "A" )) ; if.end
(if (= L_X "S" )
(setq lc_s 0 )) ; if.end
(if (= L_X "M" )
(setq lc_m 0 )) ; if.end
(while (= lc_s 0 )
(setq L_s
(assoc 8
(entget
(car
(entsel "\n請選取要變更字高的圖層(單一圖層):" )))))
(princ "\n圖層:" )(princ (cdr L_s ))
(setq lc_s 1 )) ; while-lc_s.end
(while (= lc_m 0 )
(setq m_lt '() m_in 0 )
(princ "\n請選取要變更字高的圖層(多圖層):" )
(setq m_o (ssget ))
(repeat (sslength m_o )
(setq L_mt
(assoc 8
(entget
(ssname m_o m_in ))))
(princ "\n圖層:" )(princ (cdr L_mt ))
(setq m_lt (cons L_mt m_lt ))
(setq m_in
(1+ m_in ))) ; repeat.end
(setq L_m
(cons '(-4 . "<OR")
(reverse
(cons '(-4 . "OR>") m_lt ))))
(setq lc_m 1 )) ; while-lc_m.end
(setq s_in 0 s_it 0 )
(setq n_th
(cons 40 (getreal "\n請輸入新字高:" )))
(princ "\n請選取文字:" )
(if (= L_X "A" )
(setq s_t
(ssget
'((0 . "TEXT"))))) ; if.end
(if (= L_X "S" )
(setq s_t
(ssget
(list '(0 . "TEXT") L_s )))) ; if.end
(if (= L_X "M" )
(setq s_t
(ssget
(cons '(0 . "TEXT") L_m )))) ; if.end
(repeat (sslength s_t )
(setq s_td
(entget
(ssname s_t s_in )))
(setq s_in
(1+ s_in ))
(setq s_th
(assoc 40 s_td ))
(setq s_td
(subst n_th s_th s_td ))
(entmod s_td )
(setq s_it
(1+ s_it ))
) ; repeat
(princ "\n已變更個數:" )(princ (itoa s_it ))(princ "個" )
(prin1)
) ; end
(princ "\nC:thc(2版)")
(prin1)
2016/12/10影片說明檔來了...
Tiger&蘋果爸 寫到: 謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
- 附件
devinchou- 初級會員
- 文章總數 : 56
年齡 : 46
來自 : 基隆
職業 : 鋼筋檢料
愛好 : 寫作.閱讀.烹飪
個性 : 懶小孩一枚
使用年資 : 每天
使用版本 : 2006.2008
積分 : 3
經驗值 : 4039
威望值 : 192
注冊日期 : 2015-02-15
回復: [討論]分享變更文字高度LISP(2版)
提供一些淺見與大家分享!
程式思維可以考量使用者操作錯誤時的處置!
例如:請輸入新字高時,使用者誤按enter鍵,程式就跳下一步驟,這樣無法順利執行。
我把這二行改寫
改為使用者需輸入數值,程式才可往下一步驟執行
不知道有沒有更好的寫法,可以更精簡一點,希望論壇前輩們有空指導交流吧~
PS:另外,可以加入「中斷處理的副程式」喔~
感恩!
程式思維可以考量使用者操作錯誤時的處置!
例如:請輸入新字高時,使用者誤按enter鍵,程式就跳下一步驟,這樣無法順利執行。
我把這二行改寫
- 代碼:
(setq n_th
(cons 40 (getreal "\n請輸入新字高:" )))
改為使用者需輸入數值,程式才可往下一步驟執行
- 代碼:
(while (not (setq n_th1 (getreal "\n請輸入新字高:" )))
(princ "**重新輸入新字高**")
)
(setq n_th (cons 40 n_th1))
不知道有沒有更好的寫法,可以更精簡一點,希望論壇前輩們有空指導交流吧~
PS:另外,可以加入「中斷處理的副程式」喔~
感恩!
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論]分享變更文字高度LISP(2版)
感謝蘋果爸!!!
另外我這個程式還有另外一個問題...
以多選方式選擇圖層時...
不小心選到一樣的圖層...
程式不會提出警告...
這一點也是我要再修正的...
另外我這個程式還有另外一個問題...
以多選方式選擇圖層時...
不小心選到一樣的圖層...
程式不會提出警告...
這一點也是我要再修正的...
devinchou- 初級會員
- 文章總數 : 56
年齡 : 46
來自 : 基隆
職業 : 鋼筋檢料
愛好 : 寫作.閱讀.烹飪
個性 : 懶小孩一枚
使用年資 : 每天
使用版本 : 2006.2008
積分 : 3
經驗值 : 4039
威望值 : 192
注冊日期 : 2015-02-15
回復: [討論]分享變更文字高度LISP(2版)
在此分享一些心得。a.如果能在程式執行前段,預設一個變數值(即字高值),當按下鍵盤[Enter]鍵或直接由滑鼠執行[Enter]鍵,就能確認這個字高值。而不必每一次都要由鍵盤輸入字高數字,對繪圖者來說是非常快速又方便,畢竟每一張圖面絕大部分的文字高度都是一致的。b.將預設變數值寫在程式前段,除了方便自己快速更改之外,也讓程式的使用者容易修改。
yu0678- 高級會員
- 文章總數 : 150
年齡 : 65
來自 : Taipei
職業 : 設計
愛好 : 設計
個性 : 無不良嗜好
使用年資 : 25
使用版本 : 2016
積分 : 10
經驗值 : 5999
威望值 : 635
注冊日期 : 2012-05-30
回復: [討論]分享變更文字高度LISP(2版)
謝謝提供意見,yu0678 寫到:在此分享一些心得。a.如果能在程式執行前段,預設一個變數值(即字高值),當按下鍵盤[Enter]鍵或直接由滑鼠執行[Enter]鍵,就能確認這個字高值。而不必每一次都要由鍵盤輸入字高數字,對繪圖者來說是非常快速又方便,畢竟每一張圖面絕大部分的文字高度都是一致的。b.將預設變數值寫在程式前段,除了方便自己快速更改之外,也讓程式的使用者容易修改。
我進版時會把預設值和上一個輸入值,
寫入程式裡的,
感恩呀!!!
devinchou- 初級會員
- 文章總數 : 56
年齡 : 46
來自 : 基隆
職業 : 鋼筋檢料
愛好 : 寫作.閱讀.烹飪
個性 : 懶小孩一枚
使用年資 : 每天
使用版本 : 2006.2008
積分 : 3
經驗值 : 4039
威望值 : 192
注冊日期 : 2015-02-15
回復: [討論]分享變更文字高度LISP(2版)
影片說明檔來了...
devinchou- 初級會員
- 文章總數 : 56
年齡 : 46
來自 : 基隆
職業 : 鋼筋檢料
愛好 : 寫作.閱讀.烹飪
個性 : 懶小孩一枚
使用年資 : 每天
使用版本 : 2006.2008
積分 : 3
經驗值 : 4039
威望值 : 192
注冊日期 : 2015-02-15
回復: [討論]分享變更文字高度LISP(2版)
感謝大大分享,非常實用呢。
jackiehover- 初級會員
- 文章總數 : 160
年齡 : 38
來自 : 桃園市八德區
職業 : 消防設備、水電設計
愛好 : 上網、遊戲、網拍
個性 : 平易近人
使用年資 : 2014/09至今
使用版本 : 2014、15、16
積分 : 1
經驗值 : 4148
威望值 : 96
注冊日期 : 2015-08-31
回復: [討論]分享變更文字高度LISP(2版)
好程式.~!!
由於每張圖的出圖比例不同.所以字高不一.~我自己是在選完文字之後.會順便提示所選文字的目前字高.~~做為變高字高的參考.~
由於每張圖的出圖比例不同.所以字高不一.~我自己是在選完文字之後.會順便提示所選文字的目前字高.~~做為變高字高的參考.~
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8035
威望值 : 1191
注冊日期 : 2009-06-03
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章