作者Egriawei (谁来档一下小七狮)
站内Cad_Cae
标题Re: [问题] 请问有关Autocad的 _ai_selall指令
时间Fri May 30 17:26:22 2008
※ 引述《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