明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1798|回复: 4

改变文字图元表就是不正确

[复制链接]
发表于 2012-1-11 11:46 | 显示全部楼层 |阅读模式
本帖最后由 gingko_sf 于 2012-1-11 12:28 编辑

  我想将文字与直线平行,并放置在直线中点上方0.45处,编写了如下程序,可运行后文字位置始终不在应有位置,且常常偏到原点去了,角度倒是正确,在调试时发现图元数据表中第10项位置坐标也是正确的,可最终结果就是不对,肯请高人指点。

(defun c:ta ( / stext sline lname L lineentinfo start End  p3  p4 a1 tname  oldangle newangle oldcord newcord )
  (setq L 0.45 )         ;字体偏移距离L
   
  ;(command "ucs" "w")
(setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (princ  "\n请选择文字:")
  (setq stext (ssget  '((0 . "TEXT")) ))
      (while (or (= stext nil) (> (sslength stext) 1 ))
                     
                       (princ "\n未选中文字或选中数目大于1,请重新选择:")      
                         (setq stext (ssget  '((0 . "TEXT")) ))   
      )

  (princ  "\n请选择直线:")
  (setq sline (ssget  '((0 . "LINE")) ))
           (while (or (= sline nil) (> (sslength sline) 1 ))
                     
                       (princ "\n未选中直线或选中数目大于1,请重新选择:")      
                        (setq sline (ssget  '((0 . "LINE")) ))  
          )


           (setq lname (ssname sline 0))
           (setq lineentinfo (entget lname))
           (setq start (cdr (assoc 10 lineentinfo)))   ;line起点坐标
           (setq  End  (cdr (assoc 11 lineentinfo)))   ;line终点坐标

  
     (setq p3 (list (/ (+ (car start)  (car End) ) 2)  (/ (+ (cadr start)  (cadr End) ) 2)  0.0  )   )     ;计算直线中点位置坐标



      (setq a1 (angle start End))        ;求直线角度
      (if (and  (> a1 (* pi 0.5))(< a1 (* pi 1.5)))   (setq a1 (angle End start))  )

  (setq p4 (polar p3 (+ a1 (/ pi 2)) L))                                ;计算直线上面的文字放置位置   

         
(setq tname (ssname stext 0))                                ;获取文字图元名
(setq textinfo (entget tname))                                ; 获取文字图元表
(setq oldangle (assoc 50 textinfo))                          ; 搜索旧角度项
(setq newangle (cons 50  a1))                                 ;新角度项
(setq textinfo (subst newangle oldangle textinfo))                  ;替换



  (setq oldcord (assoc 10 textinfo))        ;搜索旧坐标
  (setq newcord (cons 10  p4))                                 ;新坐标
  (setq textinfo (subst newcord oldcord textinfo))                  ;替换
  


  (setq oldali (assoc 72 textinfo))        ;搜索旧对齐方式
  (setq newali (cons 72  1))                                 ;新对齐方式
  (setq textinfo (subst newali oldali textinfo))                  ;替换
  (entmod textinfo)                                                   ;



  (setvar "osmode" 1)
  (setvar "cmdecho" 1)
   (princ)
  

本帖子中包含更多资源

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

x
发表于 2012-1-11 12:15 | 显示全部楼层
...在调试时发现图元...
您忘了得附上该作用文件(*.Dwg)
 楼主| 发表于 2012-1-11 12:29 | 显示全部楼层
作用文件已经上传了。
发表于 2012-1-11 13:22 | 显示全部楼层
如果组码72不为零时,第一对齐点(组码10)无意义,应采用第二对齐点(组码11)
 楼主| 发表于 2012-1-11 14:02 | 显示全部楼层
非常感谢vormittag的帮助,困扰我的问题得以解决。再次感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 13:45 , Processed in 0.211054 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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