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

[已解決]請問DXFOUT如何內定版本?

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

[已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-04-24, 16:13

指令:DXFOUT

如題,請問如何做到DXFOUT時,檔案類型如何直接內定為AUTOCAD2000 DXF?
請高手幫幫忙,謝謝


djh1006 在 2013-04-26, 13:58 作了第 1 次修改
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 shenhung 于 2013-04-24, 16:47

對話框.好像沒辦法指定.!!
以下是明經上公開的代碼.!! 借花獻佛.
代碼:

;;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 為存檔格式
  ;路徑檔名參考.

avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4951
威望值 : 916
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-25, 02:51

讚啦!! 多謝 shenhung前輩 分享的LISP程式~

測試過使用AutoCAD 2013以上版本,可以在「選項」中設定檔案儲存為「2000圖檔類型」,再重開圖面DXFOUT匯出時即為「2000圖檔類型」。

若是使用AutoCAD 2012以下版本,我會使用自訂工具選項板按鈕(或工具列按鈕)方式,再加入以下語法也行控制DXF為「2000圖檔類型」。

▼指令字串巨集語法:
^C^CSELECT;\FILEDIA;0;DXFOUT;\O;P;;V;2000;;FILEDIA;1;



▼工具選項板相關主題:
「教學」工具選項板_巨集篇

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-04-25, 12:53

感謝蘋果爸的指導,可是我要的效果是以對話框方式呈現的,因為路徑用選取的比較方便
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-26, 03:29

djh1006 寫到:感謝蘋果爸的指導,可是我要的效果是以對話框方式呈現的,因為路徑用選取的比較方便
這部份恐怕沒有辦法,只能使用2013以上版本才可以~
認同

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 shenhung 于 2013-04-26, 03:42

非對話框模式.也可以讓使用者.有更直接的選擇存檔格式!! 這點之前都沒注意到.感謝蘋果爸的分享.!!

另外針對.djh1006 想要用對話框的方式. 可能要自己寫個小程式.!!
用GETFILED對話框 .取得存檔路徑之後. 再針對自己內定存檔格式.存檔.
這也是在CAD本身無法內定對話框.之外的另一個選擇.參考看看.








avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4951
威望值 : 916
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-26, 04:38

shenhung 寫到:非對話框模式.也可以讓使用者.有更直接的選擇存檔格式!! 這點之前都沒注意到.感謝蘋果爸的分享.!!

另外針對.djh1006 想要用對話框的方式. 可能要自己寫個小程式.!!
用GETFILED對話框 .取得存檔路徑之後. 再針對自己內定存檔格式.存檔.
這也是在CAD本身無法內定對話框.之外的另一個選擇.參考看看.
害羞 別客氣啦,經過您的提醒可用GETFILED對話框,剛剛試了一下果然可行,有需要的朋友可以下載lisp(指令:Dxfout2T)喔~
附件
Dxfout2T.zip 您無權下載這里的附件。(1 Kb) 下載 17 次

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 shenhung 于 2013-04-26, 04:53

蘋果爸..你手腳未免也太快了吧..果然有實驗精神.!!讚.!!
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4951
威望值 : 916
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-26, 05:05

shenhung 寫到:蘋果爸..你手腳未免也太快了吧..果然有實驗精神.!!讚.!!
沒有啦!我最擅長的把舊程式修修改改而已~
江湖一點訣,沒有您提示,我也想不到啦!

果然是有討論有進步...努力學習中!
謝謝囉

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 tooth525 于 2013-04-26, 07:50

截取我的lsp部份:
(command "dxfout" dff "v" "r12" "e" "p" "" "")
dff是路徑名稱
avatar
tooth525
初級會員
初級會員

文章總數 : 43
年齡 : 52
來自 : 彰化
職業 : CNC線切割
愛好 : 看影集,唱唱歌
個性 : 溫合/樂觀/善於分析
使用年資 : 20年
使用版本 : 2004
積分 : 2
經驗值 : 2527
威望值 : 144
注冊日期 : 2011-08-03
經典問與答讀者 男 白羊座 蛇

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-04-26, 13:58

耶,太好了,果然高手雲集,這正是我要的效果,我也測試成功了,太感謝蘋果爸和tooth525的熱心幫助,感覺好窩心
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 tooth525 于 2013-04-27, 04:45

會用到dxfout是因為要轉nc,我的做法是用lsp給號碼
例1234,(每次加1),問是否寫上號碼,選圖元,就ok啦
還要比對該dxf是否已轉成nc,有需要再深入討論,希望對你有幫助
avatar
tooth525
初級會員
初級會員

文章總數 : 43
年齡 : 52
來自 : 彰化
職業 : CNC線切割
愛好 : 看影集,唱唱歌
個性 : 溫合/樂觀/善於分析
使用年資 : 20年
使用版本 : 2004
積分 : 2
經驗值 : 2527
威望值 : 144
注冊日期 : 2011-08-03
經典問與答讀者 男 白羊座 蛇

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-27, 08:09

djh1006 寫到:耶,太好了,果然高手雲集,這正是我要的效果,我也測試成功了,太感謝蘋果爸和tooth525的熱心幫助,感覺好窩心
很高興能幫上忙,別忘了也感謝 shenhung大大 的回文幫助喔~
認同

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-04-28, 02:24

再次感謝shenhung及大家的熱心及不吝指教 感動
tooth525 寫到:會用到dxfout是因為要轉nc,我的做法是用lsp給號碼
例1234,(每次加1),問是否寫上號碼,選圖元,就ok啦
還要比對該dxf是否已轉成nc,有需要再深入討論,希望對你有幫助
我們公司的DXFOUT主要應用在線切割加工的圖面,檔名與我們存檔的名稱一樣,例如在本機存檔時是"098E8MD010000AA-上蓋.dwg",dxfout時會以同檔名存出"098E8MD010000AA-上蓋.dxf",所以不能以流水號存出

還是感謝大家的鼎力相助,程式最終版如下

代碼:

;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))
把這行取消是因為我的整個檔案都要匯出,不必每次匯出檔案都要再選取一次(很麻煩)
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 Tiger&蘋果爸 于 2013-04-28, 13:47

