队列 发表于 2022-11-10 12:32:40

如果没有生成新的图元,怎么选取当前图元

本帖最后由 队列 于 2022-11-10 12:34 编辑

我想在合并多段线后输出该多段线的信息,现在遇到这么一个问题,如果在合并多段线后生成了新图元,那么这个程序是没有问题的;但如果合并的线本身就是多段线,执行合并多段线命令并没有用,那么这个程序输出的信息有可能是别的多段线的。想问下大家,代码怎么写,能在没有生成新图元的情况下,获取当前图元?谢谢大家。

自贡黄明儒 发表于 2022-11-10 12:59:35

(ssname ss 0)

start4444 发表于 2022-11-10 13:01:38

先计算ss的总长度,合并后不用管是否生成新图元,长度是一样的

队列 发表于 2022-11-10 13:15:10

自贡黄明儒 发表于 2022-11-10 12:59
(ssname ss 0)

按照这个代码写了,麻烦再问一下,为什么之后的“(setq ss (vlax-ename->vla-object ss))”代码会返回空值呢,这个怎么解决呀

队列 发表于 2022-11-10 13:16:20

start4444 发表于 2022-11-10 13:01
先计算ss的总长度,合并后不用管是否生成新图元,长度是一样的

主要后面还想获取面积,所以就想着先合并,后面再输出长度、面积这些信息

caoyin 发表于 2022-11-10 13:31:21

1.(setq E1 (entlast));;记录最后一个图元
2.执行选择, (setq E2 (ssname SS 0));;获取合并多段线的源对象
3.执行合并
4.(setq E3 (entlast))
(if (vlax-erased-p E2);;检查E2是否存在
(if (eq E1 E3)
    (princ "未知错误,合并失败");;E2在合并过程中误删,这个情况一般不会出现
    (setq NEW E3) ;;E2不存在,则E3就是生成的新图元
)
(setq NEW E2);;E2存在且是多段线
)

队列 发表于 2022-11-10 14:14:14

caoyin 发表于 2022-11-10 13:31
1.(setq E1 (entlast));;记录最后一个图元
2.执行选择, (setq E2 (ssname SS 0));;获取合并多段线的源对象 ...

谢谢呀,我试一下

队列 发表于 2022-11-10 14:16:17

队列 发表于 2022-11-10 13:15
按照这个代码写了,麻烦再问一下,为什么之后的“(setq ss (vlax-ename->vla-object ss))”代码会返回空 ...

不好意思呀,刚接触autolisp,没明白你说的意思

myhomer 发表于 2022-11-14 16:40:49

写两种情况一种是生成新图元,一种是原图元
页: [1]
查看完整版本: 如果没有生成新的图元,怎么选取当前图元