[已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
+3
jassica123
vl7120
aaronchung.tw
7 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
[問題]我想要把AUTO CAD裡的文字匯出到XX.TXT的文字檔裡,我搜尋文章發現以下兩種方法可以實現:
方法一:用AutoCAD 2008「資料萃取」精靈 dataextraction指令,這個有符合我所要的功能,但匯出步驟不夠精簡。
優點是匯出的文字會依序排列(依照數字英文順序排列)。
方法二:使用以下這個LISP,可以很快速的匯出*.TXT,但匯出的文字不會依照數字英文順序排列。
還有匯出的檔名是否可以給個固定的儲存路徑及檔名(如:固定匯出後儲存為D:\abc\abc.txt)
我搜尋到的LISP程式如下:請問要如何修改:(順帶附加程式解釋,方便的話,謝謝)
(defun c:TEXTEX()
(setq ffn (getfiled "寫出檔案" "" "" 1))
(princ "\n選取文字...")
(setq ss (ssget))
(setq ff (open ffn "w"))
(setq i 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq sstyp (cdr (assoc 0 ssdata)))
(if (= sstyp "TEXT")
(progn
(setq txt (cdr (assoc 1 ssdata)))
(princ txt ff)
(princ "\n" ff)
)
)
(setq i (1+ i))
)
(close ff)
(princ (strcat "\n寫出檔案: " ffn))
(prin1)
)
對於回覆者由衷感謝,感激不盡。
程式原始文章:AutoCAD 2008「資料萃取」精靈 dataextraction指令
http://kv1012tiger.pixnet.net/blog/post/102358957
方法一:用AutoCAD 2008「資料萃取」精靈 dataextraction指令,這個有符合我所要的功能,但匯出步驟不夠精簡。
優點是匯出的文字會依序排列(依照數字英文順序排列)。
方法二:使用以下這個LISP,可以很快速的匯出*.TXT,但匯出的文字不會依照數字英文順序排列。
還有匯出的檔名是否可以給個固定的儲存路徑及檔名(如:固定匯出後儲存為D:\abc\abc.txt)
我搜尋到的LISP程式如下:請問要如何修改:(順帶附加程式解釋,方便的話,謝謝)
(defun c:TEXTEX()
(setq ffn (getfiled "寫出檔案" "" "" 1))
(princ "\n選取文字...")
(setq ss (ssget))
(setq ff (open ffn "w"))
(setq i 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq sstyp (cdr (assoc 0 ssdata)))
(if (= sstyp "TEXT")
(progn
(setq txt (cdr (assoc 1 ssdata)))
(princ txt ff)
(princ "\n" ff)
)
)
(setq i (1+ i))
)
(close ff)
(princ (strcat "\n寫出檔案: " ffn))
(prin1)
)
對於回覆者由衷感謝,感激不盡。
程式原始文章:AutoCAD 2008「資料萃取」精靈 dataextraction指令
http://kv1012tiger.pixnet.net/blog/post/102358957
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
是不是很難的問題,請求會的高手幫幫忙。謝謝您!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
這個LISP匯出的文字是依照選取順序排列。
若要固定匯出後儲存為D:\abc\abc.txt
D槽需有abc這個子目錄
則修改為(setq ffn (getfiled "寫出檔案" "D:\\abc\\abc.txt" "" 1))
若要固定匯出後儲存為D:\abc\abc.txt
D槽需有abc這個子目錄
則修改為(setq ffn (getfiled "寫出檔案" "D:\\abc\\abc.txt" "" 1))
vl7120- 初級會員
- 文章總數 : 91
年齡 : 55
來自 : 高雄
職業 : 待業
愛好 : 旅遊
個性 : 木訥
使用年資 : 新手初學
使用版本 : 2000
積分 : 1
經驗值 : 5293
威望值 : 45
注冊日期 : 2011-07-02
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
vl7120 寫到:這個LISP匯出的文字是依照選取順序排列。
若要固定匯出後儲存為D:\abc\abc.txt
D槽需有abc這個子目錄
則修改為(setq ffn (getfiled "寫出檔案" "D:\\abc\\abc.txt" "" 1))
我試了用可以儲存在自己設定固定的檔名了,感謝您的回覆與指導。
至於以選取順序這個部份要是想要用框選多個的方法選取,
然後匯出的文字會依照數字英文順序排列,要怎麼改寫呢?懇請賜教。謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
jassica123- 初級會員
- 文章總數 : 77
年齡 : 38
來自 : 台南
職業 : 行政
愛好 : 研究
個性 : 安靜
使用年資 : 7年
使用版本 : 2015
積分 : 2
經驗值 : 5821
威望值 : 57
注冊日期 : 2010-01-11
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
jassica123 寫到:一定要排序匯出嗎?
或許你可以利用 excel 開啟 .txt 的檔案再去排序可以嗎?
想要省下煩覆的步驟,所以才有這樣的需求。謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
個人淺見如下:
原則上字串本身無法做排序,但串列可以....
所以只要將圖面上之字串逐一加入至某一串列中,
即可運用 acad_strlsort 函數對其做排列了
修改後之程式如下:
亦請版上高手不吝指正,
謝謝
原則上字串本身無法做排序,但串列可以....
所以只要將圖面上之字串逐一加入至某一串列中,
即可運用 acad_strlsort 函數對其做排列了
修改後之程式如下:
- 代碼:
(defun c:textex ()
(setq ffn (getfiled "寫出檔案" "" "txt" 1)) ;;直接指定匯出檔案之附檔名為 .txt
(princ "\n選取文字...")
(setq ss (ssget (list (cons 0 "text")))) ;;直接令選集 ss 只會選擇文字
(setq ff (open ffn "w"))
(setq txt-list '()) ;;先令字串的串列集合為空串列,如此才能運用 cons 的函數將字串逐一加入其中
(setq i 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
;;; (setq sstyp (cdr (assoc 0 ssdata)))
;;; (if (= sstyp "TEXT")
;;; (progn
(setq txt (cdr (assoc 1 ssdata)))
(setq txt-list (cons txt txt-list)) ;;將圖面上之字串逐一加入串列集合(txt-list)中
;;; (princ txt ff)
;;; (princ "\n" ff)
;;; )
;;; )
(setq i (1+ i))
)
(setq txt-list-ok (acad_strlsort txt-list)) ;;運用函數 acad_strlsort 做排序
(foreach pp2 txt-list-ok
(princ pp2 ff)
(princ "\n" ff)
) ;;逐一將字串集合中的字串寫出
(close ff)
(princ (strcat "\n寫出檔案: " ffn))
(command "notepad" ffn) ;;直接開啟本程式所匯出之文字檔
(prin1)
)
亦請版上高手不吝指正,
謝謝
Tiger&蘋果爸 寫到: 謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
835 在 2012-01-10, 19:02 作了第 2 次修改 (原因 : 非常專業~)
835- 初級會員
- 文章總數 : 36
年齡 : 46
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 4939
威望值 : 59
注冊日期 : 2012-01-02
人生走一回 and 00706841 like this post
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
試用過後真的可做排列~835 寫到:個人淺見如下:
原則上字串本身無法做排序,但串列可以....
所以只要將圖面上之字串逐一加入至某一串列中,
即可運用 acad_strlsort 函數對其做排列了
相關文章:AutoCAD 2008「資料萃取」精靈 dataextraction指令
http://kv1012tiger.pixnet.net/blog/post/102358957
Tiger&蘋果爸 在 2022-02-03, 16:35 作了第 2 次修改
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
試用過後真的可做排列~835 寫到:個人淺見如下:
原則上字串本身無法做排序,但串列可以....
所以只要將圖面上之字串逐一加入至某一串列中,
即可運用 acad_strlsort 函數對其做排列了
沒錯啦,就是這個功能,等了好久終於有了答案。
非常感謝835大大的解答,由衷感謝,感激不盡。
我要好好來研究一番。
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
我把這行改這樣寫:
(setq ffn (getfiled"寫出檔案" "D:/123/123" "TXT" 1)) ;;直接指定匯出檔案之附檔名為 .txt
雖然會指定好我要存的目錄和名稱及檔案類型,
但每次執行都會跳出視窗,以及詢問要不要覆蓋檔案。
請問那要怎樣寫才會固定儲存在D:\123\123.txt而不會跳出視窗及詢問要不要覆蓋檔案。謝謝!
(setq ffn (getfiled"寫出檔案" "D:/123/123" "TXT" 1)) ;;直接指定匯出檔案之附檔名為 .txt
雖然會指定好我要存的目錄和名稱及檔案類型,
但每次執行都會跳出視窗,以及詢問要不要覆蓋檔案。
請問那要怎樣寫才會固定儲存在D:\123\123.txt而不會跳出視窗及詢問要不要覆蓋檔案。謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
aaronchung.tw 寫到:我把這行改這樣寫:
(setq ffn (getfiled"寫出檔案" "D:/123/123" "TXT" 1)) ;;直接指定匯出檔案之附檔名為 .txt
雖然會指定好我要存的目錄和名稱及檔案類型,
但每次執行都會跳出視窗,以及詢問要不要覆蓋檔案。
請問那要怎樣寫才會固定儲存在D:\123\123.txt而不會跳出視窗及詢問要不要覆蓋檔案。謝謝!
我再研究了一下我把那行在改成這樣:
(setq ffn (findfile "D:/123/123.txt")) ;;直接指定匯出檔案之附檔名為 .txt
這樣功能好像是我說的那個功能,只是要先有123.TXT這檔案的存在,不知道我這樣改寫是不是正確的程式寫法?
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5197
威望值 : 25
注冊日期 : 2011-12-03
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
aaronchung.tw 寫到:我把這行改這樣寫:
(setq ffn (getfiled"寫出檔案" "D:/123/123" "TXT" 1)) ;;直接指定匯出檔案之附檔名為 .txt
雖然會指定好我要存的目錄和名稱及檔案類型,
但每次執行都會跳出視窗,以及詢問要不要覆蓋檔案。
請問那要怎樣寫才會固定儲存在D:\123\123.txt而不會跳出視窗及詢問要不要覆蓋檔案。謝謝!
直接指定ff為"D:/123/123.txt"是這個意思嗎?
(setq ff (open "D:/123/123.TXT" "w"))
suny999- 一般會員
- 文章總數 : 13
年齡 : 43
來自 : 台北
職業 : 結構技師
愛好 : 寫程式
個性 : 善良
使用年資 : 2年
使用版本 : 2012
經驗值 : 5749
威望值 : 27
注冊日期 : 2009-05-13
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
如果要按文字座標排序的話,下面可以參考:
(setq sl nil
i 0
ss(ssget '((0 . "TEXT"))))
(Repeat (sslength ss)
(setq sl (cons(ssname ss i)sl)
i(1+ i)))
(setq sl (vl-sort (reverse sl)
'(lambda(a b)(>
(cadr(cdr(assoc 10(entget a)))) ; 取插入點座標y值
(cadr(cdr(assoc 10(entget b)))) ; 取插入點座標y值
))))
sl變數為得到排序後的物件list,用foreach來對它做匯出。
(setq sl nil
i 0
ss(ssget '((0 . "TEXT"))))
(Repeat (sslength ss)
(setq sl (cons(ssname ss i)sl)
i(1+ i)))
(setq sl (vl-sort (reverse sl)
'(lambda(a b)(>
(cadr(cdr(assoc 10(entget a)))) ; 取插入點座標y值
(cadr(cdr(assoc 10(entget b)))) ; 取插入點座標y值
))))
sl變數為得到排序後的物件list,用foreach來對它做匯出。
suny999- 一般會員
- 文章總數 : 13
年齡 : 43
來自 : 台北
職業 : 結構技師
愛好 : 寫程式
個性 : 善良
使用年資 : 2年
使用版本 : 2012
經驗值 : 5749
威望值 : 27
注冊日期 : 2009-05-13
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
請教各位先進,經過試用後,為何我的狀況好像在.txt檔案中,將txt-list及txt-list-ok集合中的字串都列出,不知道那裡發生了問題?有請各位先進
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
不太懂您的意思?hsch0001 寫到:請教各位先進,經過試用後,為何我的狀況好像在.txt檔案中,將txt-list及txt-list-ok集合中的字串都列出,不知道那裡發生了問題?有請各位先進
請問你是使用哪一個LISP程式轉出來的!
選了哪些字轉出來第一個圖片我不太懂?
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
你好,編輯環境如下:
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
請使用這一支LISP程式再試試~hsch0001 寫到:你好,編輯環境如下:
- 附件
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
可以使用了,謝謝。有一個問題,請教您,在程式前面寫 " ;;; "是什麼用意? 不好意思,剛接觸LISP的編寫,謝謝。
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
其實只要一個 ; 程式會判斷後方文字為註解說明,而不是程式碼的一部分。hsch0001 寫到:可以使用了,謝謝。有一個問題,請教您,在程式前面寫 " ;;; "是什麼用意? 不好意思,剛接觸LISP的編寫,謝謝。
所以 ;;; 也是一樣的~
相關討論 >> [分享]你所不知的Visual LISP 註解樣式
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如何把AUTO CAD裡的文字匯出到固定的XX.TXT文字檔
所以也是註解的意思,了解,感謝指導。
hsch0001- 初級會員
- 文章總數 : 114
年齡 : 53
來自 : 新北市
職業 : 製造業
愛好 : 養魚、種花、新事物
個性 : 實在
使用年資 : 5
使用版本 : 2014/2015
積分 : 1
經驗值 : 5119
威望值 : 60
注冊日期 : 2012-02-28
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章