找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1330|回复: 7

[求助] [求助]:如何同时实现文字输入和对象选择

[复制链接]
发表于 2004-6-12 19:08:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请问谁知道如何同时实现文字输入和对象选择(取得文字的值或点的高程),并且优先承认键盘输入的值.
谢谢关注!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-13 18:27:22 | 显示全部楼层
看看initget,entsel的帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-6-13 20:59:01 | 显示全部楼层
用LISP可能有点难!因initget对entsel只支持关键字。

你的要求是获取一变量,该变量为高程值,该值即可以通过直接选取图中的文字来获取,也可以直接在命令行中键入。
要同时达到以上两个条件可能有困难,不过你可以在提示选取对象时加入直接输入的选项:

  1. (initget "I")
  2. (setq ee(entsel "请选择高程文字[键盘输入(I)]:"))
  3. (if (= ee "I")
  4.    (progn
  5.      (setq h (getreal "请输入高程:")
  6.       ;;这里是直接由键盘输入高程的处理过程
  7.  )
  8.     (progn
  9.       ;;这里是选择高程文字的处理过程
  10.    ;;其中要加入判断选中的是不是特有的高程文字
  11.  )
  12. )

以上只是一个概念,你可以参照。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2004-6-13 21:33:05 | 显示全部楼层
grread
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-13 23:46:32 | 显示全部楼层
用getpoint


[php]
;|xentsel = 取得多种返回的entsel----------------by 陌生人.2004.6即兴.
接受:
1.输入点->返回有效实体.
2.数字->返回数字.
3.字符串->返回字符串.
如果返回nil,循环直到取得有效返回.
|;
(defun xentsel (/ k k2 ss)
(while
  (progn
    (initget 128)
    (setq k (getpoint "\n选择物体/输入数据:"))
    (cond  ((= 'LIST (type k))(setq k2(nentselp k)))
               (T(setq k2 (if (distof k)(distof k)k)))
    )
    (not k2)
  )
)
k2
)
[/php]
测试:
_$ (xentsel) ->点取物体
(<图元名: 7ef87e58> (20700.5 7213.71 0.0))
_$ (xentsel)->输入333
333.0
_$ (xentsel)-》输入"bcd"
"bcd"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-17 01:42:30 | 显示全部楼层
多谢各位高手的悉心指教!
可是却没有我想要的方法
比如3楼的,要输入关键字,我原来就是嫌麻烦
而四楼的函数我还没弄懂,
五楼的方法,照他测试的结果,的确就是我想要的,但是我测试时,
程序运行完,什么操作都没,只返回NIL

;我原来的选择语句是下面这样的,目的是由点(Z坐标)或文字对象(文字值)取得点高程
带点过滤表的entsel(直到选中为止)
(defun eel(filter msg /  el)
  (while (not(and               
               (setq el (car(entsel msg)))
               (WCMATCH (cdr(ASSOC 0 (entget el))) (cdr(nth 0 filter)))
               )
             )
    )
   el
  )

后来又想同时可以直接用键盘输入高程值,所以来麻烦各位大虾
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-17 14:37:58 | 显示全部楼层
“程序运行完,什么操作都没,只返回NIL”
这是不可能的吧?呵呵.我测试过。除非你按esc :)或则power,restart键。或则死机。
因为程序中 非k2,即(not k2),如果后者,会继续循环。
再试试:
(setq a (xentsel))
另外,为了选物体方便,最好打开捕捉(如nea,per)或则自己在程序里面加,这个我想对你应该不难的:)


grread用法可参照cad帮助。
可输入的类型比较灵活,但是
1。要得到字符串,要加些语句,因为grread反回的信息只含单个字符(如果按键盘的话)
2。要透明使用‘zoom,pan,F8,F9则写起来比较麻烦,也不是不可以写出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-6-17 22:45:33 | 显示全部楼层
最初由 陌生人 发布
[B]“程序运行完,什么操作都没,只返回NIL”
这是不可能的吧?呵呵.我测试过。除非你按esc :)或则power,restart键。或则死机。
因为程序中 非k2,即(not k2),如果后者,会继续循环。
再试试:
(setq a (xentsel))
... [/B]


看来只有我们俩才会研究这种小问题.

[php]
;;;右键退出
(defun wentsel(msg / k r)
(while(and
         (or(initget 128)(setq k(getpoint msg)))
         (not(setq r(cond((listp k)(nentselp k))(t k))))
       )
  )r)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 05:25 , Processed in 0.166938 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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