峰云于雾 发表于 2016-3-21 22:52:24

标高标注程序

求社区内的大侠们伸出援手,检查一下代码!
自己编写的一段vlisp代码:
_$ _$ (setq h 1.25)       
(setq h1 (* h 1.414213562))
(setq a1 (/ pi 4))
(setq p1 (polar p0 a1 h1))
(setq a2 (* 3 (/ pi 4)))
(setq p2 (polar p0 a2 h1))
运行结果如下:
nil
1.25
1.76777
0.785398
(325.683 66.1647 0.0)
2.35619
(323.183 66.1647 0.0)
_$
小弟不懂为何p1和p2的结果会一样?
这段代码只是程序(附件)的一段,目的是求出屏幕点处的标高,并写出来,可以调整字高。
如果感兴趣的话,可以帮忙优化下代码。



eii 发表于 2016-3-21 23:17:30

关闭捕捉模式就可以了
(defun c:tt (/ v1 v2 p0 p01 p1 p2 p3 p4 h h1 s a1 a2 a3 a4 alf)
   (setq v1 (getvar "cmdecho"))        ;获取当前普通命令提示信息状态
   (setq v2 (getvar "blipmode"))        ;获取当前光标标记状态
   (setq oldosmode (getvar "osmode"))
   (setvar "osmode" 0)
   (setvar "cmdecho" 0)                ;关闭普通命令提示信息
   (setq p0 (getpoint "插入点: "))
   (setq p01 (osnap p0 "nea"))        ;捕捉最近的点
   (setq h (getdist p0 "\n标高的字高<2.5>: "))
   (if (not h)
          (setq h 2.5)
   )                                        ;如果h无定义(空响应),令h=2.5
   (setq h1 (* h 1.414213562))
   (setq a1 (/ pi 4))
   (setq p1 (polar p0 a1 h1))
   (setq a2 (* 3 (/ pi 4)))
   (setq p2 (polar p0 a2 h1))
   (setq a3 0)
   (setq p3 (polar p1 a3 (* 3.5 h)))
   (setq a4 (* 0.5 pi))
   (setq p4 (polar p1 a4 (* h 0.3)))
   (setq s (rtos (cadr p0) 2 3))        ;获取p0y坐标,并保存为小数点后3位十进制数值
   (setq alf 0)
   (command "line" p1 p0 p2 p3 "")
   (command "_text" "j" "bl" p4 h a1 s)        ;l为左对齐
   (setvar "cmdecho" v1)                ;恢复普通命令提示信息原状态
   (setvar "blipmode" v2)                ;恢复光标标记原状态
   (setvar "osmode" oldosmode)
   (princ)                                ;静默退出
)

峰云于雾 发表于 2016-3-22 01:35:53

关闭了捕捉设置,那如何保证能够点取所需的点?谢谢回答问题

eii 发表于 2016-3-22 07:48:21

在取点之后再关闭捕捉设置

峰云于雾 发表于 2016-3-22 08:41:11

eii 发表于 2016-3-22 07:48
在取点之后再关闭捕捉设置

你好,前面那个问题解决了,不过出现一个新的问题,就是当选点y坐标本身是整数时,如12.0,程序输出的结果为‘12’,我想将结果按小数点后三位的格式输出,求解

eii 发表于 2016-3-22 12:37:02

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=107567

峰云于雾 发表于 2016-3-22 14:36:36

eii 发表于 2016-3-22 12:37 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=107567

谢谢大侠,我的问题都解决了
页: [1]
查看完整版本: 标高标注程序