謝謝 djh1006前輩 熱心的使用回報,改良後更適用囉~
微笑

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17080
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63953
威望值 : 12657
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-05-02, 10:22

又遇到問題了
這個程式若在目的路徑有相同檔名,便無法覆蓋,以下是錯誤訊息:
"C:\Users\joe\Documents\Drawing1.dxf": 無法開啟檔案

而以手動輸入dxfout時的訊息如下:
同名的圖檔已經存在。
您要取代它嗎? y


請問如何將判斷式加入我的lisp中,請各位高手幫幫忙
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 shenhung 于 2013-05-02, 11:12

測過你改的程式.可以覆蓋.沒問題.可以正常運作..版本是2010
不知道是不是dxf檔案是處在被打開的狀態.讓檔案無法正常覆寫.!!
請試著關掉AUTOCAD內. 用DXF檔打開的DWG..!!再試試
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4951
威望值 : 916
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-05-02, 12:09

我也測試成功了,的確是開啟同一個dxf才會無法覆蓋,謝謝shenhung的幫忙
不過還是有點擔心,若開啟的是同位置的dxf,要覆寫回dxf時,該如何解決?
我的想法是在(setq ffn (getfiled "AutoCAD顧問" "" "DXF" 1))取得檔名後,寫一行判斷該檔名是否存在,若存在則要把以下
如果沒有同檔名
(COMMAND "DXFOUT" ffn "V" "2000" "")
改成
如果有同檔名則
(COMMAND "DXFOUT" ffn "V" "2000" "Y")
判斷式我不知道要用什麼指令,請幫忙想一下,謝謝
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 shenhung 于 2013-05-02, 13:59

因為無法覆寫是WINDOW系統.對一般開啟的檔案的保護.!! 任何軟體都一樣.
就算LISP寫強制覆蓋也是沒有用的.!!都會被檔掉.
只有關掉已開啟的DXF檔才有用.!!
也因為GETFILED 功能已經有同名檔案覆蓋提示.LISP改為強制覆寫就有點多餘.!!

avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4951
威望值 : 916
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]請問DXFOUT如何內定版本?

發表 由 djh1006 于 2013-08-24, 06:52

測試過後終於找出問題所在
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)
)
這個程式主要用在有輸入/出dxf的情況,且版本不是內定的(要改存出版本的狀況),對僅存入/出dwg的人不適用
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3347
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

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


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