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

看板Cad_Cae作者 (誰來檔一下小七獅)時間16年前 (2008/05/30 17:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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 要用人家寫的軟體就守人家的規則:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.196.93
文章代碼(AID): #18FyX1x9 (Cad_Cae)
討論串 (同標題文章)
文章代碼(AID): #18FyX1x9 (Cad_Cae)