heiliuxing 发表于 2010-8-1 20:58:00

[求助]如何提取选择的文档内容?

<p>在CAD编号的时候漏编了一个数,如何编程能从漏了的哪个数开始全部重新加1或减1。例如:我从1编号到1000,然后我编到100的位置的时候漏编了。当我编完了我才发觉,这时候本来100的位置是空的,101哪里变成了100,如何编程可以把100之后的全部数都增加1啊?</p>
<p><font face="Verdana">(defun C:ff()<br/>(setq&nbsp; a&nbsp; (car (entsel "\n请选择需要+1的编号:")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b (entget a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq c (cdr (assoc 0 b)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= c "MTEXT")</font></p>
<p><font face="Verdana">)</font></p>后面我就不知道该如何提取选择的文档内容
<p>并+1后修改输出</p>
<p>还请高手指点</p>

piao1887 发表于 2010-8-1 21:23:00

(DEFUN C:ff ()
(PRINT "请选择需要+1的编号:")
(SETQ ss (SSGET))
(IF (/= ss nil)
(PROGN
(SETQ sslen (SSLENGTH ss)
   n   0
)
(WHILE (< n sslen)
    (SETQ ent (SSNAME ss n)
   xdata (ENTGET ent)
   lb (CDR (ASSOC 0 xdata))
    )
    (IF (OR    (= lb "TEXT")
      (= LB "MTEXT")
   )
   (PROGN
   (SETQ oldzm (ASSOC 1 xdata))
   (SETQ txt (ATOF (CDR oldzm)))
   (SETQ txt (1+ txt))
   (SETQ txt1 (RTOS txt 2 0))
   (SETQ zm (CONS 1 txt1))
   (SETQ newent (SUBST zm oldzm xdata))
   (PRINT newent)
   (ENTMOD newent)
   )
    )
    (SETQ n (1+ n))
)
)
)
)

ZZXXQQ 发表于 2010-8-1 23:16:00



(defun C:ff ()
(if (setq a (car (entsel "\n请选择需要+1的编号:"))) (progn
(setq ent (entget a)
      c (cdr (assoc 0 ent)))
(if (wcmatch c "*TEXT") (progn
   (setq txt (atoi(cdr(assoc 1 ent)))
         txt (1+ txt)
         ent (subst (cons 1 (itoa txt)) (assoc 1 ent) ent))
   (entmod ent)
   (setq txt (1+ txt))
   (while (setq ss (ssget "X" (list (cons 0 c) (cons 1 (itoa txt)))))
    (setq ss (ssdel a ss)
          txt (1+ txt)
          a (ssname ss 0)
          ent (entget a)
          ent (subst (cons 1 (itoa txt)) (assoc 1 ent) ent))
    (entmod ent)
   )
))
))
(princ)
)

sy100 发表于 2010-8-2 17:19:00

<p>&nbsp; 请求版主帮忙完善下面的程序哦!</p>
<p>&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp; 请在保持原程序功能不变的情况下添加:“将程序计算结果自动复制(或保存)到剪贴板,按回车或空格键退出”的功能。谢谢!<br/></p><font color="#99cc00"></font>
<p><font face="Verdana" color="#0000ff"><strong><font color="#99cc00"></font></strong></font>&nbsp;</p>
<p><font face="Verdana" color="#000000">(defun c:jxjs (/ p1 p2 dx dy ox jd fx dcl_1)<br/>&nbsp; (command "undo" "be")<br/>&nbsp; (initget 1)<br/>&nbsp; (setq&nbsp;p1 (getpoint "\n请选择两圆弧交点: "))<br/>&nbsp; (initget 1)<br/>&nbsp; (setq&nbsp;p2 (getpoint "\n请选择圆心: "))<br/> (setq dx (- (car p2) (car p1))<br/>&nbsp;dy (- (cadr p2) (cadr p1))<br/>&nbsp;ox (sqrt (+ (* dx dx) (* dy dy)));;;两点间距离<br/>&nbsp;jd (/ (* (* 2 (- (/ pi 4) (atan ox 25)))180)pi);;;两结构面交线的倾角<br/>&nbsp;fx (- 90 (* (/ (angle p1 p2 )pi)180));;;两结构面交线倾向<br/>&nbsp; )<br/>&nbsp; (if (&lt; fx 0)<br/>&nbsp;&nbsp;&nbsp; (setq fx (+ 360 fx))<br/>&nbsp; )<br/>&nbsp; (setq jd (strcat&nbsp; (rtos fx 2 1)"°∠" (rtos jd 2 1)"°"))<br/>&nbsp; (princ "\n两结构面交线的产状: ")<br/>&nbsp; (princ jd)<br/>&nbsp; <br/>&nbsp; (setq dcl_1 (load_dialog "bg_jllx.dcl"))<br/>&nbsp; (if (not (new_dialog "dcl_bg_cpt" dcl_1))(exit))<br/>&nbsp; (set_tile "text3" jd)<br/>&nbsp; (action_tile "accept" " (done_dialog) ")<br/>&nbsp; (start_dialog)<br/>&nbsp; (unload_dialog dcl_1)</font></p>
<p><font face="Verdana" color="#000000">&nbsp; (command "undo" "e")<br/>&nbsp; (princ)<br/>)<br/></font></p>

heiliuxing 发表于 2010-8-2 18:22:00

非常谢谢哦

heiliuxing 发表于 2010-8-2 18:23:00

非常感,解决了我的大麻烦啊,不然我就要一个个的改了

wgg212 发表于 2011-7-18 11:52:47

多看一眼,进步一点

xiaxiang 发表于 2011-7-18 14:48:01

应该先对数字文本编组,以后处理漏掉的或多出来的就好办得多

T_T 发表于 2011-7-24 00:50:04

如果可以 如 G-1或 1-G那些都起作用就更加好,
页: [1]
查看完整版本: [求助]如何提取选择的文档内容?