wedg 发表于 2004-5-30 00:37:00

[求助]文字和直线平行

我经常要在直线上写字,但是每次写的字都无法和直线平行,还要先写完后,再旋转到与直线平行。请编写一个程序,写出的字和直线平行??

无痕 发表于 2004-5-30 12:42:00

转ucs

wedg 发表于 2004-5-30 18:45:00

能不能用编程实现?如果,有很多线都不平行,那不是要旋转n次usc?

bios 发表于 2004-5-31 20:57:00

呵呵,我也有这样的问题 ,在天正里面有命令可以平行线写文字,但已经写好的文字,不知道怎么编辑?

wedg 发表于 2004-6-1 16:08:00

其实在理正中也能实现,但是在cad中如何实现才好??

小妹丁 发表于 2004-6-4 21:05:00

(defun c:ltext ()<BR>       (setq en (car (entsel "\n选取线:")))<BR>       (setq endata (entget en))<BR>       (setq pt1 (cdr (assoc 10 endata)))<BR>       (setq pt2 (cdr (assoc 11 endata)))<BR>       (setq ang1 (/ (* (angle pt1 pt2) 180) pi))<BR>       (setq str (getstring "\n输入字符:"))<BR>       (setq strh (getreal "\n输入字高:"))<BR>        (setq pt (getpoint "\n指定位置:"))<BR>       (command "text" pt strh ang1 str)       <BR>)


这样可以。

ljcgq 发表于 2004-6-10 19:13:00

如果是pline呢?

小妹丁 发表于 2004-6-11 20:02:00

ljcgq发表于2004-6-10 19:13:00static/image/common/back.gif如果是pline呢?


参见如下程序:


(defun c:lsp48()<BR>       (setq en (entsel "select a pline:"))<BR>       (setq endata (entget (car en)))<BR>       (setq n 0)<BR>       (setq point 0)<BR>       (setq i (length endata))<BR>       (princ i)<BR>       (repeat (length endata)<BR>                       (setq pp (nth n endata))<BR>                       (setq key (car pp))<BR>                       (if (= key 10)<BR>                                       (progn<BR>                                       (setq point (list (cadr pp) (caddr pp) point))<BR>                                       (princ point)<BR>                                       )<BR>                                       )<BR>                       (setq n (1+ n))<BR>       )<BR>       (setq px2 (car point))<BR>       (setq py2 (cadr point))<BR>       (setq point (caddr point))<BR>       (princ "\npt1的坐标:x=")(princ px2)(princ "y=")(princ py2) <BR>       (setq px1 (car point))<BR>       (setq py1 (cadr point))<BR>       (princ "\npt2的坐标:x=")(princ px1)(princ "y=")(princ py1)<BR>       (setq ang_l (atan       (- py2 py1)       (- px2 px1)))<BR>       (setq ang_l1 (* ang_l (/ 180 pi)))<BR>       (princ "\n直线与x轴的夹角=")(princ ang_l1)<BR>       (setq en1 (entsel "选择旋转文字:"))<BR>       (setq en_date (entget (car en1)))<BR>       (setq old_angle (assoc 50 en_date))<BR>       (setq oangle (* (cdr old_angle) (/ 180 pi)))<BR>       (princ "\n原文字角度=")(princ oangle)<BR>       (setq ang_l (cons 50 ang_l))<BR>       (setq en_date (subst ang_l old_angle en_date))<BR>       (entmod en_date)<BR>       )<BR>       <BR>       (prompt ".........c:lsp48...................")<BR>       (prin1)<BR>

ahzjf 发表于 2004-6-18 11:37:00

;;;将文本按指定的方向的对齐。<BR>(defun c:fitdir( / entlst data pt1 pt2)<BR>       (while (and (setq entlst (entsel "\n请选择要调方向的文本:"))<BR>                       (setq data (entget (car entlst)))<BR>                       (= "TEXT" (cdr (assoc 0 data)))<BR>                       (setq pt1 (getpoint "\n对齐方向第一点:"))<BR>                       (setq pt2 (getpoint "\n对齐方向第二点:")) <BR>                       )<BR>                       (entmod (subst (cons 50 (angle pt1 pt2)) (assoc 50 data) data))<BR>                       )<BR>       (princ)<BR>       )

wedg 发表于 2004-6-26 12:52:00

按照你的程序,在输入文字的时候,不能有空格符,如果文字有空格的话,就进入下一个命令了!望改进!
页: [1] 2
查看完整版本: [求助]文字和直线平行