183017064 发表于 2025-2-26 13:55:49

绘制管道程序。 DS

本帖最后由 183017064 于 2025-2-27 10:23 编辑

(defun pt ( /p1 p2)
(setq oldecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(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 / dx dy new_line1 new_line2 new_p1 new_p2 new_p3 new_p4original_line perp_dx perp_dyunit_perp_dy xiangliang)


(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( / offset_distance)

(setq offset_distance (getreal "\n请输入管外经: "))
(setq offset_distance (/ offset_distance 2 ))

(pt)
)

183017064 发表于 2025-2-27 10:17:05

本帖最后由 183017064 于 2025-2-27 10:19 编辑

qwsss31 发表于 2025-2-27 09:37
哈哈,DS写的吧,嘿嘿嘿,还得调汗
对:lol,但确实前期自己写的一直没有完善,现在借助DS完善了。发上来借用平台保留一下;P

Aaron95 发表于 2025-2-26 14:03:14

感谢大佬分享

183017064 发表于 2025-2-26 14:10:46

Aaron95 发表于 2025-2-26 14:03
感谢大佬分享

闹着玩,程序比较简单,我谈不上大佬,刚学,就是小白一枚。:loveliness:

qwsss31 发表于 2025-2-27 09:37:00

哈哈,DS写的吧,嘿嘿嘿,还得调汗

moranyuyan 发表于 2025-2-27 15:16:40

谢谢分享

moranyuyan 发表于 2025-2-27 20:39:53

用来画双线倒是不错
页: [1]
查看完整版本: 绘制管道程序。 DS