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

[已解決]請教LISP選集

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

[已解決]請教LISP選集

發表 由 老水牛 于 2011-07-01, 08: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, 02:09 作了第 5 次修改 (原因 : 將主題顏色改為藍色)

老水牛
初級會員
初級會員

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

回頂端 向下

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

發表 由 adslwang 于 2011-07-01, 10: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, 13:05 作了第 1 次修改 (原因 : 再補充)
avatar
adslwang
高級會員
高級會員

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

回頂端 向下

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

發表 由 ginse0727 于 2011-07-01, 14: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) ;抑制空回應
)

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

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

回頂端 向下

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

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

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

avatar
shenhung
高級會員
高級會員

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

回頂端 向下

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

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

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

老水牛
初級會員
初級會員

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

回頂端 向下

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


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