AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]如何將圖元表裡的元素用多行文字呈現

上一篇主題 下一篇主題 向下

[討論]如何將圖元表裡的元素用多行文字呈現

發表 由 hoodpinrh0829 于 2014-09-29, 13:58

問題1:如何將圖元表裡的元素用多行文字呈現
希望大大可以舉個例子 竊喜
多行文字的系統變數我一直找不到,大大可否指點我. 愛哭
avatar
hoodpinrh0829
一般會員
一般會員

文章總數 : 31
年齡 : 35
來自 : 桃園
職業 : 待業
愛好 : 到處走走
個性 : 內向
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1511
威望值 : 0
注冊日期 : 2014-02-27
男 處女座 狗

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 li60830 于 2014-09-30, 08:32

這我也不懂~希望有人能解答~
avatar
li60830
初級會員
初級會員

文章總數 : 310
年齡 : 46
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 2
經驗值 : 3266
威望值 : 304
注冊日期 : 2013-04-17
藍鵲697號
男 處女座 豬

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 835 于 2014-10-01, 08:56

請問你是要在lisp中以「多行文字」呈現文字內容之語法嗎?
如果是,以下的語法可以參考:(如果不是,請不要介意我答非所問)
(command "mtext" pause pause (strcat "1." "第一行測試") (strcat "2." "第二行測試") (strcat "3." "最後一行測試") "")
概略說明如下:
1.前面2個「pause」只是讓你可以在圖面中手動點選(框選)多行文字的角點;當然你也可以直接給定點位座標
2.在lisp語法裡,多行文字多行文字的換行不用打「""」(enter),只要把每一行所要填寫的文字內容區隔開來即可
3.寫完所有之內容後,加一個「""」(enter),就結束多行文字之撰寫而跳出該行程式了
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2333
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 hoodpinrh0829 于 2014-10-01, 13:23

835 寫到:請問你是要在lisp中以「多行文字」呈現文字內容之語法嗎?
如果是,以下的語法可以參考:(如果不是,請不要介意我答非所問)
(command "mtext" pause pause (strcat "1." "第一行測試") (strcat "2." "第二行測試") (strcat "3." "最後一行測試") "")
概略說明如下:
1.前面2個「pause」只是讓你可以在圖面中手動點選(框選)多行文字的角點;當然你也可以直接給定點位座標
2.在lisp語法裡,多行文字多行文字的換行不用打「""」(enter),只要把每一行所要填寫的文字內容區隔開來即可
3.寫完所有之內容後,加一個「""」(enter),就結束多行文字之撰寫而跳出該行程式了



謝謝大大給我另一個法方,我可以試看看.

我說明一下我的想法好了,
我的想法是可以點選某二個標註,然後用這二個標註裡的元素裡的 (40 . ??? ).
有autocad裡的指令text呈現出來.
或是某個元素做統計之類的事來,做前置作業.
avatar
hoodpinrh0829
一般會員
一般會員

文章總數 : 31
年齡 : 35
來自 : 桃園
職業 : 待業
愛好 : 到處走走
個性 : 內向
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1511
威望值 : 0
注冊日期 : 2014-02-27
男 處女座 狗

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 hoodpinrh0829 于 2014-10-14, 05:42

(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)

)





請大大幫我看一下我哪裡出錯了

最後文字沒有出現.
avatar
hoodpinrh0829
一般會員
一般會員

文章總數 : 31
年齡 : 35
來自 : 桃園
職業 : 待業
愛好 : 到處走走
個性 : 內向
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1511
威望值 : 0
注冊日期 : 2014-02-27
男 處女座 狗

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 835 于 2014-10-14, 11:18

要將某內容書寫成文字時,該內容的格式需為「字串」,而非「串列」...
所以要先將原始程式中「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)
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2333
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 ginse0727 于 2014-10-15, 05:55

分享林美櫻老師提供的群碼一覽程式,之前在翔虹網站上找到的,再次感謝林老師,順便提供給大家參考,

;圖元群碼一覽
代碼:

(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)
  )
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4230
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 hoodpinrh0829 于 2014-10-15, 14:22

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)




謝謝大大的指教,目前無誤.
我還自己加了一些東西未來在拿出來分享給各位.
avatar
hoodpinrh0829
一般會員
一般會員

文章總數 : 31
年齡 : 35
來自 : 桃園
職業 : 待業
愛好 : 到處走走
個性 : 內向
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1511
威望值 : 0
注冊日期 : 2014-02-27
男 處女座 狗

回頂端 向下

回復: [討論]如何將圖元表裡的元素用多行文字呈現

發表 由 hoodpinrh0829 于 2014-10-15, 14:25

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案例,好讓我們做更多的練習.
avatar
hoodpinrh0829
一般會員
一般會員

文章總數 : 31
年齡 : 35
來自 : 桃園
職業 : 待業
愛好 : 到處走走
個性 : 內向
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1511
威望值 : 0
注冊日期 : 2014-02-27
男 處女座 狗

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章