本帖最后由 183017064 于 2025-3-7 15:53 编辑 
  - (defun pt ()
 
 -   (setq p1 nil
 
 -     p2 nil)
 
 -   (while (or (null p1) (null p2))
 
 -     (if (null p1)
 
 -       (progn
 
 -         (setq p1 (getpoint (strcat"\n<空格>重新开始OR<Esc>退出OR请点击第一个点:当前管外径是:"(rtos (* offset_distance 2)2 2 ))))
 
 -         (if (null p1)
 
 -           (progn
 
 -             (princ "\n重新输入管外径。")
 
 -             (C:djg)
 
 -           )
 
 -         )
 
 -       )
 
 -     )
 
 -     (if (null p2)
 
 -       (setq p2 (getpoint p1"\n请点击第二个点:"))
 
 -     )
 
 -   )
 
 -   (line p1 p2)
 
 - )
 
  
 
 
- (defun line (p1 p2) 
 
 -   
 
 -   
 
 -   (setq original_line (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2))))
 
 -   ; 计算直线的方向向量
 
 -   (setq dx (- (car p2) (car p1)))
 
 -   (setq dy (- (cadr p2) (cadr p1)))
 
 -   ; 计算垂直方向向量(通过交换坐标并改变其中一个的符号)
 
 -   (setq perp_dx (- dy))
 
 -   (setq perp_dy dx)
 
 -   ; 计算垂直方向的单位向量
 
 -   (setq xiangliang (sqrt (+ (* perp_dx perp_dx) (* perp_dy perp_dy))))
 
 -   (setq unit_perp_dx (/ perp_dx xiangliang))
 
 -   (setq unit_perp_dy (/ perp_dy xiangliang))
 
 -   ; 计算偏移后的端点坐标
 
 -   (setq new_p1 (list (+ (car p1) (* offset_distance unit_perp_dx))
 
 -                  (+ (cadr p1) (* offset_distance unit_perp_dy))))
 
 -   (setq new_p2 (list (+ (car p2) (* offset_distance unit_perp_dx))
 
 -                  (+ (cadr p2) (* offset_distance unit_perp_dy))))
 
 -   (setq new_line1 (entmakex (list (cons 0 "LINE") (cons 10 new_p1) (cons 11 new_p2))))
 
 -   (setq new_p3 (list (- (car p1) (* offset_distance unit_perp_dx))
 
 -                  (- (cadr p1) (* offset_distance unit_perp_dy))))
 
 -   (setq new_p4 (list (- (car p2) (* offset_distance unit_perp_dx))
 
 -                  (- (cadr p2) (* offset_distance unit_perp_dy))))
 
 -   (setq new_line2 (entmakex (list (cons 0 "LINE") (cons 10 new_p3) (cons 11 new_p4))))
 
 -   ; 删除初始直线
 
 -   (command "erase" original_line "")
 
 -   
 
 -   (pt)
 
 - )
 
  
- (defun C:djg()
 
 -   
 
 -   (setq offset_distance (getreal "\n请输入管外经: "))
 
 -   (setq offset_distance (/ offset_distance 2 ))
 
 -   
 
 -   (pt)
 
 - )
 
 
  
 |