jaminth 发表于 2007-12-7 20:08:00

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

<p>时间紧迫,ZZXXQQ能不能帮忙编个程序:</p><p>要求能一次框选多个带有属性的块,并把块中的属性高度改为同一高度,颜色改为同一种颜色!?</p><p>我也能写写,可工程较紧,最近经常加班!想自己写,可技术不太熟练,每次写一个LISP都要调试好几次!麻烦你了!</p>

ZZXXQQ 发表于 2007-12-9 07:50:00

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

jaminth 发表于 2007-12-9 09:05:00

本帖最后由 作者 于 2007-12-9 9:06:32 编辑

下面是我自已写的"匹配块属性内容"的一个LISP,可是每次运行只能匹配一个目标的属性!如果ZZXXZQQ您能够帮我修改一下(效果是:选择源属性块后,再一次框选多个带有属性的块,结果可以把块中的属性内容改为同一内容!),那我从您的修改那里一定可以得到启示,相信我自己也可以写出"匹配块属性高度各颜色"的LISP.
下面我的这个LISP,是用来匹配带有标高的属性块!我这个贴子的原先求助是想:修改多个"标高"的属性块的
高度各颜色!

(defun c:at ( / att1 att2 en_data en_data2 enrr1 enrr2 ent1 ent2)
   (setq ent1 (nentsel "\n选择源属性块的\"属性\":"))
   (setq en_data (entget (setq enrr1 (car ent1))))
   (setq att1 (assoc 1 en_data))
   (setq ent2 (nentsel "\n选择匹配目标的\"属性\":"))
   (setq en_data2 (entget (setq enrr2 (car ent2))))
   (setq att2 (assoc 1 en_data2))
   (setq en_data2 (subst att1 att2 en_data2))
   (entmod en_data2)
   (entupd enrr2)
)

ivde 发表于 2007-12-9 09:16:00

(defun c:tt ()
  (vl-catch-all-apply
    '(lambda (/ col h)
       (if (and    (ssget '((0 . "insert") (66 . 1)))
        (setq col (acad_colordlg 1))
        (setq h (getdist "\nHeight: "))
       )
     (vlax-for obj
           (vla-get-activeselectionset
             (vla-get-activedocument (vlax-get-acad-object))
           )
       (foreach x (vlax-invoke obj 'getattributes)
         (vla-put-color x col)
         (vla-put-height x h)
       )
     )
       )
     )
  )
  (princ)
)

jaminth 发表于 2007-12-9 10:35:00

本帖最后由 作者 于 2007-12-9 10:54:44 编辑

谢谢ivde!
我修改了一下,加入了旋转角度的功能,例如输入了45,完成后,我再双击属性块,可看到的"旋转"却是58.31007808870452,麻烦ivde解决一下!!(defun c:art ( / col h obj r x)
(vl-catch-all-apply
   '(lambda (/ col h)
       (if (and    (ssget '((0 . "insert") (66 . 1)))
       (setq col (acad_colordlg 1))
; (setq col (getdist "\ncolor: "))
      (setq h (getdist "\nHeight: "))
      (setq r (getdist "\Rotation: "))
      )
    (vlax-for obj
          (vla-get-activeselectionset
            (vla-get-activedocument (vlax-get-acad-object))
          )
      (foreach x (vlax-invoke obj 'getattributes)
      (vla-put-color x col)
      (vla-put-height x h)
      (vla-put-Rotation x r)
      )
    )
      )
    )
)
(princ)
)

ZZXXQQ 发表于 2007-12-9 18:23:00



(defun c:at ()
(if (and (setq ent1 (entsel "\n选择源属性块的\"属性\":"))
          (setq en_data (entget (car ent1)))
    (= (cdr (assoc 66 en_data)) 1)
) (progn
(setq en_data (entget(entnext(cdr(assoc -1 en_data)))))
(setq txth (assoc 40 en_data))
(setq col (if (assoc 62 en_data) (assoc 62 en_data) '(62 . 256)))
(setq att1 (assoc 1 en_data))
(if (and (princ "\n选择匹配目标的\"属性\":")
         (setq ss (ssget '((0 . "INSERT") (66 . 1))))) (progn
   (setq i -1)
   (repeat (sslength ss)
    (setq ent2 (entget(entnext(cdr(assoc -1 (entget(setq enrr2 (ssname ss (setq i (1+ i))))))))))
;;    (setq ent2 (subst att1 (assoc 1 ent2) ent2))
(setq ent2 (subst txth (assoc 40 ent2) ent2))
(if (assoc 62 ent2)
(setq ent2 (subst col (assoc 62 ent2) ent2))
(setq ent2 (append ent2 (list col)))
)
    (entmod ent2)
    (entupd enrr2)
   )
))
))
(princ)
)

jaminth 发表于 2007-12-9 19:20:00

<strong><font face="Verdana" color="#da2549">谢谢ZZXXQQ,也<font color="#61b713">谢谢ivde!让我见识到vla函数威力,短短的几行就把问题给解决了!</font></font></strong>

yxtop 发表于 2008-4-7 18:58:00

<strong><font face="Verdana" color="#da2549">谢谢</font></strong><p></p>

头大无恼 发表于 2008-4-27 11:20:00

不错

董堃 发表于 2008-4-27 18:34:00

<p><strong><font face="Verdana" color="#da2549">ZZXXQQ</font></strong></p><p><strong><font face="Verdana" color="#da2549">高高手来的</font></strong></p>
页: [1] 2
查看完整版本: [求助]ZZXXQQ能不能帮忙编个程序?拜托了!!