lshpool 发表于 2012-8-1 16:11:22

谁能把下面代码加入天正的字

下面代码,不支持天正的文字,天正的文字是TCH_TEXT

;;;;;;文字内容匹配

(defun c:nrpp ()
(command "undo" "begin")
(setq ent1 (entsel "select text origin:"))
(princ "select text to modify:")
(setq        ent_ss (ssget '((-4 . "<OR")
                        (-4 . "<AND")
                        (0 . "TEXT")
                        (-4 . "AND>")
                        (-4 . "<AND")
                        (0 . "mtext")
                        (-4 . "AND>")
                        (-4 . "OR>")
                     )
             )
)
(setq        ent_list1 (entget (car ent1))
        n          0
        ent_len          (sslength ent_ss)
)
(while (< n ent_len)
    (setq ent_list2 (entget (ssname ent_ss n)))
    (setq ent_list2
           (subst (assoc '1 ent_list1)
                  (assoc '1 ent_list2)
                  ent_list2
           )
    )
    (entmod ent_list2)
    (setq n (1+ n))
)
(command "undo" "end")(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字方向匹配(jdpp)
(defun c:jdpp (/ smd gmd ent text_ang ent_list)
(setq smd (getvar "snapmode")
      gmd (getvar "gridmode")
)
(command "snapmode" "0")
(command "gridmode" "0")
(princ "\n选择源物体:")
(command "ucs" "ob" pause)
(setvar "UCSICON" 0)
(if (setq ent        (entsel "选择目标文字:")
      )
    (progn
      (setq text_ang (angle '(0 0 0) (getvar "UCSXDIR")))
      (while (> text_ang (/ pi 2)) (setq text_ang (- text_ang pi)))
      (setq ent_list (entget (car ent)))
      (setq ent_list (subst (cons 50 text_ang)
                          (assoc '50 ent_list)
                          ent_list
                     )
      )
      (entmod ent_list)
    )
)
(setvar "UCSICON" 1)
(command "ucs" "p")
(setvar "snapmode" smd)
(setvar "gridmode" gmd)
(princ)
)

yjr111 发表于 2012-8-1 20:12:33

(0 . "TEXT")换成(0 . "*TEXT")

print1985 发表于 2012-8-1 21:08:17

本帖最后由 print1985 于 2012-8-1 22:02 编辑

天正文字不能用修改组码的方式来改,否则cad会崩溃
只能用VL函数修改

lshpool 发表于 2012-8-1 21:14:08

yjr111 发表于 2012-8-1 20:12 static/image/common/back.gif
(0 . "TEXT")换成(0 . "*TEXT")

你的方法我试过,这样改后,可以在低版本cad上使用,但是高版本的例如2012版的cad,只要运行,就崩溃了,连保存的机会都没

lshpool 发表于 2012-8-2 21:44:52

print1985 发表于 2012-8-1 21:08 static/image/common/back.gif
天正文字不能用修改组码的方式来改,否则cad会崩溃
只能用VL函数修改

你的这个程序非常好,只可惜,我最想要的是角度匹配功能

lshpool 发表于 2012-8-2 22:30:02

本帖最后由 lshpool 于 2012-8-3 09:09 编辑

这个程序不支持天正文字,但对自定义坐标系的角度匹配也支持,如果你加上自动让文字和线段保持一定的距离就好了
这个程序,不仅仅支持文字,还支持块都其他图元
缺点1不能让文字自动和线保持一定距离2不能多选3不支持天正


;;;;文字方向匹配
(defun c:FX (/ smd gmd ent text_ang ent_list)
(setq      smd (getvar "snapmode")
      gmd (getvar "gridmode")
)
(command "snapmode" "0")
(command "gridmode" "0")
(princ "\n选择源物体:")
(command "ucs" "ob" pause)
(setvar "UCSICON" 0)
(if (setq ent      (entsel "选择目标文字:")
      )
    (progn
      (setq text_ang (angle '(0 0 0) (getvar "UCSXDIR")))
      (while (> text_ang (/ pi 2))
      (setq text_ang (- text_ang pi))
      )
      (setq ent_list (entget (car ent)))
      (setq ent_list (subst (cons 50 text_ang)
                            (assoc '50 ent_list)
                            ent_list
                     )
      )
      (entmod ent_list)
    )
)
(setvar "UCSICON" 1)
(command "ucs" "p")
(setvar "snapmode" smd)
(setvar "gridmode" gmd)
(princ)
)

bai2000 发表于 2014-10-3 10:43:18

页: [1]
查看完整版本: 谁能把下面代码加入天正的字