Re: [問題] 請問有關Autocad的 _ai_selall指令
※ 引述《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
討論串 (同標題文章)