明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2037|回复: 6

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

[复制链接]
发表于 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)
)
发表于 2012-8-1 20:12:33 | 显示全部楼层
(0 . "TEXT")换成(0 . "*TEXT")
发表于 2012-8-1 21:08:17 | 显示全部楼层
本帖最后由 print1985 于 2012-8-1 22:02 编辑

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

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-8-1 21:14:08 | 显示全部楼层
yjr111 发表于 2012-8-1 20:12
(0 . "TEXT")换成(0 . "*TEXT")

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

点评

估计是天正实体的问题  发表于 2012-8-1 21:31
 楼主| 发表于 2012-8-2 21:44:52 | 显示全部楼层
print1985 发表于 2012-8-1 21:08
天正文字不能用修改组码的方式来改,否则cad会崩溃
只能用VL函数修改

你的这个程序非常好,只可惜,我最想要的是角度匹配功能
 楼主| 发表于 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)
)
发表于 2014-10-3 10:43:18 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 02:05 , Processed in 0.184504 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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