乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 9

[编程交流] 自动更改颜色对象

[复制链接]

20

主题

53

帖子

32

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 12:15:57 | 显示全部楼层 |阅读模式
你好通过将所有对象(即文本、尺寸、图案填充、图纸文件中除标题栏及其标题栏属性外的所有外部参照)的颜色内容更改为灰色,使其看起来像背景色,我正在处理数百个图形。我面临的问题是,一些图层对象的对象颜色不是“bylayer”。有没有人有lisp例程可以运行&自动更改您选择的所有对象的所有颜色?
 
非常感谢您的回复。
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:24:26 | 显示全部楼层
当你在等待一个好的灵魂为你写一个lisp时,你可以用键盘手动操作:-
 
命令:-ch(回车)
更改
选择对象:全部(Enter)
找到2254个
378人不在当前空间。
 
选择对象:(输入)
指定更改点或[特性]:p(输入)
 
输入要更改的特性[Color/Elev/LAyer/LType/ltScale/LWeight/Thickness]:c(输入)
 
输入新颜色:bylayer(Enter)
 
输入要更改的特性[Color/Elev/LAyer/LType/ltScale/LWeight/Thickness]:(输入)
这不适用于嵌入块中的任何行,您必须分解这些行,但它可以在您等待时为您提供一些操作。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 12:30:22 | 显示全部楼层
像这样的?
 
  1. (defun c:ToColor (/ #SS #Color #Layers #Layer #List)
  2. (vl-load-com)
  3. (cond
  4.    ((and (setq #Color (acad_colordlg 1))
  5.          (setq #SS (ssget))
  6.     ) ;_ and
  7.     (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  8.     (setq #Layers (vla-get-layers *AcadDoc*))
  9.     (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*))
  10.       (vl-catch-all-apply 'vla-put-color (list x 256))
  11.       (or (vl-position (setq #Layer (vla-get-layer x)) #List)
  12.           (progn (vla-put-color (vla-item #Layers #Layer) #Color)
  13.                  (setq #List (cons #Layer #List))
  14.           ) ;_ progn
  15.       ) ;_ or
  16.     ) ;_ vlax-for
  17.     (vl-catch-all-apply 'vla-delete (list #SS))
  18.    )
  19. ) ;_ cond
  20. (princ)
  21. ) ;_ defun
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 12:37:55 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?t=31017
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 12:45:44 | 显示全部楼层
所有层和块的Lisp颜色变化
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:55:16 | 显示全部楼层
 
外部参照
 
~'J'~
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 13:01:38 | 显示全部楼层
 
ColorX-更改图形所有对象的颜色。所有层解锁和解冻
颜色外部参照仅在当前会话中更改颜色外部参照。所有层解锁和解冻
ColorXL-更改图形所有对象的颜色。锁定层和冻结层上的对象将被忽略
颜色外部参照仅在当前会话中更改颜色外部参照。锁定层和冻结层上的对象将被忽略
 
COLORXLAY-更改外部参照层的颜色
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 13:06:56 | 显示全部楼层
 
И от меня спасибо
Успехов
 
~'J'~
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 13:13:45 | 显示全部楼层
海菲佐
你修改过这个代码吗
 
 
 
 
代码:
(defun div错误(msg)
(如果
(vl位置
味精
“(“控制台中断”
“功能已取消”
“退出/退出中止”
)
)
(princ“Error!”)
(普林斯消息)
)
(while(>(getvar“cmdactive”)0)(命令))
;;;  (命令“.u undo”“\u end”)
;;;  (命令“_”)
(setq*错误*旧错误)
(普林斯)
)
(defun divplus(len segm/num lst)
(setq num(fix(/len segm)))
(setq cnt 0)
(虽然(
(setq tmp(*cnt segm))
(setq lst(append lst(list tmp)))
(setq cnt(1+cnt))
)
(setq delta(-len(最后一个lst)))
(if(not(zerop delta))
(setq lst(追加lst(列表(+(最后一个lst)增量)))
lst公司
)
)
(defun divminus(len segm/lst)
(而(>=长度0。)
(setq lst(append lst(list len)))
(setq len(-len segm))
)
(if(not(zerop(last lst)))
(setq lst(追加lst(列表0.0)))
)
lst公司
)
(defun alg ang(obj pnt)
(角度'(0.0.0。)
(vlax曲线getfirstderiv
obj公司
(vlax曲线getparamatpoint
obj公司
pnt公司
)
)
)
)
(defun答案(quest/wshl-ans)
(或(vl load com))
(setq wshl(vlax获取或创建对象“WScript.Shell”))
(setq ans(vlax调用方法
wshl公司
“弹出任务7”回答这个问题:“vlax vbYesNo”)
(vlax释放对象wshl)
(条件(=ans 6)
(setq opt)
(=ans 7)
(setq opt nil)
)
选择
)
 
(defun make station(bname/acsp adoc atprom attag at_obj
blk_obj hgt lay line_obj sfar)
(vl load com)
(setq adoc(vla get activedocument
(vlax get acad对象)
)
)
(如果(和
(=(getvar“tilemode”)0)
(=(getvar“cvport”)1)
)
(setq acsp(vla get paperspace adoc))
(setq acsp(vla get modelspace adoc))
)
(vla startundomark adoc)
(如果(不是(tblsearch“block”bname))
(程序
(setq attag“NUMBER”;(strcase(getstring“\n属性标记:\n”))
atprom“编号”;(strcase(getstring T“\n属性提示:\n”))
hgt 1.0;(getreal“\n属性文本高度:\ n”)
)
(setq lay(getvar“clayer”))
(setvar“clayer”“0”)
(setvar“attreq”0)
(setq line_obj(vlax调用acsp“Addline”(0.0.0。)(列表0。(*hgt 12。)0.)))
(vla put color line_obj acyellow)
(setq blk_obj(vla add(vla get blocks adoc)(vlax-3d-point’(0.0.0))bname)
sfar(vlax安全阵列填充
(vlax make safearray vlax vbObject’(0.0))
(列表行_obj)
)
)
(vla copyobjects adoc sfar blk_obj)
;;;  RetVal=对象。AddAttribute(高度、模式、提示、插入点、标记、值)
(setq at_obj(vla addattribute blk_obj
hgt公司
acattributemodeverify公司
atprom公司
(vlax-3d-点'(-0.5 1.0)
阿塔格
"0+00")
)
;;;  (vla将对齐放在_obj acAlignmentBottomCenter)
;;;  (vla put textalignmentpoint
;;;    at_obj
;;;    (vlax-3d-point’(0.1.0)
;;;  )
(vla将旋转放置在_obj(/pi 2))
(vlax释放对象blk_obj)
)
(程序
(princ“\n\t>>块已存在!\n”)
(普林斯)
(如果(tblsearch“block”bname)
T
(程序
(警报“无法添加块”))
(setvar“attreq”1)
(setvar“clayer”铺层)
(vl catch all apply(函数(lambda()(vla delete line_obj)))
(vla regen adoc acactiveviewport)
(vla endundomark adoc)
(vlax释放对象acsp)
(vlax释放对象adoc)
(普林斯)
)
(或(vl load com))
(默认C:d10(/*错误*acsp adoc appd div错误)
len num olderror pl pt\u list
步骤util
)
(或adoc)
(setq adoc
(vla获取activedocument
(vlax get acad对象)
)
)
)
(或appd(setq appd(vla get application adoc)))
(或acsp
(setq acsp
(vla get block)
(vla get activelayout adoc)
)
)
)
(或util(setq util(vla get utility adoc)))
;;;  (命令“.u undo”“\u end”)
;;;  (命令“.u undo”“\u mark”)
(setq olderror*error*)
(setq*error*div error)
;;;  (setq bname(getstring T“\n站块名:\ n”))
;;;  (使站点bname)
(如果(不是(tblsearch“block”“Station”))
(将车站设为“车站”)
 
(vla getentity)
util
'pl
'点
“\n选择要开始测量的点附近的线:>>\n”
)
(如果pl
(程序
(setq步骤(getreal“\n用于定位的输入步骤:\ n”))
(setq opt(回答“垂直于pline旋转文本?”)
(如果(非步骤)(setq步骤10)
 
(setq len(vlax曲线getdistatparam
pl
(vlax曲线getendparam pl)
)
)
(如果(列出pt)
(vlax曲线getstartpoint pl)
)
(距离(vlax safearray->列表点)
(vlax曲线getendpoint pl)
)
)
(setq pt_list(divplus len step))
(setq pt_列表(div减去len步长))
)
(setq)
pt\U列表(vl删除if
(功能不)
(mapcar(功能(λ(x))
(vlax曲线getpointatdist pl x)
)
)
pt_列表
)
)
)
(setq num 0)
;;;      (setq num(getint“\n输入初始站号”)
(地图车
(功能
(λ(blk_obj的x/dr ang att_列表)
(程序
(setq ang(alg ang pl x)
ang公司
(条件((
(唐)
)
)
(setq blk_obj(vlax调用
acsp插入块x“Station”1 ang)
)
(setq att_列表(vlax invoke blk_obj’Getattributes))
(foreach at att_列表
(if(eq(vlax get at'Tagstring)“NUMBER”)
(程序
(vlax放在“Textstring”(如果(
(strcat“sta:0+”(rtos num 2)
(strcat“sta:”
(itoa(固定(/1200.1000))
"+"
(rtos(-num(*(fix(/num 1000))1000)) 2 2)
)
))
(如果(非opt)
(vlax置于“旋转0”)
(vla更新于)
)
)
)
(vla更新blk_obj)
(vlax释放对象blk_obj)
(setq num(+num step))
)
)
)
pt_列表
)
(if(not(vlax-object-released-p pl))
(vlax释放对象pl)
)
)
(princ“\n未选择任何内容,请重试”)
)
(vla zoomextents appd)
(vla regen adoc acactiveviewport)
(setq*错误*旧错误
div错误零
)
;;;  (命令“.u undo”“\u end”)
(普林斯)
)
(提示“\n”)
(提示“\n***键入D10以执行***\n”)
(普林斯)~'J'~
 
 
 
 
fizo当你修改它时,可以从属性txt中取(sta:)部分,并且在这段代码中,cahinage变为1+975,它再次从1+0.00开始,而不是2+0.00
你能更正密码并把它贴在朋友身上吗
谢谢和问候
 
白驹
babumonbaiju@yahoo.co.in
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 13:18:09 | 显示全部楼层
 
白驹,
我会重写它,但你需要删除你的
从这个帖子发帖
请按照论坛规则开始新的帖子
相反
 
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 06:08 , Processed in 0.597809 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表