[討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
請問:
寫一個LISP功能為:框選一個範圍後只選取裡面顏色為綠色的所有物件,並設定線型為HIDDEN。
其中選取顏色為綠色的所有物件,指令寫法是?
要將以選取的物件設定線型為HIDDEN,指令寫法是?
請問以上兩點LISP有指令可以做到嗎?還是還要經過特殊的方法做到。
感謝回覆!!
寫一個LISP功能為:框選一個範圍後只選取裡面顏色為綠色的所有物件,並設定線型為HIDDEN。
其中選取顏色為綠色的所有物件,指令寫法是?
要將以選取的物件設定線型為HIDDEN,指令寫法是?
請問以上兩點LISP有指令可以做到嗎?還是還要經過特殊的方法做到。
感謝回覆!!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
(defun c:2 ()
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
tan866- 初級會員
- 文章總數 : 79
年齡 : 47
來自 : 高雄
職業 : 繪圖
愛好 : 騎腳踏車
個性 : 開朗
使用年資 : 5
使用版本 : 2008
積分 : 1
經驗值 : 5571
威望值 : 47
注冊日期 : 2010-10-24
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
原本程式執行出現類似最下的錯誤,後來我把程式改為以下測試錯誤,
但找不到怎改才能正確執行
我把程式改成以下這樣:
(defun c:2 ()
(COMMAND "SELECT" "\\")
(command "change" "" "P" "LT" "HIDDEN" "")
(princ)
)
但執行出現
指令: 2 SELECT
選取物件: 找到 1 個
選取物件: 找到 1 個,共 2
選取物件:
指令: change
選取物件:
指令: P 不明的指令「P」。請按 F1 取得說明。
指令: LT 不明的指令「LT」。請按 F1 取得說明。
指令: HIDDEN 不明的指令「HIDDEN」。請按 F1 取得說明。
請問怎改修正錯誤?
但找不到怎改才能正確執行
我把程式改成以下這樣:
(defun c:2 ()
(COMMAND "SELECT" "\\")
(command "change" "" "P" "LT" "HIDDEN" "")
(princ)
)
但執行出現
指令: 2 SELECT
選取物件: 找到 1 個
選取物件: 找到 1 個,共 2
選取物件:
指令: change
選取物件:
指令: P 不明的指令「P」。請按 F1 取得說明。
指令: LT 不明的指令「LT」。請按 F1 取得說明。
指令: HIDDEN 不明的指令「HIDDEN」。請按 F1 取得說明。
請問怎改修正錯誤?
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
原程式
(defun c:2 ()
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
改為以下無錯誤
(defun c:2 ()
(PROMPT "測試")
(SETQ SS (ssget))
(command "change" SS "" "P" "LT" "HIDDEN" ""))
(prin1))
發現好像是'((8 . "3")有誤
(defun c:2 ()
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
改為以下無錯誤
(defun c:2 ()
(PROMPT "測試")
(SETQ SS (ssget))
(command "change" SS "" "P" "LT" "HIDDEN" ""))
(prin1))
發現好像是'((8 . "3")有誤
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
aaronchung.tw 寫到:原程式
(defun c:2 ()
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
改為以下無錯誤
(defun c:2 ()
(PROMPT "測試")
(SETQ SS (ssget))
(command "change" SS "" "P" "LT" "HIDDEN" ""))
(prin1))
發現好像是'((8 . "3")有誤
上面兩行紅色部份皆錯,與題意不符
(8 . "3")指的是圖層並非顏色。
(SETQ SS (ssget))指的是物件選取並無設下篩選條件。
一句話就可以了
(command "change" (ssget '((62 . 3))) "" "P" "LT" "HIDDEN" "")
只撈綠色線條
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7228
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
adslwang 寫到:aaronchung.tw 寫到:原程式
(defun c:2 ()
(SETQ SS (ssget '((8 . "3"))))
(if ss (command "change" ss "" "P" "LT" "HIDDEN" ""))
(princ)
)
改為以下無錯誤
(defun c:2 ()
(PROMPT "測試")
(SETQ SS (ssget))
(command "change" SS "" "P" "LT" "HIDDEN" ""))
(prin1))
發現好像是'((8 . "3")有誤
上面兩行紅色部份皆錯,與題意不符
(8 . "3")指的是圖層並非顏色。
(SETQ SS (ssget))指的是物件選取並無設下篩選條件。
一句話就可以了
(command "change" (ssget '((62 . 3))) "" "P" "LT" "HIDDEN" "")
只撈綠色線條
我想一次選綠色和紅色線設為隱藏線,我試了許久都不行,請問該怎麼寫,賜教了,感謝。
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
再請教
我這樣寫
(defun c:TEST ()
(PROMPT "測試 ")
(command "ERASE" (ssget '((62 . 6))) "")
(prin1))
可以把洋紅色的挑出來刪除,那我要挑出線型為hidden的刪除,要怎麼改。
還有(ssget '((62 . 6))) "")裡面的數字62代表什麼?
謝謝!
我這樣寫
(defun c:TEST ()
(PROMPT "測試 ")
(command "ERASE" (ssget '((62 . 6))) "")
(prin1))
可以把洋紅色的挑出來刪除,那我要挑出線型為hidden的刪除,要怎麼改。
還有(ssget '((62 . 6))) "")裡面的數字62代表什麼?
謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
(command "ERASE" (ssget '((62 . 6))) "")
==>
(command "ERASE" (ssget '((62 . 6)(6 . "HIDDEN"))) "")
==>
(command "ERASE" (ssget '((62 . 6)(6 . "HIDDEN"))) "")
tan866- 初級會員
- 文章總數 : 79
年齡 : 47
來自 : 高雄
職業 : 繪圖
愛好 : 騎腳踏車
個性 : 開朗
使用年資 : 5
使用版本 : 2008
積分 : 1
經驗值 : 5571
威望值 : 47
注冊日期 : 2010-10-24
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
tan866 寫到:(command "ERASE" (ssget '((62 . 6))) "")
==>
(command "ERASE" (ssget '((62 . 6)(6 . "HIDDEN"))) "")
恩,就是這樣,謝謝!
那我要一次挑兩種顏色是要怎麼寫,我一直改不出來
(command "change" (ssget '((62 . 1)))(ssget '((62 . 2))) "" "P" "LT" "HIDDEN" "")
或
(command "change" (ssget '((62 . 1)(62 . 2))) "" "P" "LT" "HIDDEN" "")
都不行,有人能幫我修正嗎?感恩!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
指令: (command "change"
(ssget '((-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
(ssget '((-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
Tiger&蘋果爸 寫到: 謝謝熱心回覆~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
tan866- 初級會員
- 文章總數 : 79
年齡 : 47
來自 : 高雄
職業 : 繪圖
愛好 : 騎腳踏車
個性 : 開朗
使用年資 : 5
使用版本 : 2008
積分 : 1
經驗值 : 5571
威望值 : 47
注冊日期 : 2010-10-24
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
tan866 寫到:指令: (command "change"
(ssget '((-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
嗯,謝謝!測試可以,我再研究一下這個程式,有問題再來請教。
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
aaronchung.tw 寫到:tan866 寫到:指令: (command "change"
(ssget '((-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
嗯,謝謝!測試可以,我再研究一下這個程式,有問題再來請教。
1.再請問哪我如果要選紅色和黃色線以外的物件都改線型為隱藏線,要怎麼改寫?(以上面的程式架構)
(例:打lisp的觸發只令 ->空白鍵 -> 滑鼠框選 -> (動作:把滑鼠框選的所有物件中紅色線黃色線以外的物件都選取) ->動作之後的動作)
2.以下程式
(defun c:RYC ()
(PROMPT "複製紅色線 黃色線 ")
(command "COPY" (ssget '((-4 . "<OR" ) (62 . 1)(62 . 2) (-4 . "OR>"))) "")
(prin1))
我要改成只選擇紅色線 黃色線然後能自行入指令再去動作,要怎麼寫?
(例:打RYC ->空白鍵 -> 滑鼠框選 -> 打COPY ->動作之後的動作)
以上請教,謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
選紅色和黃色線以外的物件都改線型為隱藏線
指令: (command "change"
(ssget '((-4 . "<NOT")(-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>")(-4 . "NOT>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
--------------------------------------------------------------------------------
指令: (command "change"
(ssget '((-4 . "<NOT")(-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>")(-4 . "NOT>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
--------------------------------------------------------------------------------
tan866- 初級會員
- 文章總數 : 79
年齡 : 47
來自 : 高雄
職業 : 繪圖
愛好 : 騎腳踏車
個性 : 開朗
使用年資 : 5
使用版本 : 2008
積分 : 1
經驗值 : 5571
威望值 : 47
注冊日期 : 2010-10-24
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
tan866 寫到:選紅色和黃色線以外的物件都改線型為隱藏線
指令: (command "change"
(ssget '((-4 . "<NOT")(-4 . "<OR")(62 . 1)(62 . 2)(-4 . "OR>")(-4 . "NOT>"))) "" "P" "LT" "HIDDEN" "")
**請將"<"及">"改成半形模式,因為半形模式上傳有問題**
--------------------------------------------------------------------------------
嗯,可以了,感謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
2.以下程式
(defun c:RY ()
(PROMPT "選取紅色線 黃色線 ")
(command "COPY" (ssget '((-4 . "<OR" ) (62 . 1)(62 . 2) (-4 . "OR>"))) "")
(prin1))
我要改成只選擇紅色線 黃色線然後之後自己打要做的動作 要怎寫?
(例:打RY ->空白鍵 -> 滑鼠框選(自動選取紅色線 黃色線) ->(之後的動作自己填指令)
以上請教,謝謝!
(defun c:RY ()
(PROMPT "選取紅色線 黃色線 ")
(command "COPY" (ssget '((-4 . "<OR" ) (62 . 1)(62 . 2) (-4 . "OR>"))) "")
(prin1))
我要改成只選擇紅色線 黃色線然後之後自己打要做的動作 要怎寫?
(例:打RY ->空白鍵 -> 滑鼠框選(自動選取紅色線 黃色線) ->(之後的動作自己填指令)
以上請教,謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
- 代碼:
(defun c:RY (/ mod_cmd ed:cmd_inx ss)
(PROMPT "選取紅色線 黃色線")
(setq mod_cmd '("Change" "Erase""Move" "Copy" "Rotate" "Mirror"))
(initget "1 2 3 4 5 6")
(setq ed:cmd_inx (getkword "\nChange(1)/Erase(2)/Move(3)/Copy(4)/Rotate(5)/Mirror(6)"))
(if ed:cmd_inx
(progn
(setq ss (ssget '((-4 . "<OR")(62 . 1)(62 . 2) (-4 . "OR>"))))
(if ss (command (nth (1- (atoi ed:cmd_inx)) mod_cmd) ss ""))
)
)
(princ)
)
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
shenhung 寫到:
- 代碼:
(defun c:RY (/ mod_cmd ed:cmd_inx ss)
(PROMPT "選取紅色線 黃色線")
(setq mod_cmd '("Change" "Erase""Move" "Copy" "Rotate" "Mirror"))
(initget "1 2 3 4 5 6")
(setq ed:cmd_inx (getkword "\nChange(1)/Erase(2)/Move(3)/Copy(4)/Rotate(5)/Mirror(6)"))
(if ed:cmd_inx
(progn
(setq ss (ssget '((-4 . "<OR")(62 . 1)(62 . 2) (-4 . "OR>"))))
(if ss (command (nth (1- (atoi ed:cmd_inx)) mod_cmd) ss ""))
)
)
(princ)
)
謝謝前輩分享,程式強力吸收中
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7228
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
shenhung 寫到:
- 代碼:
(defun c:RY (/ mod_cmd ed:cmd_inx ss)
(PROMPT "選取紅色線 黃色線")
(setq mod_cmd '("Change" "Erase""Move" "Copy" "Rotate" "Mirror"))
(initget "1 2 3 4 5 6")
(setq ed:cmd_inx (getkword "\nChange(1)/Erase(2)/Move(3)/Copy(4)/Rotate(5)/Mirror(6)"))
(if ed:cmd_inx
(progn
(setq ss (ssget '((-4 . "<OR")(62 . 1)(62 . 2) (-4 . "OR>"))))
(if ss (command (nth (1- (atoi ed:cmd_inx)) mod_cmd) ss ""))
)
)
(princ)
)
感謝回復,待我研究一下,有問題再來發問。謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
回復: [討論]LISP選取所有綠色物件,並設定為線型HIDDEN?
shenhung 寫到:
- 代碼:
(defun c:RY (/ mod_cmd ed:cmd_inx ss)
(PROMPT "選取紅色線 黃色線")
(setq mod_cmd '("Change" "Erase""Move" "Copy" "Rotate" "Mirror"))
(initget "1 2 3 4 5 6")
(setq ed:cmd_inx (getkword "\nChange(1)/Erase(2)/Move(3)/Copy(4)/Rotate(5)/Mirror(6)"))
(if ed:cmd_inx
(progn
(setq ss (ssget '((-4 . "<OR")(62 . 1)(62 . 2) (-4 . "OR>"))))
(if ss (command (nth (1- (atoi ed:cmd_inx)) mod_cmd) ss ""))
)
)
(princ)
)
請問要是要把以上lisp功能顛倒過來程式要怎麼修改。
(輸入RY -> 輸入1或2 -> 選取紅色線(1)/選取黃色線(2) ->執行刪除)
謝謝!
aaronchung.tw- 初級會員
- 文章總數 : 89
年齡 : 46
來自 : Taipei
職業 : 繪圖
愛好 : 電腦網路,閑逛
個性 : 隨和
使用年資 : 8年
使用版本 : 2008
積分 : 1
經驗值 : 5212
威望值 : 25
注冊日期 : 2011-12-03
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章