[已解決]請教LISP選集
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]請教LISP選集
(defun c:dr();向下陣列
(setq a(getint "\n個數:"))
(setq s(getint "\n間距:"))
(setq t(entsel))
(command "array" t "" "R" a "" s)
)
請問上面的程式要如何修改成"窗選" 或"框選"等其他選取方式
(setq a(getint "\n個數:"))
(setq s(getint "\n間距:"))
(setq t(entsel))
(command "array" t "" "R" a "" s)
)
請問上面的程式要如何修改成"窗選" 或"框選"等其他選取方式
Tiger&蘋果爸 在 周五 8 7月 - 9:09 作了第 5 次修改 (原因 : 將主題顏色改為藍色)
老水牛- 初級會員
- 文章總數 : 107
年齡 : 63
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 6127
威望值 : 0
注冊日期 : 2008-10-17
回復: [已解決]請教LISP選集
老水牛 寫到:(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 在 周五 1 7月 - 20:05 作了第 1 次修改 (原因 : 再補充)
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7210
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [已解決]請教LISP選集
提供你參考看看,
(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) ;抑制空回應
)
(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- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6828
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]請教LISP選集
感謝各位大大的指導。
我也曾用ssget 作為選集,應該是不知 t 在 LISP 中有特定的含義,導至程式無法執行。
我也曾用ssget 作為選集,應該是不知 t 在 LISP 中有特定的含義,導至程式無法執行。
老水牛- 初級會員
- 文章總數 : 107
年齡 : 63
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 6127
威望值 : 0
注冊日期 : 2008-10-17
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章