明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5465|回复: 11

旋轉但最終文字的角度不會因為旋轉而解變.

  [复制链接]
发表于 2003-10-28 14:42:00 | 显示全部楼层 |阅读模式
關於這個問題的程序我做的差不多了請大家來看看. 是這樣的我的程序在 ROTATE中意思是說在旋轉但最終文字的角度不會因為旋轉而解變.現在還有MTEXT的還沒有做成功. 大俠你們幫手攻下MTEXT的好嗎?

本帖子中包含更多资源

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

x
发表于 2023-2-10 09:14:36 | 显示全部楼层
非常不错的代码,谢谢楼主分享錒
发表于 2003-10-28 22:42:00 | 显示全部楼层
我是一个菜鸟,放到哪个文件里呀?
谢谢了
 楼主| 发表于 2003-10-29 10:03:00 | 显示全部楼层
用 APPLOAD 命令進行加載, 以后就能自動加載了.

本帖子中包含更多资源

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

x
发表于 2003-10-29 10:34:00 | 显示全部楼层


不行呀?是怎么回事没加载好吗?

本帖子中包含更多资源

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

x
发表于 2003-10-29 10:46:00 | 显示全部楼层
程序中运行前取出每个文字的角度,旋转后,修改这些文字的角度为原来的角度。
用entmod,组码50
 楼主| 发表于 2003-10-29 14:21:00 | 显示全部楼层
樓上應全面考慮,用戶在旋轉時可能選的是有很多個中文字. 那程序要增加一系列的變量來存下這麼多文字的角度等旋轉后再去更新那些文字. 思路我也這麼想過. 但我目前的功力還沒有達到啊.
发表于 2003-10-31 22:41:00 | 显示全部楼层
旋转?
这种程序不要用(command "rotate")
你要作的是计算文本基点在旋转后的坐标,把这个文本移动到那里就行了。
这不是功力问题了,是选择模型问题。
伪码:
pt0<---旋转中心
th<----旋转角度
for i=0 to 选择集元素数-1
pt1<---第i个元素基点
pt2<---pt1相对于pt0旋转th后
把第i个元素从pt1移动到pt2
next i
看看,多省事,什么多文本、多变量。
 楼主| 发表于 2003-11-10 08:45:00 | 显示全部楼层
樓上說了這麼多還是不如放個程序上來看看的好. 呵呵. 我真的覺得有些麻煩. 我想參考參考你的做法. 謝謝
发表于 2004-1-2 01:40:00 | 显示全部楼层
根据kaixinmao的思路,结合BDYCAD 的程序,编了一个,能解决独立的文字实体旋转后保持角度不变,但对块中的文字需用其他办法。
  1. (defun zd (jidian zdian jiaodu / dx mbzd) ;求文字旋转后的基点
  2.   (command "line" jidian zdian "")
  3.   (setq dx (entlast))
  4.   (command "_rotate" dx "" jidian jiaodu)
  5.   (setq end (entget dx))
  6.   (setq mbzd (cdr (assoc '11 end)))
  7.   (command "_erase" dx "")
  8.   (setq mbzd mbzd)
  9. )                                        ;求文字旋转后的基点

  10. (defun c:test (/ ss pt rang textss n sslen wt text lentextss jd mbd)
  11.   (setq ss (ssget))
  12.   (setq pt (getpoint "\n选择基点:"))
  13.   (setq rang (getreal "\n输入旋转角度:"))
  14.   (setq textss (ssadd)) ;构造文字文字集合以及非文字实体集合
  15.   (setq n 0)
  16.   (if ss
  17.     (progn
  18.       (setq sslen (sslength ss))
  19.       (while (< n sslen)
  20.         (setq wt (ssname ss n))
  21.         (setq text (cdr (assoc 0 (entget wt))))
  22.         (if (or        (= text "TEXT")
  23.                 (= text "MTEXT")
  24.             )
  25.           (progn
  26.             (ssadd wt textss)
  27.             (ssdel wt ss)
  28.             (setq sslen (- sslen 1))
  29.           )
  30.           (setq n (1+ n))
  31.         )
  32.       ) ;构造文字文字集合以及非文字实体集合


  33.       (command "rotate" ss "" pt rang) ;旋转非文字实体

  34.       (setq n 0);旋转文字实体
  35.       (setq lentextss (sslength textss))
  36.       (while (< n lentextss)
  37.         (setq wt (ssname textss n))
  38.         (setq jd (cdr (assoc 10 (entget wt))))
  39.         (setq mbd (zd pt jd rang))
  40.         (command "move" wt "" jd mbd)
  41.         (setq n (1+ n))

  42.       );旋转文字实体
  43.     )
  44.   )
  45. )


发表于 2004-1-2 04:43:00 | 显示全部楼层
何须这么麻烦!先写个初级版本

;|旋转选集,保留文字角度v1.0-------------无痕.2004.1.1
  v0.1 未考虑坐标系转换.对"TEXT" "MTEXT"有效.
|;

  1. (defun c:rt-txt ()
  2.   (vl-cmdf ".undo" "be")
  3.   (princ "\n 选择实体:")
  4.   (setq ss (ssget)
  5.              pt (getpoint "\n基点:")
  6.              ang (getangle "\n旋转角度:")
  7.              i 0)
  8.   (repeat (sslength ss)
  9.     (setq e (ssname ss i)
  10.              i (1+ i)
  11.              el (entget e)
  12.              en (cdr(assoc 0 el))
  13.              txtang (if (member en '("TEXT" "MTEXT")) (assoc 50 el) nil))
  14.     (vl-cmdf ".rotate" e "" pt (angtos ang 0 4))
  15.     (if txtang
  16.       (progn (setq el2 (entget e))
  17.                 (entmod (subst txtang (assoc 50 el2) el2))
  18.   )))
  19.   (vl-cmdf ".undo" "e")(princ)
  20. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 06:38 , Processed in 0.178806 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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