明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1961|回复: 9

图形实体选择

[复制链接]
发表于 2003-3-31 14:40:00 | 显示全部楼层 |阅读模式
请教用visual Lisp如何确定选择图形实体的部位(如多段线的哪一段)。谢谢!
发表于 2003-3-31 15:13:00 | 显示全部楼层

回应...

(NEntSel [提示字串])
指定一个对象,返回图元名和其它信息:
简单对象: 与 (EntSel) 相同
复杂对象: 与 (EntSel) 相似,图元名是所指片段的名
多重对象: 返回一个表,第一项是所指片段的图元名;
                    第二项是所指点位;
                    第三项是3x4转换矩阵;
                    第四项是图元名表
发表于 2003-3-31 19:41:00 | 显示全部楼层

关于多段线。

本帖最后由 作者 于 2003-3-31 19:41:12 编辑

(nentsel)函数对你选择了多段线的哪一段是没有能力得知的。但它对块的子图元有作用,如陈老师所说。
关于你选择了多段线的哪一段,你看看本论坛的帖子。
http://www.mjtd.com/a2/list.asp?id=275
发表于 2003-3-31 20:18:00 | 显示全部楼层

好象有一些问题

命令: (setq ls (nentsel))
选择对象: (<图元名: 400749b0> (2347.42 -75.0656 0.0))

命令: (setq en (car ls)) <图元名: 400749b0>

命令: !ls (<图元名: 400749b0> (2347.42 -75.0656 0.0))

命令: (setq ed (entget en)) ((-1 . <图元名: 400749b0>) (0 . "LWPOLYLINE") (330
. <图元名: 4006bcf8>) (5 . "113B6") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "1") (100 . "AcDbPolyline") (90 . 5) (70 . 1) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 2286.74 -107.685) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
2310.22 -66.4528) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 2379.41 -82.3114) (40 .
0.0) (41 . 0.0) (42 . 0.0) (10 2373.7 -124.178) (40 . 0.0) (41 . 0.0) (42 .
0.0) (10 2318.48 -126.715) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))
 楼主| 发表于 2003-4-1 00:07:00 | 显示全部楼层

谢谢陈老师的帮助。

发表于 2003-4-9 11:57:00 | 显示全部楼层

[注意]对于nentsel函数而言,你所选的优化多段线对象是简单对象

发表于 2003-4-9 12:28:00 | 显示全部楼层

SEGMENT FROM STARTPT....

;;SEGMENT FROM STARTPT
;;USAGESEGMENT (ENTSEL))
(defun SEGMENT (ENT / PNT VOBJ PARAM)
  (setq VOBJ (vlax-ename->vla-object (car ENT)))
  (setq PNT (vlax-curve-getclosestpointto VOBJ (trans (cadr ENT) 1 0)))
  (setq PARAM (1+ (fix (vlax-curve-getparamatpoint VOBJ PNT))))
)
发表于 2003-4-9 15:45:00 | 显示全部楼层

没错...

这个LWPolyLine实在是个“有趣”的对象类型。我们看到,LWPolyLine对象是从AutoCAD R14起新增加的,最主要特点是数据长度小了:
                1000条 Line _51,956 bytes
                1000直线片段的 Polyline _42,087 bytes
                1000直线片段的 LWPolyline _13,957 bytes
同时,LWPolyLine的编辑处理速度也明显快于PolyLine。这些明确的技术指针,说明的数据结构确实有其独特之处。默认状态下,生成的多段线都是LWPolyLine,由系统变量PlineType控制多段线命令的结果类型和兼容性。但是,对于程序设计来说,LWPolyLine对象实在令人哭笑不得,笔者认为,这个LWPolyLine数据结构和相关处理功能,是AutoCAD最近版本中最为失败的新设计。目前已经碰到的问题如下所述。

摘自《Vieual LISP程序设计——技巧与范例》
 楼主| 发表于 2003-4-11 00:14:00 | 显示全部楼层

ENT PNT各代表什么含义 ?

发表于 2003-4-11 08:13:00 | 显示全部楼层

ent=(entsel) , pnt=點選曲線的最接近點

[此贴子已经被作者于2003-4-11 8:13:31编辑过]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 08:24 , Processed in 0.182940 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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