明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: spring

用 LISP 如何做到像 AREA 命令的一样的提示呢?

  [复制链接]
发表于 2004-10-1 08:00:00 | 显示全部楼层

;;我的

(defun C:TT (/ PT)
(while (= PT NIL)
(initget 128 "O A S")
(setq PT (getpoint "\n第一个角点或 [对象(O)/加(A)/减(S)]: "))
(cond
((equal 'list (type PT))
(print PT)
)
((equal "O" PT)
(print PT)
)
((equal "A" PT)
(print PT)
)
((equal "S" PT)
(print PT)
)
((and (/= PT NIL)
(not (equal 'list (type PT)))
(not (wcmatch PT "O A S"))
)
(setq PT NIL)
(prompt "\n需要点或选项关键字。")
)
((= PT NIL)
(setq PT t)
)
)
)
(princ)
)

发表于 2004-10-1 08:59:00 | 显示全部楼层
Good stuff, but        the usage        is a bit complicated.
发表于 2004-10-1 13:03:00 | 显示全部楼层
因为vl不支持不定数的参数.所以只好这样.


也可以改为(x-cond-getpt '(doel dopt [dolst1] [dolst2] ...))


这样就有的像vb的函数
 楼主| 发表于 2004-10-4 15:39:00 | 显示全部楼层
我回去写的(写了一个晚上了,惭愧) 我上说过要写一个函数 (函数 参数)来执行我要的功能,是因为我如果要执行选择功能的话 (initget "B")
(setq p1 (ssget "\n请选择图元: / B: 输入字串 / <ENTER结束命令> ")) 因为 ssget 函数不接受提示参数,所以就得自己写个函数拉.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-10-4 16:21:00 | 显示全部楼层
(defun C:TT (/ PT)
(while (= PT NIL)
(initget 128 "B")
(setq
PT (getpoint "\n请选择图元: / B: 输入字串 / <ENTER结束命令> ")
)
(cond
((equal 'list (type PT))
(command "_.SELECT" PT PAUSE)
(ssget "P") ;ADD FILTER '((0 . "CIRCLE"))
)
((equal "B" PT)
(print PT)
)
((and (/= PT NIL)
(not (equal 'list (type PT)))
(not (wcmatch PT "B"))
)
(setq PT NIL)
(prompt "\n选择图元或选项关键字。")
)
((= PT NIL)
(setq PT t)
)
)
)
(princ)
)
发表于 2004-10-4 16:24:00 | 显示全部楼层
所以说也不要再写什么函数了.


getpoint加上cond这个结构已经相当简洁了.而且cond的case情况很多,写函数未必都能满足使用需求.
 楼主| 发表于 2004-10-4 16:47:00 | 显示全部楼层
本帖最后由 作者 于 2004-10-4 17:19:48 编辑

这样子是可以用 可是还要先拾取一点才选择图元 (defun c:aa ()
(initget "S B")
(setq
PT (getkword "\nS:选择图元: / B: 输入字串 ")
)
) 那就和这个差不多拉
发表于 2004-10-4 17:09:00 | 显示全部楼层
那个拾取点就是选择图元---再看清楚(只是它受抓取模式影嚮)
 楼主| 发表于 2004-10-4 17:34:00 | 显示全部楼层
(command "_.SELECT" PT PAUSE)


我把这句改成 (command "_.SELECT" PT ) 就可以了,可是 PAUSE         是暂停以等待用户输入也没错啊.这是怎么回事呢.


你说(只是它受抓取模式影嚮)是不是她只能用框选,而不能栏选等了.这到无所谓多数都是用框选的.
发表于 2004-10-5 08:10:00 | 显示全部楼层

select指令的特性--只需一个pause,选完物件后命令才结束,程序中pt在au模式下所以pt=pause了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 03:35 , Processed in 0.160268 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表