明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5531|回复: 19

[求助]文字和直线平行

  [复制链接]
发表于 2004-5-30 00:37:00 | 显示全部楼层 |阅读模式
我经常要在直线上写字,但是每次写的字都无法和直线平行,还要先写完后,再旋转到与直线平行。请编写一个程序,写出的字和直线平行??
发表于 2004-5-30 12:42:00 | 显示全部楼层
转ucs
 楼主| 发表于 2004-5-30 18:45:00 | 显示全部楼层
能不能用编程实现?如果,有很多线都不平行,那不是要旋转n次usc?
发表于 2004-5-31 20:57:00 | 显示全部楼层
呵呵,我也有这样的问题 ,在天正里面有命令可以平行线写文字,但已经写好的文字,不知道怎么编辑?
 楼主| 发表于 2004-6-1 16:08:00 | 显示全部楼层
其实在理正中也能实现,但是在cad中如何实现才好??
发表于 2004-6-4 21:05:00 | 显示全部楼层
(defun c:ltext ()
(setq en (car (entsel "\n选取线:")))
(setq endata (entget en))
(setq pt1 (cdr (assoc 10 endata)))
(setq pt2 (cdr (assoc 11 endata)))
(setq ang1 (/ (* (angle pt1 pt2) 180) pi))
(setq str (getstring "\n输入字符:"))
(setq strh (getreal "\n输入字高:"))
(setq pt (getpoint "\n指定位置:"))
(command "text" pt strh ang1 str)
) 这样可以。
发表于 2004-6-10 19:13:00 | 显示全部楼层
如果是pline呢?
发表于 2004-6-11 20:02:00 | 显示全部楼层
ljcgq发表于2004-6-10 19:13:00如果是pline呢?
参见如下程序: (defun c:lsp48()
(setq en (entsel "select a pline:"))
(setq endata (entget (car en)))
(setq n 0)
(setq point 0)
(setq i (length endata))
(princ i)
(repeat (length endata)
(setq pp (nth n endata))
(setq key (car pp))
(if (= key 10)
(progn
(setq point (list (cadr pp) (caddr pp) point))
(princ point)
)
)
(setq n (1+ n))
)
(setq px2 (car point))
(setq py2 (cadr point))
(setq point (caddr point))
(princ "\npt1的坐标:x=")(princ px2)(princ "y=")(princ py2)
(setq px1 (car point))
(setq py1 (cadr point))
(princ "\npt2的坐标:x=")(princ px1)(princ "y=")(princ py1)
(setq ang_l (atan (- py2 py1) (- px2 px1)))
(setq ang_l1 (* ang_l (/ 180 pi)))
(princ "\n直线与x轴的夹角=")(princ ang_l1)
(setq en1 (entsel "选择旋转文字:"))
(setq en_date (entget (car en1)))
(setq old_angle (assoc 50 en_date))
(setq oangle (* (cdr old_angle) (/ 180 pi)))
(princ "\n原文字角度=")(princ oangle)
(setq ang_l (cons 50 ang_l))
(setq en_date (subst ang_l old_angle en_date))
(entmod en_date)
)

(prompt ".........c:lsp48...................")
(prin1)
发表于 2004-6-18 11:37:00 | 显示全部楼层
;;;将文本按指定的方向的对齐。
(defun c:fitdir( / entlst data pt1 pt2)
(while (and (setq entlst (entsel "\n请选择要调方向的文本:"))
(setq data (entget (car entlst)))
(= "TEXT" (cdr (assoc 0 data)))
(setq pt1 (getpoint "\n对齐方向第一点:"))
(setq pt2 (getpoint "\n对齐方向第二点:"))
)
(entmod (subst (cons 50 (angle pt1 pt2)) (assoc 50 data) data))
)
(princ)
)
 楼主| 发表于 2004-6-26 12:52:00 | 显示全部楼层
按照你的程序,在输入文字的时候,不能有空格符,如果文字有空格的话,就进入下一个命令了!望改进!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 07:21 , Processed in 0.163701 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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