明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1710|回复: 0

[求助]修改坐标标注LISP

[复制链接]
发表于 2010-11-24 12:47:00 | 显示全部楼层 |阅读模式

程序来自网络,程序如下

(defun c:zx( / ucsfl os p0 pxx pyy px py pp ppp paa pbb entl a b le sc len alph alf

alfa p1 p2 p3 p11 p22 p21 t1 t2)
 (command "undo" "begin")
 (setq CHO (getvar "CMDECHO"))  ;CMDECHO系统变量为1时,当使用command命令时反

馈提示和输入,如为0则不反馈
 (setvar "CMDECHO" 0)
 ;(command "style" "standard" "txt,hztxt" "" "" "" "" "" "")
(setq ucsfl (getvar "ucsfollow"))
(setvar "ucsfollow" 0)
(command "ucs" "world")   ;转到世界坐标系
(setq os (getvar "osmode"))

(while (equal h nil)
  (setq h (getreal "\n 请输入字体高度:"))
;(command "LAYER" "Make" "gaobz" "")
 )  
(setvar "osmode" 37)   ;1端点,4圆心,32交点,可组合。
(initget 1 "h")
(setq p0 (getpoint "\n H/<选择插入点:>"))
(while (eq p0 "h")
  (setq hh (getreal "\n 请输入字体高度:"))
   (if (/= nil hh) (setq h hh))
(setq p0 (getpoint "\n 请选择插入点:"))
)
(setq pxx (car p0))
(setq pyy (nth 1 p0))
(setq px (rtos pxx 2 3))
(setq py (rtos pyy 2 3))
(setvar "osmode" 0)
(setq pp (getpoint "\n 请选择引出点:")) ;引出点pp
(command "line" p0 pp nill)
(command "ucs" "p")   ;返回用户坐标系
(command "line" "" pause "")


(setq entl (entget (entlast)))
(setq a (assoc 10 entl))
(setq b (assoc 11 entl))
(setq pa (cdr a))  ;引出点pa
(setq ppp (cdr b))  ;引出点pb
(setq paa (trans pa 0 1))
(setq pbb (trans ppp 0 1))  ;引出点的用户坐标
(setq le (distance paa pbb))  ;两点间距离 
(setq len (* 9.5 h))
(setq sc (/ len le))
(if (< le len)
  (progn
   (command "scale" (entlast) "" paa sc "")
   )
)
(setq alph (angle paa pbb))  ;引出两点的弧度alph
(setq alf (* 180.0 (/ alph pi))) ;求出角度值alf
(setq p1 (polar paa alph h))  
(setq p2 (polar p1 alph (* 5 h))) ;p2决定线长
(setq p3 (polar p2 alph 1000))
(setq ent (entlast))
(command "break" ent p2 p3)  ;将多余的线剪掉
(if (>= alf 105)
(if (>= alf 255)
 (progn
  (setq pd p1)
  (setq alfa alf)
  (setq p11 (polar pd (+ 1.5708 alph) (* 0.1 h)))
  (setq p12 (polar pd (+ 4.7124 alph) (* 1.1 h)));定出文本起点
  )
 (progn
  (setq p21 (polar p2 (+ pi alph) h)) ;
  (setq p11 (polar p21 (- alph 1.5708) (* 0.1 h)))
  (setq p12 (polar p21 (+ alph 1.5708) (* 1.1 h)));定出文本起点
  (setq alfa (+ alf 180))
  )
  )
    ;当alf大于105时
 (progn
  (setq pd p1)
  (setq alfa alf)
  (setq p11 (polar pd (+ 1.5708 alph) (* 0.1 h)))
  (setq p12 (polar pd (+ 4.7124 alph) (* 1.1 h)));定出文本起点
  )
)
(setq t1 (strcat "X=" py))
(setq t2 (strcat "Y=" px))
(command "text" p11 h alfa t1)
(command "text" p12 h alfa t2)
(setvar "osmode" os)   ;返回原捕捉模式
(setvar "ucsfollow" ucsfl)
 (command "undo" "end")
 (setvar "CMDECHO" CHO)
 (princ)
)
;----------------------------------------------------------------------------------

 效果如下图:

 
 问题如下:

X=,Y=   距离左端点有一个字高的水平距离,现想把它改成0.1的字高就可以了,应该怎么修改以上的程序呢?谢谢!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-24 00:29 , Processed in 0.194275 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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