xdrx_entity_getproperty用法疑问
返回文字选择集的字符串表(setq strlst (xdrx_entity_getproperty (ssget '((0 . "text"))) "textstring"))
如何用类似以上语句,返回联合列表((str1 en1) ....),其中str1为字符串,en1为图元名
本帖最后由 newer 于 2020-12-9 07:32 编辑
1.(mapcar '(lambda(x)(list (xdrx-getpropertyvalue x "textstring") x))(xdrx-pickset->ents (ssget '((0 . "text")))))
2.
(xdrx-entity-getproperty (ssget) "textstring" "handle")
本帖最后由 pxt2015 于 2020-12-9 19:27 编辑
第一种方式,xdrx-pickset->ents遍历一次选择集,mapcar再遍历一次表,相对于第二种方式,是不是速度稍慢?
pxt2015 发表于 2020-12-9 19:25
第一种方式,xdrx-pickset->ents遍历一次选择集,mapcar再遍历一次表,相对于第二种方式,是不是速度稍慢? ...
对于现在的机器来说,1毫秒和2毫秒的区别
拖慢程序的是算法
这里的代码都是线性,复杂度是n的,1n好 2n没什么区别
你的代码其他地方如果是n*n的,慢的是其他地方 受教了,第一种方式便于格式化代码,通用性强。
pxt2015 发表于 2020-12-9 20:49
受教了,第一种方式便于格式化代码,通用性强。
2020.12.18版本,可以直接返回实体名了
(xdrx-getpropertyvalue (ssget) "textstring" "ename") XDSoft 发表于 2020-12-13 15:42
2020.12.18版本,可以直接返回实体名了
(xdrx-getpropertyvalue (ssget) "textstring" "ename")
仅选择 一个时,少了个括号。
命令: (xdrx-getpropertyvalue (ssget) "textstring" "ename")
选择对象: 指定对角点: 找到 1 个
选择对象:
("4%%13225/2%%13220" <图元名: 7ff3fdd1d2b0>)
选择多个时,是正确的:
命令: (xdrx-getpropertyvalue (ssget) "textstring" "ename")
选择对象: 找到 1 个
选择对象: 找到 1 个,总计 2 个
选择对象: 找到 1 个,总计 3 个
选择对象:
(("4%%13225/2%%13220" <图元名: 7ff3fdd1d2b0>) ("4%%13225/2%%13222" <图元名: 7ff3fdd1d2d0>) ("4%%13225/2%%13222" <图元名: 7ff3fdd1d2f0>))
建议仅选择一个时,也在外面加上一层括号就好了。
命令: (xdrx-entity-getproperty (ssget) "textstring" "handle")
选择对象: 找到 1 个
选择对象:
(("4%%13225/2%%13220" "84EB"))
这样是可以的。
本帖最后由 pxt2015 于 2020-12-14 15:03 编辑
以上语句中,"84EB"如何转换成图元名?
同样是处理选择集,有时用xdrx-entity-getproperty,有时用xdrx-getpropertyvalue,不知道如何区分
pxt2015 发表于 2020-12-14 14:58
以上语句中,"84EB"如何转换成图元名?
同样是处理选择集,有时用xdrx-entity-getproperty,有时用xdrx-ge ...
(handent "84EB") dyjwyqz5221 发表于 2020-12-14 14:06
仅选择 一个时,少了个括号。
命令: (xdrx-getpropertyvalue (ssget) "textstring" "ename")
选择对象: ...
试下最新的API 本帖最后由 pxt2015 于 2021-1-3 20:40 编辑
当需要创建联合列表时,
(Xdrx_Getpropertyvalue (ssget '((0 . "text"))) "Textstring" "Rotation" "Ename")
一句话代替了以下一大段代码,有干掉Xdrx_Pickset->Ents函数的趋势,而且避免了局部变量的互相干扰。
代码简化且格式化编程了。
(setq ss (ssget '((0 . "text"))))
(Mapcar 'Set '(i l) '(-1 Nil))
(Repeat (Sslength ss)
(SetqEn(Ssname ss (Setq i (1+ i)))
Da(Entget En)
Str (cdr (assoc 1 Da))
Ro(cdr (assoc 50 Da))
)
(Setq l (Cons (List Str Ro En) l))
)
(Setq l (reverse l))
页:
[1]