明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1483|回复: 6

求助LISP高手,坐标标注程序改进方案

[复制链接]
发表于 2013-5-12 20:23:46 | 显示全部楼层 |阅读模式
我绘制道路横断图时想标注距中桩的偏距和高程,此程序的相对坐标标注可满足要求,唯一不足的地方是我想把引线修改为竖直方向,X,Y分别在引线两端,如图所示:高手请帮帮小弟,不胜感激!!!!!!!

本帖子中包含更多资源

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

x
发表于 2013-5-12 22:18:32 | 显示全部楼层
  1. (defun c:bzzb()
  2. (setq oldzin (getvar "DIMZIN"))
  3. (setvar "DIMZIN" 0)
  4. (if (= hzt nil) (setq hzt 1))
  5. (setq thzt hzt)
  6. (setq thzt (getdist (strcat "\n 文字高度<" (rtos thzt) ">:")))
  7. (if thzt (setq hzt thzt))
  8. (command "style" "standard" "黑体" hzt 1 "" "" "")
  9. (initget 1 "A B  ")
  10. (setq gclx (getkword "\n 绝对坐标(A) / 相对于某点的坐标(B) <A>:"))
  11. (if (= gclx "B")
  12.   (setq pt0 (getpoint "\n 点取基准坐标点位置: "))
  13.   (setq pt0 (list 0 0))
  14. )
  15. (setq os (getvar "osmode"))
  16. (while (and (setq pt (getpoint "\n点取标注点位置: "))
  17.              (setq pt1 (getpoint pt "\n文字点: ")))
  18.   (setq p1 (polar pt1 0 hzt))
  19.   (setq p2 (polar pt1 pi hzt))
  20.   (command "point" pt)
  21.   (setvar "osmode" 0)
  22.   (setq pt1 (mapcar '- pt pt0))
  23.   (setq xpt (rtos (cadr pt1) 2 3) ypt (rtos (car pt1) 2 3))
  24.   (setq l (* hzt (max (strlen xpt) (strlen ypt))))
  25.   (setq pt2 (polar pt1 (/ pi 2) l))
  26.   (command "_.PLINE" pt pt1 pt2 "")
  27.   (command "_.TEXT" "ML" p2 90 (strcat "x=" xpt))
  28.   (command "_.TEXT" "ML" p1 90 (strcat "y=" ypt))
  29.   (setvar "osmode" os)
  30. )
  31. (setvar "DIMZIN" oldzin)
  32. );defun
 楼主| 发表于 2013-5-13 19:31:57 | 显示全部楼层
程序达到了我想要的结果,谢谢超级版主,请问x,y坐标还能不能改成任意角度标注(只要保证标注点和XY坐标在一条直引线上就好),麻烦版主再费点力,小弟再次感谢!!!
发表于 2013-5-15 09:27:06 | 显示全部楼层
  1. ;坐标标注 ZZXXQQ 2013.5.12 2013.5.15改
  2. (defun c:bzzb()
  3. (setq oldzin (getvar "DIMZIN"))
  4. (setvar "DIMZIN" 0)
  5. (if (= hzt nil) (setq hzt 1))
  6. (setq thzt hzt)
  7. (setq thzt (getdist (strcat "\n 文字高度<" (rtos thzt) ">:")))
  8. (if thzt (setq hzt thzt))
  9. (command "style" "standard" "黑体" hzt 1 "" "" "")
  10. (initget 1 "A B  ")
  11. (setq gclx (getkword "\n 绝对坐标(A) / 相对于某点的坐标(B) <A>:"))
  12. (if (= gclx "B")
  13.   (setq pt0 (getpoint "\n 点取基准坐标点位置: "))
  14.   (setq pt0 (list 0 0))
  15. )
  16. (setq os (getvar "osmode"))
  17. (while (and (setq pt (getpoint "\n点取标注点位置: "))
  18.              (setq pt1 (getpoint pt "\n文字点: ")))
  19.   (setq ang (angle pt pt1))
  20.   (setq p1 (polar pt1 (+ (/ pi -2) ang) hzt))
  21.   (setq p2 (polar pt1 (+ (/ pi 2) ang) hzt))
  22.   (command "point" pt)
  23.   (setvar "osmode" 0)
  24.   (setq pt1 (mapcar '- pt pt0))
  25.   (setq xpt (rtos (cadr pt1) 2 3) ypt (rtos (car pt1) 2 3))
  26.   (setq l (* hzt (max (strlen xpt) (strlen ypt))))
  27.   (setq pt2 (polar pt1 ang l))
  28.   (setq an (/ (* ang 180) pi))
  29.   (command "_.PLINE" pt pt1 pt2 "")
  30.   (command "_.TEXT" "ML" p2 an (strcat "x=" xpt))
  31.   (command "_.TEXT" "ML" p1 an (strcat "y=" ypt))
  32.   (setvar "osmode" os)
  33. )
  34. (setvar "DIMZIN" oldzin)
  35. );defun
发表于 2013-5-18 17:58:52 | 显示全部楼层
版主 强大啊 收藏了 顶起
发表于 2013-10-12 16:52:06 | 显示全部楼层
○Only°尐影 发表于 2013-5-13 19:31
程序达到了我想要的结果,谢谢超级版主,请问x,y坐标还能不能改成任意角度标注(只要保证标注点和XY坐标在一 ...

你好,改完后的能给我发一个吗?
发表于 2013-10-13 00:08:42 | 显示全部楼层
厉害,版主,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 05:02 , Processed in 0.182674 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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