fangmin723 发表于 2024-6-24 07:50:02

3点(两个角度方位)获取角度差(夹角)

本帖最后由 fangmin723 于 2024-6-24 11:35 编辑

3点(两个角度方位)获取角度差(夹角)
顾名思义,通过拾取的3个点或者两个角度,来获取角度差【0,2π】或夹角【0,π】
;;;3点(两角度方位)获取角度差(夹角) by 702099480@qq.com 2024.6.21
(defun C:TT()
      (progn
                ;;说明:两个角度方位的角度差
                ;;参数:ang1:角度方位1
                ;;参数:ang2:角度方位2
                ;;返回:角度差
                (defun GetAng(ang1 ang2)
                        (if (< ang2 ang1)
                              (setq ang (+ ang2 (- (* pi 2) ang1)))
                              (setq ang (- ang2 ang1))
                        )
                )
               
                ;;说明:获取点1、点2位于角点的角度差
                ;;参数:pt1:点1
                ;;参数:angpt:角点
                ;;参数:pt2:点2
                ;;返回:角度差
                (defun Get3PtAng(pt1 angpt pt2)
                        (setq ang1 (angle angpt pt1) ang2 (angle angpt pt2))
                        (GetAng ang1 ang2)
                )
               
                ;;说明:两个角度方位的夹角
                ;;参数:ang1:角度方位1
                ;;参数:ang2:角度方位2
                ;;返回:夹角
                (defun GetSpaceAng(ang1 ang2)
                        (setq ang (GetAng ang1 ang2))
                        (if (> ang pi) (- (* pi 2) ang) ang)
                )
               
                ;;说明:获取点1、点2位于角点的夹角
                ;;参数:pt1:点1
                ;;参数:angpt:角点
                ;;参数:pt2:点2
                ;;返回:夹角
                (defun Get3PtSpaceAng(pt1 angpt pt2)
                        (setq ang1 (angle angpt pt1) ang2 (angle angpt pt2))
                        (getspaceang ang1 ang2)
                )
               
                ;;说明:弧度转角度
                ;;参数:ang:弧度值
                ;;返回:角度值
                (defun ToDeg(ang) (* 180.0 (/ ang pi)))
               
                ;;说明:角度转弧度
                ;;参数:ang:角度值
                ;;返回:弧度值
                (defun ToRad(ang) (* pi (/ ang 180.0)))
      )
      
      (and
                (setq startpoint (getpoint "\n拾取起始点"))
                (setq angpoint (getpoint startpoint"\n拾取角点"))
                (setq endpoint (getpoint angpoint"\n拾取终止点"))
                (princ
                        (strcat
                              "\n角度差:"
                              (rtos (ToDeg (Get3PtAng startpoint angpoint endpoint)) 2 2)
                              "°\n夹 角:"
                              (rtos (ToDeg (Get3PtSpaceAng startpoint angpoint endpoint)) 2 2)
                              "°"
                        )
                )
      )
      (prin1)
)


角度差可能与夹角相等,具体看起始点(起始方位角)或结束点(终止方位角)相对方位
如下图所示:

注意:文件内代码与上面给出代码相同

fangmin723 发表于 2024-6-24 08:12:17

本帖最后由 fangmin723 于 2024-6-24 08:14 编辑

大佬们用爱发电,有人却去收电费

lxl217114 发表于 2024-6-24 09:20:16

大佬们用爱发电,有人却去收电费。
我就点赞

czb203 发表于 2024-6-24 09:57:59

暂时用不到,大佬的作品点赞支持下

jkop 发表于 2024-6-24 10:23:35

暂时用不到,大佬的作品丰富,助我良多,特来支持!

帝都划水王 发表于 2024-6-24 11:36:01

暂时用不到,大佬的作品丰富,助我良多,特来支持支持!

guosheyang 发表于 2024-6-24 19:50:06

感谢大佬的分享!

a461346548 发表于 2024-6-24 21:24:34


暂时用不到,大佬的作品丰富,助我良多,特来支持!

bai2000 发表于 2024-7-11 14:02:51

不错的资料,存一下
页: [1]
查看完整版本: 3点(两个角度方位)获取角度差(夹角)