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

[討論]如何用Autolisp取消選取

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

[討論]如何用Autolisp取消選取

發表 由 RyanGuo 于 2013-10-04, 10:01

目前我編寫的程式裡有用到STRETCH的指令,
部分程式如下:
代碼:
(prompt "\n選擇要STRETCH的圖元..")
(COMMAND "STRETCH" (ssget) "" RG:PPD:oP2 RG:PPD:oP3)
其中RG:PPD:oP2和RG:PPD:oP3是點座標.

目前卡在,
如果在程式執行前就有選取圖元時,
(ssget)會自動抓已經選取的圖元,
而我想在程式執行到(COMMAND "STRETCH" ....)之前先取消掉已經有的選取,
到底要如何做呢?


RyanGuo 在 2013-10-07, 06:46 作了第 2 次修改
avatar
RyanGuo
初級會員
初級會員

文章總數 : 206
年齡 : 34
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 2958
威望值 : 303
注冊日期 : 2013-04-18
男 射手座 狗

回頂端 向下

回復: [討論]如何用Autolisp取消選取

發表 由 leoneriol 于 2013-10-04, 10:30

代碼:
(prompt "\n選擇要STRETCH的圖元..")
(setq ssobj (ssget))
(COMMAND "STRETCH" ssobj "" RG:PPD:oP2 RG:PPD:oP3)
avatar
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 816
年齡 : 33
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 6579
威望值 : 938
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

回復: [討論]如何用Autolisp取消選取

發表 由 RyanGuo 于 2013-10-04, 10:33

剛剛才發現如果是用
代碼:
(prompt "\n選擇要STRETCH的圖元..")
(setq ssobj (ssget))
(COMMAND "STRETCH" ssobj "" RG:PPD:oP2 RG:PPD:oP3)
作用其實是和
代碼:
(prompt "\n選擇要STRETCH的圖元..")
(COMMAND "STRETCH" (ssget) "" RG:PPD:oP2 RG:PPD:oP3)
一樣的@@a
之前我沒看清楚還以為是leoneriol兄的回答是
代碼:
(prompt "\n選擇要STRETCH的圖元..")
(setq ssobj (ssget))
(COMMAND "STRETCH" (ssget) "" RG:PPD:oP2 RG:PPD:oP3)
上面這樣的話,的確是可以在原先有選取物件時,取消掉選取,
但也變成了在原先沒有選取物件時,需要選取兩次@@a

[追加]
找到一個替用方案,利用系統變數"PICKFIRST",
初始值: 1
0 關閉 PICKFIRST;先執行再選取
1 打開 PICKFIRST;先選取再執行
其作法是先將PICKFIRST設為0後再執行指令,
這樣不管是否有在執行指令前先選取物件,
程式執行到指令時,一律會變為未選取狀態.

在程式的前後加上原有系統變數的儲存和恢復後的程式如下:
代碼:
;;儲存舊的變數值
(SETQ oPICKFIRST (getvar "PICKFIRST"))
;;指定程式需要的數值
(setvar "PICKFIRST" 0)
(prompt "\n選擇要STRETCH的圖元..")
(COMMAND "STRETCH" (ssget) "" RG:PPD:oP2 RG:PPD:oP3)
;;恢復舊的變數值
(setvar "PICKFIRST" oPICKFIRST)
avatar
RyanGuo
初級會員
初級會員

文章總數 : 206
年齡 : 34
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 2958
威望值 : 303
注冊日期 : 2013-04-18
男 射手座 狗

回頂端 向下

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


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