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

Join the forum, it's quick and easy

AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
[已解決]請教LISP選集 Io15011 [已解決]請教LISP選集 2020-310 [已解決]請教LISP選集 Oiu15010 [已解決]請教LISP選集 2020-211 [已解決]請教LISP選集 Oo-2-110 [已解決]請教LISP選集 BPl3tjj

[已解決]請教LISP選集

4 posters

向下

[已解決]請教LISP選集 Empty [已解決]請教LISP選集

發表 由 老水牛 2011-07-01, 15:07

(defun c:dr();向下陣列
(setq a(getint "\n個數:"))
(setq s(getint "\n間距:"))
(setq t(entsel))
(command "array" t "" "R" a "" s)
)

請問上面的程式要如何修改成"窗選" 或"框選"等其他選取方式


Tiger&蘋果爸 在 2011-07-08, 09:09 作了第 5 次修改 (原因 : 將主題顏色改為藍色)
avatar
老水牛
初級會員
初級會員

文章總數 : 107
年齡 : 59
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 4966
威望值 : 0
注冊日期 : 2008-10-17
男 天蝎座 牛

回頂端 向下

[已解決]請教LISP選集 Empty 回復: [已解決]請教LISP選集

發表 由 adslwang 2011-07-01, 17:35

老水牛 寫到:(defun c:dr();向下陣列
(setq a(getint "\n個數:"))
(setq s(getint "\n間距:"))
(setq t(entsel))
(command "array" t "" "R" a "" s)
)

請問上面的程式要如何修改成"窗選" 或"框選"等其他選取方式

以下是我的做法,提供參考(其它高手應該會有更好的方法,在lsp我也只是個初學者)
(defun c:dr99()
(SETVAR "CMDECHO" 0)
(setq en (SSGET))
(setq aa (getint "\n 個數:"))
(setq ss (getint "\n 間距:"))
(setq wa (getreal "\n 輸入兩列間距或指定單位格:"))
(setq wa1 (getreal "\n 指定兩行間距:"))
(command "-array" en "" "R" aa ss wa wa1)
(princ)
)
或者
(setq point1 (getpoint "\n 第1點"))
(setq point2 (getpoint point1 "\n 第2點"))
(setq pointt (grdraw point1 point2 1 1))
(setq en (ssget "w" point1 point2)) ;;w或c都可以
(setq aa (getint "\n 個數:"))
(setq ss (getint "\n 間距:"))
(setq wa (getreal "\n 輸入兩列間距或指定單位格:"))
(setq wa1 (getreal "\n 指定兩行間距:"))
(command "-array" en "" "R" aa ss wa wa1)
(setq pointt redraw)
(command "-color" "bylayer")
(princ)

這一行好像怪怪的,指令應該要先執行過了解一次排序才會準確,不然會少填。
(command "array" t "" "R" a "" s)
開槍


adslwang 在 2011-07-01, 20:05 作了第 1 次修改 (原因 : 再補充)
adslwang
adslwang
高級會員
高級會員

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

回頂端 向下

[已解決]請教LISP選集 Empty 回復: [已解決]請教LISP選集

發表 由 ginse0727 2011-07-01, 21:18

提供你參考看看,

(defun c:dr();向下陣列
(setq a(getint "\n個數:"))
(setq s(getint "\n間距:"))
;;;(setq t(entsel))
(setq objs(ssget)) ;採用選集的方式,即可框選,暫存器不要用t,程式會出問題(t是有意義的,不可以拿來做暫存器使用).
;;;(command "-array" t "" "" "R" a "" s)
(command "-array" objs "" "R" a "" s)
(princ) ;抑制空回應
)

好開心
ginse0727
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 47
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 5665
威望值 : 498
發帖精華 : 1
注冊日期 : 2010-07-13
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

[已解決]請教LISP選集 Empty 回復: [已解決]請教LISP選集

發表 由 shenhung 2011-07-06, 16:00

t 為LISP 很重要的函數!! 請勿拿來當作變數使用..

shenhung
shenhung
高級會員
高級會員

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

回頂端 向下

[已解決]請教LISP選集 Empty 回復: [已解決]請教LISP選集

發表 由 老水牛 2011-07-07, 20:23

感謝各位大大的指導。
我也曾用ssget 作為選集,應該是不知 t 在 LISP 中有特定的含義,導至程式無法執行。
avatar
老水牛
初級會員
初級會員

文章總數 : 107
年齡 : 59
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 4966
威望值 : 0
注冊日期 : 2008-10-17
男 天蝎座 牛

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[已解決]請教LISP選集 Uos15010 [已解決]請教LISP選集 BPl3tjj [已解決]請教LISP選集 Ziao1510 [已解決]請教LISP選集 Oo-2-110 [已解決]請教LISP選集 Oooo-110 [已解決]請教LISP選集 2020-211