乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 112|回复: 9

[求助]怎樣通過LISP以點型式單選圖元?

[复制链接]

17

主题

58

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
126
发表于 2004-3-31 08:58:00 | 显示全部楼层 |阅读模式
怎樣通過LISP以點型式單選圖元?如果有選到偉回1,沒有圖元傳回0,萬分感謝!
                                         我想通過某函數(格式如:function( point /))的型式通過某點抓取圖元,如果沒有圖元則傳回0,如果有則傳回1.
                         通過(setq ll(command ".select" pp "")) 卻無論怎樣都傳回NIL,
                         通過(entsel pp)卻是“bad argument type!”,實在沒辦法啦。
請各位高手賜教。謝謝!
回复

使用道具 举报

57

主题

466

帖子

8

银币

中流砥柱

Rank: 25

铜币
694
发表于 2004-3-31 09:37:00 | 显示全部楼层
ENTSEL为了对一个对象进行操作,AutoLISP 应用程序必须获取它的图元名称,以便调用图元数据或选择集函数。本节详细说明两个函数 entsel 和 nentsel,它们不仅返回图元名称,而且返回应用程序需要的其他信息。
这两个函数都要求 AutoCAD 用户通过在图形屏幕上交互地拾取点来选择对象。所有其他图元名称函数都能获取图元,即使该图元在屏幕上不可见或是位于冻结图层上。entsel 函数提示用户通过在图形屏幕上拾取点来选择对象,entsel 返回图元名称和选定点的值。一些图元操作需要用来选定对象的点的信息。例如 AutoCAD 命令集中的 BREAK、TRIM 和 EXTEND。关于 nentsel 函数的详细说明请参见图元上下文和坐标转换数据。如果在调用这些函数之前调用了 initget,则它们可以接受关键字。
entnext 函数获取后续图元的名称。如果不带参数地调用 entnext,则返回图形数据库中第一个图元的名称。如果参数是当前图形中某个图元的名称,entnext 返回紧随其后的图元名称。
下列代码示例了配合使用 ssadd 和 entnext 来创建选择集的方法,并为已有的选择集添加内容。
(setq e1         (entnext))
(if         (not e1)                                ;将第一个图元名称赋给 e1
         (princ "\n图形中没有图元。")
         (progn
                         (setq ss         (ssadd))                        ;将一个空选择集赋给 ss
                         (ssadd e1 ss)                                ;返回添加了 e1 的选择集 ss
                         (setq e2 (entnext e1))                        ;获取紧随 e1 的图元
                         (ssadd e2 ss)                                ;向选择集 ss 中添加 e2
         )
)
entlast 函数获取数据库中最新图元的名称。最新图元是最近创建的主图元。所以调用 entlast 可以获取一个刚刚通过调用 command
所创建的图元的名称。
可以将由 entnext 返回的图元名指定给传至该函数的同名变量。这样就可以用一个图元名变量来“遍历”整个数据库,如下所示:
(setq one_ent (entnext))                ;获取第一个图元的名称
        (while one_ent
        .
        .                                                        ;处理新图元
        .
         (setq one_ent (entnext one_ent))
)                                                                ;现在,one_ent 的值是 nil
回复

使用道具 举报

17

主题

58

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
126
发表于 2004-3-31 09:50:00 | 显示全部楼层
謝謝,不過我的意思是新編寫一個function,此function有我所有的功能。再幫我想想辦法吧。
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-3-31 10:16:00 | 显示全部楼层
(ssget "c" pp pp)
回复

使用道具 举报

57

主题

466

帖子

8

银币

中流砥柱

Rank: 25

铜币
694
发表于 2004-3-31 12:44:00 | 显示全部楼层
是这样子吗
(defun c:gg ()
         (setq ss (entsel))
         (if ss
                         (setq cc 1)
                         (setq cc 0)
         )
)
回复

使用道具 举报

6

主题

52

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2004-3-31 15:57:00 | 显示全部楼层
这样吧!
(defun c:gg ()
         (setq pp (getpoint))
         (setq ss (ssget "c" pp pp))
         (if ss
                         (setq cc 1)
                         (setq cc 0)
         )
)
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-31 17:48:00 | 显示全部楼层
不明白楼主,(entsel "选择对象...")到底有什么问题,这样都不行?有现成的,要自己写一个做什么?跟AUTODESK公司叫板?
你说的错误只是你使用错误了,不是函数本身有问题。。。仔细看看帮助中的介绍,entsel的参数是什么类型,不是随便代一个参数进去就可以的
回复

使用道具 举报

57

主题

466

帖子

8

银币

中流砥柱

Rank: 25

铜币
694
发表于 2004-3-31 18:36:00 | 显示全部楼层

阁下是不是以前在统赢公司工作,现在自己在开发。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-3-31 18:44:00 | 显示全部楼层
还用entsel不行么?
(if (entsel) 1 0)
回复

使用道具 举报

17

主题

58

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
126
发表于 2004-4-1 15:33:00 | 显示全部楼层
謝謝,不過可能是我沒說清楚,是這樣的:
  我想移動光標(不需CLICK),當光標移至某圖元上方時就顯示此圖元相關資料,
光標移開時,相應資料自動消失。
  我想用(grread T)的方式取得光標點,然後將此圖元資料自動顯示出來。(無需點擊圖元),哥們所說都需選取圖元。
  哥們再想想辦法吧。謝謝!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-15 17:28 , Processed in 3.740931 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表