香田里浪人 发表于 2013-12-10 18:33:11

(defun c:zm1 (/ mycopy mymove SstoEs sign ss p1 p2)
(defun SstoEs(ss / a en lst)
    (if ss(progn(setq a -1)(while(setq en(ssname ss(setq a(1+ a))))(setq lst (cons en lst)))))
    lst)
(defun sign (nn) (if (< nn 0) -1 (if (> nn 0) 1 0)))
(defun mycopy(ss p p1 / ty q q1 s1 s2);;参照by-xyp1964的xyp-ScaleEntity
    (setq ty(type ss)i -1
    s2(ssadd)
    q1(vlax-3D-point(trans p1 0 0))
    q(vlax-3D-point(trans p 0 0)))
    (cond((= ty 'ENAME)(vla-move(vla-copy(vlax-ename->vla-object ss))q q1)(setq s2(ssadd(entlast)s2)))
   ((= ty 'PICKSET)
    (setq i -1)
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (mycopy s1 p p1)(setq s2(ssadd(entlast)s2))))
   ((= ty 'LIST)(foreach x ss(mycopy x p p1)(setq s2(ssadd(entlast)s2))))
   )s2)
(defun mymove(ss p p1 / ty q q1 s1);;参照by-xyp1964的xyp-ScaleEntity
    (setq ty(type ss)i -1
    q1(vlax-3D-point(trans p1 0 0))
    q(vlax-3D-point(trans p 0 0)))
    (cond((= ty 'ENAME)(vla-move(vlax-ename->vla-object ss)q q1))
   ((= ty 'PICKSET)
    (setq i -1)
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (mymove s1 p p1)))
   ((= ty 'LIST)(foreach x ss(mymove x p p1))))
    )
(setq ind (getint "\n输入增减量<1> :")
      ind (sign ind))
(prompt"\n选择要进行递增复制的文字、属性")
(setq ss(SstoEs(ssget'((0 . "*TEXT,ATTDEF")))))
(setq p1(getpoint"复制基点"))
(setq p2(getpoint p1"复制到"))
(mycopy (setq ss(vl-remove'nil(mapcar'(lambda(x)(setq e(entget x))
      (if(assoc 1 e)
      (progn(setq tx(vl-string->list (cdr(assoc 1 e))))
    (if(OR(<(IF(> ind 0)65 66)(last tx)(IF(> ind 0)89 90))
          (<(IF(> ind 0)97 98)(last tx)(IF(> ind 0)121 122)))x))))ss)))p1 p1)
(mymove ss p1 p2)
(mapcar'(lambda(x)(entmod(setq e(entget x)
      tx(vl-string->list (cdr(assoc 1 e)))
      e(subst(cons 1 (vl-list->string(reverse(cons((IF(> ind 0)1+ 1-)(last tx))(cdr(reverse tx))))))(assoc 1 e)e)))
      nil)ss)
(princ)
)
;;这个是字母递增复制,貌似ABCD直接写入也行

偏爱云~小吴 发表于 2013-12-10 21:55:52

我需要的是框选后字母递增,圈和字母都复制后字母递增的,

偏爱云~小吴 发表于 2013-12-10 22:00:44

香田里浪人 发表于 2013-12-10 18:33 static/image/common/back.gif
(defun c:zm1 (/ mycopy mymove SstoEs sign ss p1 p2)
(defun SstoEs(ss / a en lst)
    (if ss(prog ...

这段是我发的吧,我现在就是要解决框选的问题,带圈复制后字母递增

香田里浪人 发表于 2013-12-11 12:41:55

偏爱云~小吴 发表于 2013-12-10 22:00 static/image/common/back.gif
这段是我发的吧,我现在就是要解决框选的问题,带圈复制后字母递增

是的,我只是转载,复制后粘贴,忘了说明,这是我的错,向您道歉,敬请您谅解!
页: 1 2 [3]
查看完整版本: 字母递增复制