xiaocainiao 发表于 2022-10-3 08:20:34

求教一个关于getpoint的技术难题

(defun c:tt ()
(setvar "ORTHOMODE" 1);开启正交
(setq pt1 (getpoint"\n指定第一点:"))
(setq pt2 (getpoint pt1 "\n移动光标确定方向并输入距离:"))
(if pt2
    (progn
      (setq ang (angle pt1 pt2))
      (setq d (distance pt1 pt2))
    )
    (progn
      ;怎么搞能根据当前光标的位置、获取正交的方向
    )
)
)请教论坛内的各位大佬一个问题、就是getpoint可以用pt1加一个距离来确定第二点。

那有没有办法在我开启正交以后、不输入距离、直接空格、
就能得出当前光标相对于pt1的方向是0度还是90度等正交角度

guosheyang 发表于 2022-10-3 09:51:12

xiaocainiao 发表于 2022-10-3 09:24
谢谢、已经搞出来了

你是用的啥方法?

xiaocainiao 发表于 2022-10-3 10:05:27

guosheyang 发表于 2022-10-3 09:51
你是用的啥方法?

(GRREAD 1) 用的这个、然后算角度来确定方向

wzg356 发表于 2022-10-3 08:38:51

方位角就可以了

xiaocainiao 发表于 2022-10-3 08:40:45

wzg356 发表于 2022-10-3 08:38
方位角就可以了

我是小白、能详细说明一下吗、就是用哪个函数可以获取、谢谢

guosheyang 发表于 2022-10-3 09:20:08

本帖最后由 guosheyang 于 2022-10-3 14:38 编辑

直接空格返回正交角度和 正交坐标

(defun c:tt( )
(setvar "ORTHOMODE" 1);开启正交
(setq pt1 (getpoint"\n指定第一点:"))
(setq pt2 (getpoint pt1 "\n移动光标确定方向并输入距离:"))
(if(not pt2)
   (progn(setq wz(CADR (GRREAD 1)))
         (setq zhi(/ (angle pt1 wz)(* 0.5 pi)))
          (setq jd(* 90
         (if(>(- zhi(fix zhi))0.5)
          (1+ (fix zhi))
             (fix zhi)
         )))
          (if(or(= jd 0)(= jd 180)(= jd 360))(list jd (setq zb(list(car wz)(cadr pt1))) )
             (list jd(setq zb(list(car pt1) (cadr wz))) ))
   )
    (progn
          (setq zhi(/ (angle pt1 pt2)(* 0.5 pi)))
          (setq jd(* 90
         (if(>(- zhi(fix zhi))0.5)
          (1+ (fix zhi))
             (fix zhi)
         )))
          (if(or(= jd 0)(= jd 180)(= jd 360))(list jd (setq zb(list(car pt2)(cadr pt1))) )
             (list jd (setq zb(list(car pt1) (cadr pt2))) ))
   )
)
)

xiaocainiao 发表于 2022-10-3 09:24:12

guosheyang 发表于 2022-10-3 09:20
(defun c:tt ()
;(setvar "ORTHOMODE" 1);开启正交
(setq pt1 (getpoint"\n指定第一点:"))


谢谢、已经搞出来了

Linxian1028 发表于 2022-10-3 13:07:00

LSP的方法不错。
页: [1]
查看完整版本: 求教一个关于getpoint的技术难题