samifox 发表于 2022-7-5 23:28:50

entmode:定义的更改

你好
 
尝试使用entmode,
这个代码设置为改变圆圈的颜色,我看到数据库条目已经改变,但颜色没有改变,
 
以及如何将颜色更改为具有ByLayer颜色的实体?
 
 
(defun C:002(/ entname entdef color)
        (setq sset (ssget))
        (setq entname (ssname sset i)) ;_get a selection set
       (setq entdef (entget entname)) ;_get the i member defenition
       (setq color (subst (cons 62 5) (assoc 62 entdef) entdef ))
          
   )
 
谢谢
谢伊

Tharwat 发表于 2022-7-5 23:38:33

如果要更改为ByLayer,只需将例程中的数字5替换为256即可。
 
(defun c:Test (/ sset i sn c e)
(if (setq sset (ssget "_:L" '((0 . "~VIEWPORT"))))
   (progn (setq i -1)
          (while (setq sn (ssname sset (setq i (1+ i))))
            (if (setq c (assoc 62 (setq e (entget sn))))
            (entmod (subst '(62 . 5) c e))
            (entmod (append e '((62 . 5))))
            )
          )
   )
)
(princ)
)

samifox 发表于 2022-7-5 23:47:13

 
谢谢
 
为什么我不能改变颜色?

Tharwat 发表于 2022-7-5 23:53:20

 
你在说我的密码还是你的?

samifox 发表于 2022-7-6 00:01:04

 
我的,你可以在def列表中看到,它被设置为62.5,但图形屏幕显示的颜色没有不同

Tharwat 发表于 2022-7-6 00:06:08

如果任何对象的颜色设置为“byLayer”,则该对象将没有DXF 62,因此如果没有,则需要将DXF 62添加到该对象中,并将要添加此新颜色的对象作为
虽然您的代码缺少entmod函数,但您可以看到我的代码。

samifox 发表于 2022-7-6 00:09:33

我懂了。。。我是一个多么愚蠢的程序员啊
谢谢

Tharwat 发表于 2022-7-6 00:18:34

 
不,我们以前都遇到过这种情况。

samifox 发表于 2022-7-6 00:28:21

你真好
 
我管理代码
 
(defun C:003(/ entname entdef )
        (setq sset (ssget))
        (setq entname (ssname sset 0)) ;_get a selection set
       (setq entdef (entget entname)) ;_get the i member defenition
       (if(assoc 62 entdef) ;_ if a color is set
               (entmod (subst (cons 62 5) (assoc 62 entdef) entdef )) ;_changh it
               (entmod(append entdef '((62 . 5))))
             
)
   
   )
 
实体中缺少的DXF是否更多?
 
 
谢谢
谢伊

Tharwat 发表于 2022-7-6 00:33:52

1-一个参数未本地化。
2-如果用户没有选择任何对象,则会抛出错误。
3-您的代码仅适用于一个对象。
4-在例程末尾添加princ函数,以避免返回例程的最后一个操作。
页: [1]
查看完整版本: entmode:定义的更改