明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 677|回复: 10

[源码] 请求修改

[复制链接]
发表于 2020-4-1 23:39 | 显示全部楼层 |阅读模式
100明经币
如果改变颜色的对象要自己选择,要修改哪里呢?
以下是所有的图都改颜色了。
------------------------------------------
(defun c:resetcolor (/ c)
  (setq c  8 )

  (if c
    (vlax-for block (vla-get-blocks
                      (vla-get-activedocument (vlax-get-acad-object))
                    )
      (vlax-for        ent block
        (vl-catch-all-apply 'vla-put-color (list ent c))

        ;; 增加对参照中属性的处理
        (if (and (= "AcDbBlockReference" (vla-get-objectname ent))
                 (= :vlax-true (vla-get-hasattributes ent))
            )
          (foreach att (vlax-safearray->list
                         (vlax-variant-value (vla-getattributes ent))
                       )
            (vla-put-color att c)
          )
        )
      )
    )
  )
  (princ)
)

最佳答案

查看完整内容

;或者 (defun c:resetcolor (/ c) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (setq Document (vla-get-ActiveDocument (vlax-get-acad-object))) (setq Blocks (vla-get-blocks Document)) (vla-StartUndoMark Document) (setq c 8 ) (If (progn (princ "\n请选择要更改颜色的图元:") (setq ssa (ssget)) ) (vlax-for Obj (vla-get-ActiveSelectionSet Docume ...
发表于 2020-4-1 23:40 | 显示全部楼层
;或者
(defun c:resetcolor (/ c)
  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq Document (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq Blocks (vla-get-blocks Document))
  (vla-StartUndoMark Document)

  (setq c  8 )

  (If (progn
          (princ "\n请选择要更改颜色的图元:")
          (setq ssa (ssget))
      )
      (vlax-for Obj (vla-get-ActiveSelectionSet Document)
         (vl-catch-all-apply 'vla-put-color (list Obj c))

         (if (= "AcDbBlockReference" (vla-get-objectname Obj))
             (progn
                 (vlax-for BlkObj (vla-item Blocks (vla-get-name Obj))
                       (vl-catch-all-apply 'vla-put-color (list BlkObj c))
                 )
                 (if (= :vlax-true (vla-get-hasattributes Obj))
                     (foreach AttObj (vlax-safearray->list
                                           (vlax-variant-value (vla-getattributes Obj))
                                     )
                         (vl-catch-all-apply 'vla-put-color (list AttObj c))
                     )
                 )
             )
         )
      )
  )
  (vla-EndUndoMark Document)
  (vlax-release-object Blocks)
  (vlax-release-object Document)
  (setvar "cmdecho" cmd)
  (princ)
)
回复

使用道具 举报

发表于 2020-4-2 01:47 | 显示全部楼层
(DEFUN C:c1 (/ pnam)
  (if (setq pnam (ssget))
    (COMMAND "chprop" pnam "" "c" "1" "")
  )
  (PRINC)
)


以此类推
回复

使用道具 举报

发表于 2020-4-2 07:01 | 显示全部楼层
本帖最后由 lee50310 于 2020-4-2 09:50 编辑

改第一行  (setq c  8 )   改成  (setq c (getint "\n 输入颜色值: "))
   
回复

使用道具 举报

 楼主| 发表于 2020-4-2 07:47 | 显示全部楼层
您好!
不用输入颜色值的
想要的是自己选择对象去修改颜色,不是把整个图的对象都改变颜色.
是不是各这个有关?   vl-catch-all-apply
回复

使用道具 举报

发表于 2020-4-2 09:14 | 显示全部楼层
(defun c:resetcolor (/ c)
  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq Document (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vla-StartUndoMark Document)

  (setq c  8 )

  (If (progn
          (princ "\n请选择要更改颜色的图元:")
          (setq ssa (ssget))
      )
      (vlax-for Obj (vla-get-ActiveSelectionSet Document)
         (vl-catch-all-apply 'vla-put-color (list Obj c))
         (if (and (= "AcDbBlockReference" (vla-get-objectname Obj))
                  (= :vlax-true (vla-get-hasattributes Obj))
             )
             (foreach AttObj (vlax-safearray->list
                                   (vlax-variant-value (vla-getattributes Obj))
                             )
                (vl-catch-all-apply 'vla-put-color (list AttObj c))
            )

             
         )

      )
  )
  (vla-EndUndoMark Document)
  (vlax-release-object Document)
  (setvar "cmdecho" cmd)
  (princ)
)

点评

Command: v8 选择要修改颜色的对象: Select objects: 1 found Select objects: ; error: Automation Error. Calling method AddItems of interface IAcadSelectionSet failed  发表于 2020-7-16 23:57
大师!使用了一段时间了 有个问题,偶尔在用的时候就不能改颜色了,信息如下 Command: v8 选择要修改颜色的对象: Select objects: 1 found Select objects: ; error: Automation Error. Calling method AddItem   发表于 2020-7-16 23:56
回复

使用道具 举报

发表于 2020-4-2 09:45 | 显示全部楼层
;;選擇一对象改變顏色
(defun c:ch1 (/ c)
  (setq c 3 )  ;指定顏色 綠色
  (setq en (car (entsel)))
  (command "chprop" en "" "c" c )
)
回复

使用道具 举报

发表于 2020-4-2 11:02 | 显示全部楼层
(defun c:tt (/ c en i ins names ojb ss)
  (setq c  8 )
        (setq ss(ssget))
        (setq i -1 names nil)
        (while (setq en(ssname ss(setq i(1+ i))))
                (setq ojb (vlax-ename->vla-object en))
                (if(/= (cdr (assoc 0 (entget en )))"INSERT")
                        (vla-put-color ojb c)
                        (progn
                                (setq ins(cdr (assoc 2 (entget en ))))
                                (if(member ins names)nil(setq names(cons ins names)))
                                (if (= :vlax-true (vla-get-hasattributes ojb))
                                        (foreach att (vlax-safearray->list
                         (vlax-variant-value (vla-getattributes ojb))
                       )
            (vla-put-color att c)
          )
                                )
                        )
                )
        )
        (vlax-for block (vla-get-blocks
                                                                                (vla-get-activedocument (vlax-get-acad-object))
                                                                        )
                (if(member (vlax-get-property block 'Name)names)
                        (vlax-for ent block
                                (vl-catch-all-apply 'vla-put-color (list ent c))
                        )
                )
        )
  (princ)
)
回复

使用道具 举报

 楼主| 发表于 2020-4-2 23:12 | 显示全部楼层
yshf 发表于 2020-4-2 09:24
;或者
(defun c:resetcolor (/ c)
  (setq cmd (getvar "cmdecho"))

可以了!非常感谢!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 19:57 , Processed in 0.195134 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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