[已解決]請問DXFOUT如何內定版本?
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]請問DXFOUT如何內定版本?
指令:DXFOUT
如題,請問如何做到DXFOUT時,檔案類型如何直接內定為AUTOCAD2000 DXF?
請高手幫幫忙,謝謝
如題,請問如何做到DXFOUT時,檔案類型如何直接內定為AUTOCAD2000 DXF?
請高手幫幫忙,謝謝
djh1006 在 2013-04-26, 20:58 作了第 1 次修改
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
對話框.好像沒辦法指定.!!
以下是明經上公開的代碼.!! 借花獻佛.
以下是明經上公開的代碼.!! 借花獻佛.
- 代碼:
;;acR12_DXF ,AutoCAD Release12/LT2 DXF (*.dxf)
;;ac2000_dwg ,AutoCAD 2000 DWG (*.dwg)
;;ac2000_dxf ,AutoCAD 2000 DXF (*.dxf)
;;ac2000_Template ,AutoCAD 2000 Drawing Template File (*.dwt)
;;ac2004_dwg ,AutoCAD 2004 DWG (*.dwg)
;;ac2004_dxf ,AutoCAD 2004 DXF (*.dxf)
;;ac2004_Template ,AutoCAD 2004 Drawing Template File (*.dwt)
;;acNative,A synonym for the current drawing release format
;;AcUnknown,Read-only. The drawing type is unknown or invalid.
(defun c:dxf2000()
(setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-saveas *DOC* (strcat "C:\\" (getvar "dwgname")) ac2000_dxf)
;ac2000_dxf 為存檔格式
;路徑檔名參考.
)
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請問DXFOUT如何內定版本?
多謝 shenhung前輩 分享的LISP程式~
測試過使用AutoCAD 2013以上版本,可以在「選項」中設定檔案儲存為「2000圖檔類型」,再重開圖面DXFOUT匯出時即為「2000圖檔類型」。
若是使用AutoCAD 2012以下版本,我會使用自訂工具選項板按鈕(或工具列按鈕)方式,再加入以下語法也行控制DXF為「2000圖檔類型」。
▼指令字串巨集語法:
^C^CSELECT;\FILEDIA;0;DXFOUT;\O;P;;V;2000;;FILEDIA;1;
▼工具選項板相關主題:
「教學」工具選項板_巨集篇
測試過使用AutoCAD 2013以上版本,可以在「選項」中設定檔案儲存為「2000圖檔類型」,再重開圖面DXFOUT匯出時即為「2000圖檔類型」。
若是使用AutoCAD 2012以下版本,我會使用自訂工具選項板按鈕(或工具列按鈕)方式,再加入以下語法也行控制DXF為「2000圖檔類型」。
▼指令字串巨集語法:
^C^CSELECT;\FILEDIA;0;DXFOUT;\O;P;;V;2000;;FILEDIA;1;
▼工具選項板相關主題:
「教學」工具選項板_巨集篇
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
感謝蘋果爸的指導,可是我要的效果是以對話框方式呈現的,因為路徑用選取的比較方便
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
這部份恐怕沒有辦法,只能使用2013以上版本才可以~djh1006 寫到:感謝蘋果爸的指導,可是我要的效果是以對話框方式呈現的,因為路徑用選取的比較方便
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
非對話框模式.也可以讓使用者.有更直接的選擇存檔格式!! 這點之前都沒注意到.感謝蘋果爸的分享.!!
另外針對.djh1006 想要用對話框的方式. 可能要自己寫個小程式.!!
用GETFILED對話框 .取得存檔路徑之後. 再針對自己內定存檔格式.存檔.
這也是在CAD本身無法內定對話框.之外的另一個選擇.參考看看.
另外針對.djh1006 想要用對話框的方式. 可能要自己寫個小程式.!!
用GETFILED對話框 .取得存檔路徑之後. 再針對自己內定存檔格式.存檔.
這也是在CAD本身無法內定對話框.之外的另一個選擇.參考看看.
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請問DXFOUT如何內定版本?
別客氣啦,經過您的提醒可用GETFILED對話框,剛剛試了一下果然可行,有需要的朋友可以下載lisp(指令:Dxfout2T)喔~shenhung 寫到:非對話框模式.也可以讓使用者.有更直接的選擇存檔格式!! 這點之前都沒注意到.感謝蘋果爸的分享.!!
另外針對.djh1006 想要用對話框的方式. 可能要自己寫個小程式.!!
用GETFILED對話框 .取得存檔路徑之後. 再針對自己內定存檔格式.存檔.
這也是在CAD本身無法內定對話框.之外的另一個選擇.參考看看.
- 附件
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
蘋果爸..你手腳未免也太快了吧..果然有實驗精神.!!讚.!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請問DXFOUT如何內定版本?
沒有啦!我最擅長的把舊程式修修改改而已~shenhung 寫到:蘋果爸..你手腳未免也太快了吧..果然有實驗精神.!!讚.!!
江湖一點訣,沒有您提示,我也想不到啦!
果然是有討論有進步...努力學習中!
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
截取我的lsp部份:
(command "dxfout" dff "v" "r12" "e" "p" "" "")
dff是路徑名稱
(command "dxfout" dff "v" "r12" "e" "p" "" "")
dff是路徑名稱
tooth525- 初級會員
- 文章總數 : 43
年齡 : 59
來自 : 彰化
職業 : CNC線切割
愛好 : 看影集,唱唱歌
個性 : 溫合/樂觀/善於分析
使用年資 : 30年
使用版本 : 2004
積分 : 2
經驗值 : 5179
威望值 : 149
注冊日期 : 2011-08-03
回復: [已解決]請問DXFOUT如何內定版本?
耶,太好了,果然高手雲集,這正是我要的效果,我也測試成功了,太感謝蘋果爸和tooth525的熱心幫助,感覺好窩心
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
會用到dxfout是因為要轉nc,我的做法是用lsp給號碼
例1234,(每次加1),問是否寫上號碼,選圖元,就ok啦
還要比對該dxf是否已轉成nc,有需要再深入討論,希望對你有幫助
例1234,(每次加1),問是否寫上號碼,選圖元,就ok啦
還要比對該dxf是否已轉成nc,有需要再深入討論,希望對你有幫助
tooth525- 初級會員
- 文章總數 : 43
年齡 : 59
來自 : 彰化
職業 : CNC線切割
愛好 : 看影集,唱唱歌
個性 : 溫合/樂觀/善於分析
使用年資 : 30年
使用版本 : 2004
積分 : 2
經驗值 : 5179
威望值 : 149
注冊日期 : 2011-08-03
回復: [已解決]請問DXFOUT如何內定版本?
很高興能幫上忙,別忘了也感謝 shenhung大大 的回文幫助喔~djh1006 寫到:耶,太好了,果然高手雲集,這正是我要的效果,我也測試成功了,太感謝蘋果爸和tooth525的熱心幫助,感覺好窩心
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
再次感謝shenhung及大家的熱心及不吝指教
還是感謝大家的鼎力相助,程式最終版如下
;(setq ss (SSGET))
把這行取消是因為我的整個檔案都要匯出,不必每次匯出檔案都要再選取一次(很麻煩)
我們公司的DXFOUT主要應用在線切割加工的圖面,檔名與我們存檔的名稱一樣,例如在本機存檔時是"098E8MD010000AA-上蓋.dwg",dxfout時會以同檔名存出"098E8MD010000AA-上蓋.dxf",所以不能以流水號存出tooth525 寫到:會用到dxfout是因為要轉nc,我的做法是用lsp給號碼
例1234,(每次加1),問是否寫上號碼,選圖元,就ok啦
還要比對該dxf是否已轉成nc,有需要再深入討論,希望對你有幫助
還是感謝大家的鼎力相助,程式最終版如下
- 代碼:
;DJH_203.lsp
;存DXF2000
(defun C:DJH_203(/ ffn)
(graphscr)
(setvar "CMDECHO" 0)
(princ "\n***匯出版本:AutoCAD 2000(LT2000) DXF 檔***")
(setq ffn (getfiled "AutoCAD顧問" "" "DXF" 1))
;(setq ss (SSGET))
;(COMMAND "DXFOUT" ffn "O" SS "" "V" "2000" "")
(if (/= ffn nil)(progn
(COMMAND "-PURGE" "A" "*" "N")
(COMMAND "DXFOUT" ffn "V" "2000" "")
(princ (strcat "\n成功匯出檔案:" ffn))
))
(if (= ffn nil)(princ "\n取消匯出檔案"))
(prin1)
)
;(setq ss (SSGET))
把這行取消是因為我的整個檔案都要匯出,不必每次匯出檔案都要再選取一次(很麻煩)
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
謝謝 djh1006前輩 熱心的使用回報,改良後更適用囉~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]請問DXFOUT如何內定版本?
又遇到問題了
這個程式若在目的路徑有相同檔名,便無法覆蓋,以下是錯誤訊息:
"C:\Users\joe\Documents\Drawing1.dxf": 無法開啟檔案
而以手動輸入dxfout時的訊息如下:
同名的圖檔已經存在。
您要取代它嗎? y
請問如何將判斷式加入我的lisp中,請各位高手幫幫忙
這個程式若在目的路徑有相同檔名,便無法覆蓋,以下是錯誤訊息:
"C:\Users\joe\Documents\Drawing1.dxf": 無法開啟檔案
而以手動輸入dxfout時的訊息如下:
同名的圖檔已經存在。
您要取代它嗎?
請問如何將判斷式加入我的lisp中,請各位高手幫幫忙
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
測過你改的程式.可以覆蓋.沒問題.可以正常運作..版本是2010
不知道是不是dxf檔案是處在被打開的狀態.讓檔案無法正常覆寫.!!
請試著關掉AUTOCAD內. 用DXF檔打開的DWG..!!再試試
不知道是不是dxf檔案是處在被打開的狀態.讓檔案無法正常覆寫.!!
請試著關掉AUTOCAD內. 用DXF檔打開的DWG..!!再試試
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請問DXFOUT如何內定版本?
我也測試成功了,的確是開啟同一個dxf才會無法覆蓋,謝謝shenhung的幫忙
不過還是有點擔心,若開啟的是同位置的dxf,要覆寫回dxf時,該如何解決?
我的想法是在(setq ffn (getfiled "AutoCAD顧問" "" "DXF" 1))取得檔名後,寫一行判斷該檔名是否存在,若存在則要把以下
如果沒有同檔名
(COMMAND "DXFOUT" ffn "V" "2000" "")
改成
如果有同檔名則
(COMMAND "DXFOUT" ffn "V" "2000" "Y")
判斷式我不知道要用什麼指令,請幫忙想一下,謝謝
不過還是有點擔心,若開啟的是同位置的dxf,要覆寫回dxf時,該如何解決?
我的想法是在(setq ffn (getfiled "AutoCAD顧問" "" "DXF" 1))取得檔名後,寫一行判斷該檔名是否存在,若存在則要把以下
如果沒有同檔名
(COMMAND "DXFOUT" ffn "V" "2000" "")
改成
如果有同檔名則
(COMMAND "DXFOUT" ffn "V" "2000" "Y")
判斷式我不知道要用什麼指令,請幫忙想一下,謝謝
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [已解決]請問DXFOUT如何內定版本?
因為無法覆寫是WINDOW系統.對一般開啟的檔案的保護.!! 任何軟體都一樣.
就算LISP寫強制覆蓋也是沒有用的.!!都會被檔掉.
只有關掉已開啟的DXF檔才有用.!!
也因為GETFILED 功能已經有同名檔案覆蓋提示.LISP改為強制覆寫就有點多餘.!!
就算LISP寫強制覆蓋也是沒有用的.!!都會被檔掉.
只有關掉已開啟的DXF檔才有用.!!
也因為GETFILED 功能已經有同名檔案覆蓋提示.LISP改為強制覆寫就有點多餘.!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請問DXFOUT如何內定版本?
測試過後終於找出問題所在
1.當開啟的檔案為x.dwg,存出x.dxf時,不會有問題
2.當開啟的檔案為x.dxf,存出也是x.dxf時,會有問題,cad會問你要不要複寫
3.本來用dxfout指令,當在指令列輸入時,可以完成動作,可時寫成lisp時,cad却不接受,所以改用saveas指令,結果成功了。
以下為程式內容:
1.當開啟的檔案為x.dwg,存出x.dxf時,不會有問題
2.當開啟的檔案為x.dxf,存出也是x.dxf時,會有問題,cad會問你要不要複寫
3.本來用dxfout指令,當在指令列輸入時,可以完成動作,可時寫成lisp時,cad却不接受,所以改用saveas指令,結果成功了。
以下為程式內容:
- 代碼:
;DJH_203.lsp
;存DXF2000版
(defun C:DJH_203()
(graphscr)
(setvar "CMDECHO" 0)
;====設定存出檔案路徑及名稱====
(setq ffn (getfiled "AutoCAD存出dxf2000版" "" "DXF" 1));對話框
;====找出目前開啟檔案的路徑和檔名====
(if (/= ffn nil)(progn
(setq
FILE_PATH (getvar "DWGPREFIX")
FILE_NAME (getvar "DWGNAME")
FILE (strcat FILE_PATH FILE_NAME)
)
;====比對開啟檔案的路徑和檔名是否與存出檔案路徑及名稱相同====
(if (/= ffn FILE)(command "DXFOUT" ffn "V" "2000" ""));若不同直接存出
;====若直接開x.dxf檔案,且存出時也是x.dxf則會要求按y====
(if (= ffn FILE)(progn
(command "FILEDIA" "0")
(command "SAVEAS" "DXF" "V" "2000" "" FILE "Y")
(command "FILEDIA" "1")
))
(princ (strcat "\n成功匯出檔案:" ffn))
))
(if (= ffn nil)(princ "\n取消匯出檔案"))
(prin1)
)
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章