明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3851|回复: 15

[求助]ZZXXQQ能不能帮忙编个程序?拜托了!!

  [复制链接]
发表于 2007-12-7 20:08:00 | 显示全部楼层 |阅读模式

时间紧迫,ZZXXQQ能不能帮忙编个程序:

要求能一次框选多个带有属性的块,并把块中的属性高度改为同一高度,颜色改为同一种颜色!?

我也能写写,可工程较紧,最近经常加班!想自己写,可技术不太熟练,每次写一个LISP都要调试好几次!麻烦你了!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-12-9 07:50:00 | 显示全部楼层

只给要求不知属性是什么结构如何写?再说我也总加班呀!

 楼主| 发表于 2007-12-9 09:05:00 | 显示全部楼层
本帖最后由 作者 于 2007-12-9 9:06:32 编辑

下面是我自已写的"匹配块属性内容"的一个LISP,可是每次运行只能匹配一个目标的属性!如果ZZXXZQQ您能够帮我修改一下(效果是:选择源属性块后,再一次框选多个带有属性的块,结果可以把块中的属性内容改为同一内容!),那我从您的修改那里一定可以得到启示,相信我自己也可以写出"匹配块属性高度各颜色"的LISP.
下面我的这个LISP,是用来匹配带有标高的属性块!我这个贴子的原先求助是想:修改多个"标高"的属性块的
高度各颜色!
  1. (defun c:at ( / att1 att2 en_data en_data2 enrr1 enrr2 ent1 ent2)
  2.    (setq ent1 (nentsel "\n选择源属性块的"属性":"))
  3.    (setq en_data (entget (setq enrr1 (car ent1))))
  4.    (setq att1 (assoc 1 en_data))
  5.    (setq ent2 (nentsel "\n选择匹配目标的"属性":"))
  6.    (setq en_data2 (entget (setq enrr2 (car ent2))))
  7.    (setq att2 (assoc 1 en_data2))
  8.    (setq en_data2 (subst att1 att2 en_data2))
  9.    (entmod en_data2)
  10.    (entupd enrr2)
  11. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-12-9 09:16:00 | 显示全部楼层
  1. (defun c:tt ()
  2.   (vl-catch-all-apply
  3.     '(lambda (/ col h)
  4.        (if (and    (ssget '((0 . "insert") (66 . 1)))
  5.         (setq col (acad_colordlg 1))
  6.         (setq h (getdist "\nHeight: "))
  7.        )
  8.      (vlax-for obj
  9.            (vla-get-activeselectionset
  10.              (vla-get-activedocument (vlax-get-acad-object))
  11.            )
  12.        (foreach x (vlax-invoke obj 'getattributes)
  13.          (vla-put-color x col)
  14.          (vla-put-height x h)
  15.        )
  16.      )
  17.        )
  18.      )
  19.   )
  20.   (princ)
  21. )
 楼主| 发表于 2007-12-9 10:35:00 | 显示全部楼层
本帖最后由 作者 于 2007-12-9 10:54:44 编辑

谢谢ivde!
我修改了一下,加入了旋转角度的功能,例如输入了45,完成后,我再双击属性块,可看到的"旋转"却是58.31007808870452,麻烦ivde解决一下!!
  1. (defun c:art ( / col h obj r x)
  2. (vl-catch-all-apply
  3.    '(lambda (/ col h)
  4.        (if (and    (ssget '((0 . "insert") (66 . 1)))
  5.        (setq col (acad_colordlg 1))
  6.   ; (setq col (getdist "\ncolor: "))
  7.         (setq h (getdist "\nHeight: "))
  8.         (setq r (getdist "\Rotation: "))
  9.       )
  10.     (vlax-for obj
  11.           (vla-get-activeselectionset
  12.             (vla-get-activedocument (vlax-get-acad-object))
  13.           )
  14.       (foreach x (vlax-invoke obj 'getattributes)
  15.         (vla-put-color x col)
  16.         (vla-put-height x h)
  17.         (vla-put-Rotation x r)
  18.       )
  19.     )
  20.       )
  21.     )
  22. )
  23. (princ)
  24. )
发表于 2007-12-9 18:23:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2007-12-9 19:20:00 | 显示全部楼层
谢谢ZZXXQQ,也谢谢ivde!让我见识到vla函数威力,短短的几行就把问题给解决了!
发表于 2008-4-7 18:58:00 | 显示全部楼层
谢谢

发表于 2008-4-27 11:20:00 | 显示全部楼层
不错
发表于 2008-4-27 18:34:00 | 显示全部楼层

ZZXXQQ

高高手来的

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

本版积分规则

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

GMT+8, 2025-5-31 01:33 , Processed in 0.280078 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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