[討論]選取字串A及字串B,輸入文字間距程式
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]選取字串A及字串B,輸入文字間距程式
傳送門 >> 分享lsp-文字排間距Joseph 寫到:選取字串A及字串B,輸入文字間距,程式自動幫你排間距。
由"Joseph"所發表的文字間距。發現 只有文字對正方式在左時,才能作動。其他對正方式則無法作動,請問有其他解決方法,讓其他對正方式也能作動
老水牛- 初級會員
- 文章總數 : 107
年齡 : 63
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 6127
威望值 : 0
注冊日期 : 2008-10-17
回復: [討論]選取字串A及字串B,輸入文字間距程式
Joseph分享的程式是更新文字基準點,應該跟對齊方式沒有差別。
以前寫的的對齊程式,以群碼10來作對齊基準,沒有限制物件種類,用看看吧!
以前寫的的對齊程式,以群碼10來作對齊基準,沒有限制物件種類,用看看吧!
- 代碼:
(defun c:dhx (/ ss pt dy ent_lst endata en-pt)
(setq os (getvar "osmode"))
(setvar "cmdecho" 0)
(setq ss nil)
(setq pt nil)
(setq dy nil)
(setq ss (ssget))
(setq pt (getpoint "\n選擇對齊基準點:"))
(setq dy (getreal "\nY向間距:<未輸入則Y座標不變>"))
(setq ent_lst nil)
(setq i 0)
(repeat (sslength ss)
(setq ent_lst (append ent_lst (list (ssname ss i))))
(setq i (1+ i))
)
;按Y座標排序start Y:大->小
(setq ent_lst (vl-sort ent_lst
'(lambda (e1 e2)
(> (caddr (assoc 10 (entget e1)))
(caddr (assoc 10 (entget e2)))
)
)
)
) ;按Y座標排序end
(if (/= dy nil)
(progn
(setq endata nil)
(setq en-pt nil)
(setq i 0)
(foreach n ent_lst
(setq endata (entget n))
(setq en-pt (cdr (assoc 10 endata)))
(setq endata (subst (cons 10 (list (car pt) (+ (cadr pt) (* i -1 dy)) (caddr en-pt)))
(assoc 10 endata)
endata
)
)
(entmod endata)
(setq i (1+ i))
)
)
(progn
(setq endata nil)
(setq en-pt nil)
(foreach n ent_lst
(setq endata (entget n))
(setq en-pt (cdr (assoc 10 endata)))
(setq endata (subst (cons 10 (list (car pt) (cadr en-pt) (caddr en-pt)))
(assoc 10 endata)
endata
)
)
(entmod endata)
)
)
)
(setvar "osmode" os)
(princ)
)
Atsai- 中級會員
- 文章總數 : 167
年齡 : 49
來自 : 台中
職業 : 工程
愛好 : 看漫畫
個性 : 樂天
使用年資 : 10
使用版本 : 2010
AutoCAD基礎篇等級 : 10星級
積分 : 8
經驗值 : 5929
威望值 : 524
注冊日期 : 2012-04-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章