明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4519|回复: 20

[求助]如何让entmake-text和command-text在UCS下角度一样???

  [复制链接]
发表于 2009-11-13 12:16:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-11-13 14:48:45 编辑

如何让entmake-text和command-text在UCS下角度一样???

(defun ENTMAKE-TEXT (PT HEIGHT ANGLE_)
  (if (entmake (list (cons 0 "TEXT")
       (cons 100 "AcDbEntity")
       (cons 100 "AcDbText")
       (cons 10 (trans PT 1 0))
       (cons 40 HEIGHT)
       (cons 1 "TEXT1")
       (cons 50 ANGLE_)
        )
      )
    (entlast)
  )
)

(defun C:TT1 ()
  (ENTMAKE-TEXT '(0 0 0) 10 0)
)

(defun COMMAND-TEXT (PT HEIGHT ANGLE_)
  (command "._TEXT" PT HEIGHT ANGLE_ "TEXT2")
)

(defun C:TT2 ()
  (COMMAND-TEXT '(0 0 0) 10 0)
)

在世界坐标系下面:TT1和TT2生成的文字位置及角度是一样的。

在UCS坐标系下面:TT1和TT2生成的文字位置是一样的,但是角度却不一样。

我试过:(TRANSANGLE  ANGLE_)但是返回的角度仍然不一样。

(defun TRANSANGLE (ANG)
  (setq UCSANG (angle (trans '(0.0 0.0 0.0) 1 0)
        (trans '(1.0 0.0 0.0) 1 0)
        )
  )
  (- ANG UCSANG)
)

请指教,如何修正。

以为解决了,好像没有。

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-11-13 13:11:00 | 显示全部楼层

试一下这个看怎么样

(defun TRANSANGLE (ANG)

  (angle (trans '(0.0 0.0 0.0) 1 0) (trans (polar '(0. 0. 0.) ang 1.) 1 0))
 )

 楼主| 发表于 2009-11-13 13:17:00 | 显示全部楼层
liu_kunlun发表于2009-11-13 13:11:00试一下这个看怎么样(defun TRANSANGLE (ANG)  (angle (trans '(0.0 0.0 0.0) 1 0) (trans (polar '(0. 0. 0.) ang 1.) 1 0)) )

快接近了,但是不知道哪里出错,生成的不一样。

我想是不是组码210的问题,210组码不是很了解。

 楼主| 发表于 2009-11-13 13:28:00 | 显示全部楼层

或许哪位看的懂这篇在讲什么,翻译一下。

http://www.theswamp.org/index.php?topic=13526.0;all

答案就在这里面。

 楼主| 发表于 2009-11-13 13:43:00 | 显示全部楼层
本帖最后由 作者 于 2009-11-13 14:49:40 编辑

以为解决了,但是重新测试了一下又不行了。。。

FROM http://www.theswamp.org/index.php?topic=13526.0;all


(setq ucszdir (trans '(0 0 1) 1 0 T))

ucszdir can be used as well as ent or (cdr (assoc 210 (entget ent))) in the above trans expressions.
In a list to be used with entmake :

(cons 210 ucszdir)

ucszdir is also the Normal property to be used in (vla-put-Normal ...) expressions.

发表于 2009-11-13 13:49:00 | 显示全部楼层
本帖最后由 作者 于 2009-11-13 14:36:47 编辑

这个问题我是没有搞懂,在DXF帮助中,指明10组为OCS,在实体未生成之前,没法用trans将已知的一个WCS或UCS坐标转换到OCS,这样似乎entmake就没法用了。

发表于 2009-11-14 08:03:00 | 显示全部楼层
carrot1983发表于2009-11-13 12:16:00如何让entmake-text和command-text在UCS下角度一样???(defun ENTMAKE-TEXT (PT HEIGHT ANGLE_)  (if (entmake (list (cons 0 \"TEXT\")       (cons 100

ANGLE_要先轉為(cons 50 (/ (* pi ANGLE_) 180))

方法有2種

1.如你說的改DXF碼,當然要用到TRANS

2.用矩陣把物件轉到UCS

发表于 2009-11-15 20:40:00 | 显示全部楼层
一般来说,ocs不就是wcs么?
发表于 2009-11-16 07:45:00 | 显示全部楼层

一般来说,ocs就是wcs!

但樓主的問題是使用entmake / command 的不同處,command是直接建在ucs,entmake要自已轉到ucs

发表于 2009-11-16 22:39:00 | 显示全部楼层
(defun ENTMAKE-TEXT (PT HEIGHT ANGLE_)
  (if (entmake (list (cons 0 "TEXT")
       (cons 100 "AcDbEntity")
       (cons 100 "AcDbText")
       (cons 10 (trans PT 1 0))
       (cons 40 HEIGHT)
       (cons 1 "TEXT1")
       (cons 50 (+ (/ (* pi ANGLE_) 180) (angle  (getvar "ucsorg")(getvar "ucsxdir"))))
        )
      )
    (entlast)
  )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-30 04:13 , Processed in 0.249819 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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