找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1382|回复: 9

[求助] 关于 autolist 使用 entlast 与 ssget 获取对象的区别?

[复制链接]
发表于 2018-10-6 17:14:10 | 显示全部楼层 |阅读模式

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

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

×
实现目标是 画一段直线 然后将直线变为红色 一下是两种方案
第一种

(defun c:cc(/ a)
  (vl-load-com)
  (setvar "osmode" 0)

  (command "line" '(0 0) '(100 100) "")
  (setq a (entlast))
  (setq a (vlax-ename->vla-object a))
  (vla-put-color a 1)
  )


第二种

(defun c:cc(/ a)
  (vl-load-com)
  (setvar "osmode" 0)

  (command "line" '(0 0) '(100 100) "")
  (setq a (ssget "c" '(-1 -1) '(1 1)))
  (setq a (vlax-ename->vla-object a))
  (vla-put-color a 1)
  )


为何第一种没有问题  第二种却一直提示     错误: 参数类型错误: lentityp <Selection set: fe0>
个人猜想是不是因为entlast获取的是一个实体 ssget获取的是选择集  选择集不能用以上方法修改颜色?
如果需要用第二种的方式来获得对象并且修改颜色 请问要如何修改?

还有一个问题   第一种方案中的 a 修改颜色之后  为何就不能对其进行编辑了?  例如   (command "erase" a "")  也是显示错误   能不能在修改完颜色之后将其恢复为可编辑的状态?

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

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-10-6 17:25:31 | 显示全部楼层
vlax-ename->vla-object 要求的参数是 实体名, 你不给实体名,肯定要出错。

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-10-6 17:30:25 | 显示全部楼层
你的第二个问题,不能删除,因为变量a 是VLA对象了,而command erase要求参数是实体名或选择集
你既然转VLA对象了,就用VLA的删除方法

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

使用道具 举报

已领礼包: 568个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2018-10-8 08:20:53 | 显示全部楼层
本帖最后由 hrkkkk 于 2018-10-8 08:27 编辑
Lisphk 发表于 2018-10-6 17:25
vlax-ename->vla-object 要求的参数是 实体名, 你不给实体名,肯定要出错。

你从SSGET取出实体名就行了 ...

谢谢   回复晚了
这样改就行了
(defun c:cc(/ a b)
  (vl-load-com)
  (setvar "osmode" 0)

  (command "line" '(0 0) '(100 100) "")
  (setq a (ssget "c" '(-1 -1) '(1 1)))
  (setq a (ssname a 0))
  (setq a (vlax-ename->vla-object a))
  (vla-put-color a 1)
  )
不过请问一下  (ssname a 0) 中的 0 是代表什么?  是ssname中的一个选项么?

还有 把对象转换为VLA对象之后  进行镜像、拉伸之类的编辑 命令类似于原来的command么
比如 镜像 (vla-mirror a "w"  a "" p1 p2 "n")?  转换成的VLA对象能否转回可以使用command调用函数进行编辑的状态?

新手问题比较多  先谢谢了

点评

你用 vlax-ename->vla-object 换个变量名就是了,原来的实体名变量留着,需要哪个的时候你就用哪个。  详情 回复 发表于 2018-10-8 11:34
这个是选择集处理的最基本的函数了,获得指定索引的实体名 0是选择集第一个实体,1是第二个 总数是 (sslength ss)  详情 回复 发表于 2018-10-8 11:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5188个

财富等级: 富甲天下

发表于 2018-10-8 10:07:11 | 显示全部楼层
返回选择集中由序号指定的那个对象(图元)的图元名
(ssname ss index)
ssget 函数获得的选择集中的图元名总是主图元名,而不会返回子图元(属性和多边形顶点),只能通过 entnext 函数访问子图元。
参数
ss
选择集。
index
整数(或实数),指定选择集中的一个元素。选择集中的第一个元素的序号为零 (0)。要获得选择集中第 32767 个以后的图元,必须提供实数形式的 index 参数。
返回值
如果成功则返回图元名。如果 index 为负数或大于选择集中的最大序号,ssname 返回 nil。

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-8 11:32:17 | 显示全部楼层
hrkkkk 发表于 2018-10-8 08:20
谢谢   回复晚了
这样改就行了
(defun c:cc(/ a b)

这个是选择集处理的最基本的函数了,获得指定索引的实体名
0是选择集第一个实体,1是第二个

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-8 11:34:04 | 显示全部楼层
hrkkkk 发表于 2018-10-8 08:20
谢谢   回复晚了
这样改就行了
(defun c:cc(/ a b)

你用 vlax-ename->vla-object 换个变量名就是了,原来的实体名变量留着,需要哪个的时候你就用哪个。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2018-10-8 18:16:29 | 显示全部楼层
好有爱的网友们!感谢你们

为什么不直接用ENTMAKE来直接生成带属性的LINE???
这不是更直接??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 17:22 , Processed in 0.402966 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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