明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1515|回复: 2

求修改角度匹配的工具

[复制链接]
发表于 2012-12-24 18:57:17 | 显示全部楼层 |阅读模式
本帖最后由 lshpool 于 2012-12-25 18:30 编辑

下面的这个工具,对自定义坐标系下的文字旋转,旋转后,有时候文字是倒栽头的,求修改,另外这个程序,在高版本cad中不支持天正的文字求救

或者哪个高手,在 (entmod ent_list)后面加上一段程序,可以实现按下空格键,文字旋转180度,其他键不旋转


(defun c:JDPP (/ smd gmd ent text_ang ent_list)
(command "undo" "begin")
  (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)
(command "undo" "end")(princ)
)

 楼主| 发表于 2013-1-2 12:53:30 | 显示全部楼层
本帖最后由 lshpool 于 2013-1-2 13:23 编辑



(defun c:JDPP (/ smd gmd ent text_ang ent_list)
(command "undo" "begin")
  (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)
    )
  )
  
  (setq p1 (getvar "LASTPOINT"))
(PRINC "\n 空格键旋转180度:")
(SETQ KeyList '(32))
(WHILE (and(/= (SETQ n (CADR (GRREAD))) 13)
  (MEMBER n KeyList))
     (COND
    ((= n 32)(COMMAND "ROTATE" ent "" p1 180)(PRINC "\r< 空格 转180度,其他键退出>"))
    )
);WHILE
    (setvar "UCSICON" 1)
  (command "ucs" "p")
  (setvar "snapmode" smd)
  (setvar "gridmode" gmd)
(command "undo" "end")(princ)
)
 楼主| 发表于 2013-1-2 13:21:20 | 显示全部楼层
在cad高版本中,2010以上版本中,程序执行到   (entmod ent_list)
系统就崩溃了,不知道什么原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 03:41 , Processed in 0.165630 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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