Tomislav 发表于 2022-7-5 22:49:08

文本的颜色?

你好
我正在尝试获取所选文本的颜色。。。现在,如果文本不是ByLayer颜色,那么很容易,但是如果是,那么如何获得它。。。
我尝试了这个,但得到了错误的参数类型错误:
 
(setq bottom_color(vlax-get-property(vlax-get-property(vlax-get-property                       
                  (vlax-ename->vla-object(cdr(car(entget(ssname bottomss 0)))))'Layer)'TrueColor)'ColorIndex)
 
 
请帮忙

Tharwat 发表于 2022-7-5 22:57:53

试试这个。
 
或者这个,用同样的方法。
 

(if (setq s (ssget "_+.:S:E" '((0 . "*TEXT"))))
(setq clr (vlax-get-property (vlax-ename->vla-object (ssname s 0)) 'Color))
)

Tomislav 发表于 2022-7-5 23:09:57

首先,你能解释一下什么S: 是吗?
我知道:S和:E分别做什么,在我的lisp中,我使用了ssget和:S,但是这个组合。。。
其次,如果是ByLayer,我仍然不知道颜色的编号。。我得到每种颜色的“ByLayer”或数字256,只要它是该层的默认颜色,如果你知道我的意思,我需要该ByLayer后面的颜色:嗯:
换句话说,我需要颜色的数量,无论在哪层,在哪种颜色的文本是。。。

Tharwat 发表于 2022-7-5 23:18:24

 
_+。当用户被要求选择一个对象时,其行为方式与entsel函数相同,此外,还可以将光标作为一个框来进行选择。
:S通常与前面提到的字符串模式一起使用。
:E是获取拾取框选择集中的所有内容。
 
除此之外,你还期待什么?
 
ByLayer等于256
 
 
上文已解释

Tomislav 发表于 2022-7-5 23:29:21

256是表示ByLayer的数字,但ByLayer的颜色是什么。。。它是黄色,蓝色。。。?
如何获得具有标志ByLayer的文本的实际颜色?

Stefan BMR 发表于 2022-7-5 23:32:45

(setq e (car (entsel)))
(cond
   ((cdr (assoc 62 (entget e))))
   ((cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 (entget e)))))))
   )

7o7 发表于 2022-7-5 23:46:02

您可以使用以下代码获得实际颜色:
4
 
我和斯特凡同时发帖,内容相同!!

Tomislav 发表于 2022-7-5 23:57:25

就是这样
谢谢大家的努力。。。
页: [1]
查看完整版本: 文本的颜色?