[討論]如何將圖元表裡的元素用多行文字呈現
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]如何將圖元表裡的元素用多行文字呈現
問題1:如何將圖元表裡的元素用多行文字呈現
希望大大可以舉個例子
多行文字的系統變數我一直找不到,大大可否指點我.
希望大大可以舉個例子
多行文字的系統變數我一直找不到,大大可否指點我.
hoodpinrh0829- 一般會員
- 文章總數 : 76
年齡 : 42
來自 : 桃園
職業 : 板金
愛好 : 到處走走
個性 : 內向
使用年資 : 5年以上
使用版本 : 2019
經驗值 : 4348
威望值 : 0
注冊日期 : 2014-02-27
回復: [討論]如何將圖元表裡的元素用多行文字呈現
這我也不懂~希望有人能解答~
li60830- 初級會員
- 文章總數 : 345
年齡 : 53
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 5
經驗值 : 5983
威望值 : 340
注冊日期 : 2013-04-17
回復: [討論]如何將圖元表裡的元素用多行文字呈現
請問你是要在lisp中以「多行文字」呈現文字內容之語法嗎?
如果是,以下的語法可以參考:(如果不是,請不要介意我答非所問)
(command "mtext" pause pause (strcat "1." "第一行測試") (strcat "2." "第二行測試") (strcat "3." "最後一行測試") "")
概略說明如下:
1.前面2個「pause」只是讓你可以在圖面中手動點選(框選)多行文字的角點;當然你也可以直接給定點位座標
2.在lisp語法裡,多行文字多行文字的換行不用打「""」(enter),只要把每一行所要填寫的文字內容區隔開來即可
3.寫完所有之內容後,加一個「""」(enter),就結束多行文字之撰寫而跳出該行程式了
如果是,以下的語法可以參考:(如果不是,請不要介意我答非所問)
(command "mtext" pause pause (strcat "1." "第一行測試") (strcat "2." "第二行測試") (strcat "3." "最後一行測試") "")
概略說明如下:
1.前面2個「pause」只是讓你可以在圖面中手動點選(框選)多行文字的角點;當然你也可以直接給定點位座標
2.在lisp語法裡,多行文字多行文字的換行不用打「""」(enter),只要把每一行所要填寫的文字內容區隔開來即可
3.寫完所有之內容後,加一個「""」(enter),就結束多行文字之撰寫而跳出該行程式了
835- 初級會員
- 文章總數 : 36
年齡 : 46
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 4920
威望值 : 59
注冊日期 : 2012-01-02
回復: [討論]如何將圖元表裡的元素用多行文字呈現
835 寫到:請問你是要在lisp中以「多行文字」呈現文字內容之語法嗎?
如果是,以下的語法可以參考:(如果不是,請不要介意我答非所問)
(command "mtext" pause pause (strcat "1." "第一行測試") (strcat "2." "第二行測試") (strcat "3." "最後一行測試") "")
概略說明如下:
1.前面2個「pause」只是讓你可以在圖面中手動點選(框選)多行文字的角點;當然你也可以直接給定點位座標
2.在lisp語法裡,多行文字多行文字的換行不用打「""」(enter),只要把每一行所要填寫的文字內容區隔開來即可
3.寫完所有之內容後,加一個「""」(enter),就結束多行文字之撰寫而跳出該行程式了
謝謝大大給我另一個法方,我可以試看看.
我說明一下我的想法好了,
我的想法是可以點選某二個標註,然後用這二個標註裡的元素裡的 (40 . ??? ).
有autocad裡的指令text呈現出來.
或是某個元素做統計之類的事來,做前置作業.
hoodpinrh0829- 一般會員
- 文章總數 : 76
年齡 : 42
來自 : 桃園
職業 : 板金
愛好 : 到處走走
個性 : 內向
使用年資 : 5年以上
使用版本 : 2019
經驗值 : 4348
威望值 : 0
注冊日期 : 2014-02-27
回復: [討論]如何將圖元表裡的元素用多行文字呈現
(defun c:hoodpinrh ()
(setvar "cmdecho" 0)
(setvar "OSMODE" 0)
(setq c1_data (entget (car (entsel))));;;點選某標註
(setq ca1 (cdr (assoc 42 c1_data)))
(setq c2_data (entget (car (entsel))));;;點選另一個標註
(setq cb1 (cdr (assoc 42 c2_data)))
(setq cd2 (list ca1 "x" cb1));;;結合串列
(setq cc1 (getpoint "請點撰文字位置:"))
(command "-text" cc1 "20" "0" cd2 "");;;cd2==>沒有東西出現 為什麼??
(prin1)
)
請大大幫我看一下我哪裡出錯了
最後文字沒有出現.
(setvar "cmdecho" 0)
(setvar "OSMODE" 0)
(setq c1_data (entget (car (entsel))));;;點選某標註
(setq ca1 (cdr (assoc 42 c1_data)))
(setq c2_data (entget (car (entsel))));;;點選另一個標註
(setq cb1 (cdr (assoc 42 c2_data)))
(setq cd2 (list ca1 "x" cb1));;;結合串列
(setq cc1 (getpoint "請點撰文字位置:"))
(command "-text" cc1 "20" "0" cd2 "");;;cd2==>沒有東西出現 為什麼??
(prin1)
)
請大大幫我看一下我哪裡出錯了
最後文字沒有出現.
hoodpinrh0829- 一般會員
- 文章總數 : 76
年齡 : 42
來自 : 桃園
職業 : 板金
愛好 : 到處走走
個性 : 內向
使用年資 : 5年以上
使用版本 : 2019
經驗值 : 4348
威望值 : 0
注冊日期 : 2014-02-27
回復: [討論]如何將圖元表裡的元素用多行文字呈現
要將某內容書寫成文字時,該內容的格式需為「字串」,而非「串列」...
所以要先將原始程式中「ca1」、「cb1」的型態(實數)轉為「字串」(運用函數"rtos"),
再配合函數"strcat"結合「ca1」、「x」、「cb1」等字串為一新的字串;
另外,使用"text"的指令時,該字高與文字角度的參數應輸入「實數」而非「字串」,
且輸入文字內容後無須再寫 "" (enter),
所以該程式需修正之部分共計兩行,如下所示:
(setq cd2 (list ca1 "x" cb1))
(setq cd2 (strcat (rtos ca1 2 2) "x" (rtos cb1 2 2)))
(command "-text" cc1 "20" "0" cd2 "")
(command "-text" cc1 20 0 cd2)
所以要先將原始程式中「ca1」、「cb1」的型態(實數)轉為「字串」(運用函數"rtos"),
再配合函數"strcat"結合「ca1」、「x」、「cb1」等字串為一新的字串;
另外,使用"text"的指令時,該字高與文字角度的參數應輸入「實數」而非「字串」,
且輸入文字內容後無須再寫 "" (enter),
所以該程式需修正之部分共計兩行,如下所示:
(setq cd2 (strcat (rtos ca1 2 2) "x" (rtos cb1 2 2)))
(command "-text" cc1 20 0 cd2)
835- 初級會員
- 文章總數 : 36
年齡 : 46
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 4920
威望值 : 59
注冊日期 : 2012-01-02
回復: [討論]如何將圖元表裡的元素用多行文字呈現
分享林美櫻老師提供的群碼一覽程式,之前在翔虹網站上找到的,再次感謝林老師,順便提供給大家參考,
;圖元群碼一覽
;圖元群碼一覽
- 代碼:
(defun c:getendata()
(vl-load-com)
(setq en(car(entsel "\選取圖元: ")))
(setq endata(entget en))
(setq filename(getstring "\n輸入圖元名稱: "))
(setq file(getfiled "圖元群碼列表" (strcat "c:/Documents and Settings/" filename "群碼列表" ".num") "num" 1))
(setq ff(open file "w"))
(write-line "圖元群碼一覽表" ff)
(write-line "=============================" ff)
(foreach en_num endata ;必需是串列資料才能寫入檔案
(princ en_num ff)
(princ "\n" ff)
)
(close ff)
(command "notepad" file)
(prin1)
)
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6812
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
回復: [討論]如何將圖元表裡的元素用多行文字呈現
835 寫到:要將某內容書寫成文字時,該內容的格式需為「字串」,而非「串列」...
所以要先將原始程式中「ca1」、「cb1」的型態(實數)轉為「字串」(運用函數"rtos"),
再配合函數"strcat"結合「ca1」、「x」、「cb1」等字串為一新的字串;
另外,使用"text"的指令時,該字高與文字角度的參數應輸入「實數」而非「字串」,
且輸入文字內容後無須再寫 "" (enter),
所以該程式需修正之部分共計兩行,如下所示:(setq cd2 (list ca1 "x" cb1))
(setq cd2 (strcat (rtos ca1 2 2) "x" (rtos cb1 2 2)))(command "-text" cc1 "20" "0" cd2 "")
(command "-text" cc1 20 0 cd2)
謝謝大大的指教,目前無誤.
我還自己加了一些東西未來在拿出來分享給各位.
hoodpinrh0829- 一般會員
- 文章總數 : 76
年齡 : 42
來自 : 桃園
職業 : 板金
愛好 : 到處走走
個性 : 內向
使用年資 : 5年以上
使用版本 : 2019
經驗值 : 4348
威望值 : 0
注冊日期 : 2014-02-27
回復: [討論]如何將圖元表裡的元素用多行文字呈現
ginse0727 寫到:分享林美櫻老師提供的群碼一覽程式,之前在翔虹網站上找到的,再次感謝林老師,順便提供給大家參考,
;圖元群碼一覽
- 代碼:
(defun c:getendata()
(vl-load-com)
(setq en(car(entsel "\選取圖元: ")))
(setq endata(entget en))
(setq filename(getstring "\n輸入圖元名稱: "))
(setq file(getfiled "圖元群碼列表" (strcat "c:/Documents and Settings/" filename "群碼列表" ".num") "num" 1))
(setq ff(open file "w"))
(write-line "圖元群碼一覽表" ff)
(write-line "=============================" ff)
(foreach en_num endata ;必需是串列資料才能寫入檔案
(princ en_num ff)
(princ "\n" ff)
)
(close ff)
(command "notepad" file)
(prin1)
)
謝謝大大的分享,我來自己使用看看.
還請各位大大們,
多多跟我們剛學autolisp的新人們分享前輩們autolisp案例,好讓我們做更多的練習.
hoodpinrh0829- 一般會員
- 文章總數 : 76
年齡 : 42
來自 : 桃園
職業 : 板金
愛好 : 到處走走
個性 : 內向
使用年資 : 5年以上
使用版本 : 2019
經驗值 : 4348
威望值 : 0
注冊日期 : 2014-02-27
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章