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

[已解決]三個lisp的問題

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

[已解決]三個lisp的問題

發表 由 adslwang 于 2011-07-03, 03:18


今天在練習的時後突然想到,要插入圖檔儲存位置名稱(SAVENAME),我看說明它是一個字串的形式,所以我就給它寫成 (setq gg (command "SAVENAME")) 要派給text當文字插入,可是我一直沒有辦法取出它的文字字串,不知到各位前輩有沒有什麼方法可以把這個字串取出來。


(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"))
(if (= change_color 7) (setq change_color BYLAYER))
(COMMAND "-COLOR" change_color )
我想問的是我要以輸入的方式將1以BYLER帶入,不是(COMMAND "-COLOR" "BYLAYR")方式
偏偏數字都還好 可是BYLAYER在COMMAND內要加入雙引號就很尷尬


在LISP另存的時後要怎麼寫才能把另存新檔的對話框叫出來,不要只是顯示再指令列中

以上三個問題如果您知到其中一個的話請教教我.........謝謝


judyyai 在 2011-07-05, 01:33 作了第 3 次修改 (原因 : 再補上幾個頭痛的問題)
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 38
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4540
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-03, 12:54


今天在練習的時後突然想到,要插入圖檔儲存位置名稱(SAVENAME),
我看說明它是一個字串的形式,所以我就給它寫成 (setq gg (command "SAVENAME")) 要派給text當文字插入,
可是我一直沒有辦法取出它的文字字串,不知到各位前輩有沒有什麼方法可以把這個字串取出來。

(setq gg (getvar "seavname"))
要另存過才有檔名不然只有空字串



(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"))
(if (= change_color 7) (setq change_color BYLAYER))
(COMMAND "-COLOR" change_color )
我想問的是我要以輸入的方式將1以BYLER帶入,不是(COMMAND "-COLOR" "BYLAYR")方式
偏偏數字都還好 可是BYLAYER在COMMAND內要加入雙引號就很尷尬

(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"));都強制為 1 了

(if (= change_color 7) (setq change_color BYLAYER));(= change_color 7)又怎麼變 7 了

(if (= change_color 1) (setq change_color BYLAYER)); 把 7 改為 1就好了



在LISP另存的時後要怎麼寫才能把另存新檔的對話框叫出來,不要只是顯示再指令列中

以上三個問題如果您知到其中一個的話請教教我.........謝謝 .

cad使用說明提到lisp (command "saveas")不能呼叫cad內定的檔案對話框
除非自己另外寫
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 明~ 于 2011-07-03, 13:59

第三個問題
可寫成(command "saveas" "" "~")
avatar
明~
高級會員
高級會員

文章總數 : 307
年齡 : 37
來自 : 彰化
職業 : 機械
愛好 : 打球 騎車 健行 音樂 電影 (說不完...)
個性 : 不與人爭
使用年資 : 從學生時代接觸到現在(工作中不一定使用)
使用版本 : 2004和2008
積分 : 17
經驗值 : 4546
威望值 : 670
注冊日期 : 2009-12-24
藍鵲292號
男 雙魚座 猴

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-03, 14:51

明~ 寫到:第三個問題
可寫成(command "saveas" "" "~")

感謝解惑
filedia變數
抑制檔案導覽對話方塊的顯示。
0 不顯示對話方塊。 透過在回應指令提示時輸入波浪符號 (~),仍然可以顯示檔案對話方塊。 這對 AutoLISP 和 ADS 函數也有效。
1 顯示對話方塊。 但是,如果腳本或 AutoLISP/ObjectARX™ 程式處於作用中,則顯示一般的提示。
一直試(command "saveas" "~")不行
原來"~"前面還要加一空字串""才可行
我還以為像cad說明的不能用

請問為何要加空字串""才可行?
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 adslwang 于 2011-07-03, 15:27

tarpon 寫到:
(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"))
(if (= change_color 7) (setq change_color BYLAYER))
(COMMAND "-COLOR" change_color )
我想問的是我要以輸入的方式將1以BYLER帶入,不是(COMMAND "-COLOR" "BYLAYR")方式
偏偏數字都還好 可是BYLAYER在COMMAND內要加入雙引號就很尷尬
(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"));都強制為 1 了
(if (= change_color 7) (setq change_color BYLAYER));(= change_color 7)又怎麼變 7 了
(if (= change_color 1) (setq change_color BYLAYER)); 把 7 改為 1就好了

謝謝tarpon跟明前輩的回答讓我受益良多,謝謝你們..... 感激
以下是我依據tarpon前輩的方法測試,結果他還是會讀到數字,我故意讓顏色變成其它的顏色,再來測試結果都一直跑的是紅色,等於IF失去了功能,怎麼會這樣呢?還有其它解套的方法嗎?

以下就會一直顯示在紅色
(defun c:gggg()
(initget 1 "1")
(SETQ change_color (getkword "\n 顏色代號<1>BLAYER(白):"))
(if (= change_color 1) (setq change_color BYLAYER))
(COMMAND "-COLOR" change_color)這行要代入"BYLAYER"讓我很頭痛
(princ))
以下這樣就沒有問題
(COMMAND "-COLOR" "BYLAYER")
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 38
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4540
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-03, 16:24

adslwang抱歉bylayer忘記改了
(if (= change_color 1) (setq change_color BYLAYER))
改成
(if (= change_color 1) (setq change_color "BYLAYER"))
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 adslwang 于 2011-07-04, 00:35

tarpon 寫到:adslwang抱歉bylayer忘記改了
(if (= change_color 1) (setq change_color BYLAYER))
改成
(if (= change_color 1) (setq change_color "BYLAYER"))
前輩謝謝您的回答,這個方法我也有試過,仍是會更換成紅色.......
還是無法正確的執行....
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 38
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4540
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-04, 00:49

adslwang
不要稱前輩啦我也是在學LISP
--------------------------
查詢change_color 值
!change_color
我試會改回bylayer呀

avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 adslwang 于 2011-07-04, 15:00

謝謝!我已經測試成功了......

感激
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 38
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4540
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 明~ 于 2011-07-04, 18:16

tarpon 寫到:
明~ 寫到:第三個問題
可寫成(command "saveas" "" "~")

感謝解惑
filedia變數
抑制檔案導覽對話方塊的顯示。
0 不顯示對話方塊。 透過在回應指令提示時輸入波浪符號 (~),仍然可以顯示檔案對話方塊。 這對 AutoLISP 和 ADS 函數也有效。
1 顯示對話方塊。 但是,如果腳本或 AutoLISP/ObjectARX™ 程式處於作用中,則顯示一般的提示。
一直試(command "saveas" "~")不行
原來"~"前面還要加一空字串""才可行
我還以為像cad說明的不能用

請問為何要加空字串""才可行?

如圖片,在指令行中輸入(command "saveas")後,會提示"輸入檔案格式",所以給個 " " 號.

avatar
明~
高級會員
高級會員

文章總數 : 307
年齡 : 37
來自 : 彰化
職業 : 機械
愛好 : 打球 騎車 健行 音樂 電影 (說不完...)
個性 : 不與人爭
使用年資 : 從學生時代接觸到現在(工作中不一定使用)
使用版本 : 2004和2008
積分 : 17
經驗值 : 4546
威望值 : 670
注冊日期 : 2009-12-24
藍鵲292號
男 雙魚座 猴

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-04, 23:14

明~
加""空白字串等於enter跳過第一個提示
可是saveas檔案對話框filedia變數說明
提及在提示後輸入"~"波紋符號即可強制對話框顯示
為何在提示出現後要先輸入""空字串跳過第一個提示
不能直接輸入"~"波紋符號呢疑問
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 shenhung 于 2011-07-06, 09:22

tarpon 寫到:明~
加""空白字串等於enter跳過第一個提示
可是saveas檔案對話框filedia變數說明
提及在提示後輸入"~"波紋符號即可強制對話框顯示
為何在提示出現後要先輸入""空字串跳過第一個提示
不能直接輸入"~"波紋符號呢疑問

SAVEAS 儲存提示第一個是儲存格式.. "" 空格只是接受目前內定的儲存格式. 在這地方..輸入"~" COMMAND 是無法判別的.

(COMMADN "SAVEAS" "" "~") 以目前儲存格式.呼叫對話框.
(COMMAND "SAVEAS" "2004" "~") 指定以2004版本格式..儲存檔案..
(COMMAND "SAVEAS" "2008" "~") 指定以2008版本格調.儲存檔案.
希望這樣.你會理解的比較清楚..

avatar
shenhung
高級會員
高級會員

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

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 tarpon 于 2011-07-06, 12:53

感謝shenhung的詳細說明
這樣確實比較清楚容易理解
每次都能從您及論壇這學得新資訊感恩呢 親一個
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3530
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [已解決]三個lisp的問題

發表 由 adslwang 于 2011-07-06, 14:21

shenhung 寫到:
SAVEAS 儲存提示第一個是儲存格式.. "" 空格只是接受目前內定的儲存格式. 在這地方..輸入"~" COMMAND 是無法判別的.

(COMMADN "SAVEAS" "" "~") 以目前儲存格式.呼叫對話框.
(COMMAND "SAVEAS" "2004" "~") 指定以2004版本格式..儲存檔案..
(COMMAND "SAVEAS" "2008" "~") 指定以2008版本格調.儲存檔案.
希望這樣.你會理解的比較清楚..

好棒,原來也可以這樣寫,謝謝分享...... 竊喜
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 38
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4540
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

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


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