Re: [問題] 請問有關Autocad的 _ai_selall指令

看板Cad_Cae作者 (kyle)時間16年前 (2008/05/31 02:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《Egriawei (誰來檔一下小七獅)》之銘言: : ※ 引述《kylechen (kyle)》之銘言: : : 當我們按ctrl+a的時候 : : autocad會執行 _ai_selall指令 : : 就會幫我們全選圖元 : : 但是當我用lisp語言寫 : : (command "_ai_selall") 的時候 : : 卻沒辦法執行這個指令 : : 請問有什麼辦法以Lisp語言呼叫這個全選指令嗎?? : : PS: 我已經嘗試過使用 (ssget "X")這個功能了 : : 但是好像會選到的東西是不同的? : 最後這個什麼意思? : 我不太清楚你確切的用途 : 用鍵盤按ctrl+a去選跟用函數去全選可能有點不太一樣 : 主要我看就是command函數看不懂_ai_selall這個指令 : 不過,卻有all這種打法:P : 概說如下 : lisp中寫到使用需要從畫面選取物件的指令或函數時 : 例如用move指令,要全選可以寫成這樣 : (command "move" "all" "") : ""表示enter,這個指令之後再加上移動的敘述或不寫手動來移 : 彈性一點的寫法 : (command "move" "all" pause pause) : 可以全選後點掉一些不要的,再執行移動 : [當然兩個pause可以跟別換成""跟移動敘述] : 不過不知道上面說的是否符合你需要 : 要用ssget取得整個圖的物件存給變數,可以寫成 : (setq allelm (ssget "all")) 或 (setq allelm (ssget "X")) : 不過要是你明白"X"過濾選集的用途,建議要全選用前面all的寫法 : ====下面就是廢話可以不用看了:)==== : 我想分享一點的就是 : command這個autocad函數 : 基本上後面打的內容就跟平常手動在指令區所打的指令幾乎一樣 : 要畫個圓就打(command "circle" '(0 0) 30.0) : 不過lisp中寫的內容卻不見得完全像在指令區打的一樣 : 而且也不見得所有指令都能丟到lisp中寫 : 需要去try一下才知道,書,F1的help等也許會有講一些 : 但好像沒看過會有逐一介紹每個指令在lisp中怎麼打的怎麼用的 : 因為基本上就跟手動打指令的執行過程一樣,沒必要再說(但是又不完全一樣) : 例如,lisp中"move"不能簡寫成"m","circle"不能簡化成 "c"否則會找不到函數 : 又如在指令區打layer,_layer會叫出對話框,-layer則是在指令行輸入 : 但(command "layer" ~~~),或layer改成-layer跟_layer卻都不會出現對話框 : 找看看,除非是有類似的範例程式碼,哪有跟使用者說layer在lisp中要怎麼打的呢? : 大概都當做使用者手動操作指令會,command照本宣科就是了 : 再說個例外,實際上layer如果要宣告顏色,cad版本不同,舊的版本沒有RGB色宣告可以用 : 只能用1~255,lisp中如果都寫成以rgb宣告,那拿去像2002版用就會爆 : 回題 : 像ctrl+c->ctrl+v可以執行複製貼上圖元,甚至可以從一張圖檔貼到另一張 : lisp中可以用(command "copyclip") 跟 (command "pasteclip") : 其實我會覺得用copy指令就可以了,雖然不能貼到其他的圖檔 : 全選的話lisp沒辦法打_ai_selall, : 但是有all的打法,這也是指令中當要選物件時可打的,用之 : 雖然command搞的像matlab的m檔案底稿寫法的感覺 : 不過卻沒像matlab兩邊都寫一樣就好 : 不過autocad是autocad,matlab是matlab : 要用人家寫的軟體就守人家的規則:) Hi Egriawei大大: 感謝您的解說 事實上是這樣的 小弟手上的工作會有許多底稿 這些底稿由另一個部門使用其他軟體所繪製 這些底稿轉換成DXF匯入AUTOCAD中之後 線條都存在有寬度 所以我必須全選圖元然後炸開 一直炸到線條寬度都為0為止..大約需要炸6~8次 所以我想要寫一個程式來幫我自動炸圖八次之類的... 而現在問題就卡在 我使用了數種全選指令 包括(ssget "X") 但是效果都沒辦法達到根 _AI_SELALL依樣 舉例而言 一般流程 我案ctrl+a (_AI_SELALL) 然後再輸入explode 就會完成一輪的炸開 但是我若使用 (setq allelm (ssget "X")) (command "explode" allelm "") 就沒辦法炸... 現在卡關中 真是苦惱啊.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.196.240

05/31 15:05, , 1F
沒有在lisp中用過explode所以不太清楚,我也try看看好了
05/31 15:05, 1F
文章代碼(AID): #18G4M6kK (Cad_Cae)
文章代碼(AID): #18G4M6kK (Cad_Cae)