本帖最后由 fangmin723 于 2025-1-17 13:15 编辑
特别提醒:终止角度没有捕捉和输入指定角度的功能

具体用归何处,参考:https://www.bilibili.com/video/BV1Xa4y1P75d
还是CAD.Net给力,不影响捕捉和角度值的输入
网友答: getdist不是initget控制的吗?网友答: 本帖最后由 fangmin723 于 2025-1-17 08:05 编辑
可以用initget来控制程序功能走向,当时没有考虑那么多,就着当时的情况以及想要的效果写的
网友答:
;;加个动态角度显示可能更直观
网友答:
高手。高手。高高手
特别提醒:终止角度没有捕捉和输入指定角度的功能

- ;;;圆心、半径、起始角度和终止角度画弧 2023.4.23
- ;;;2024.6.21 动态显示
- (defun c:acr(/ *error* arcdata carc cen dxf50 dxf51 ea gr olderr pt r sa)
- (setq olderr *error*)
- (defun *error*(msg) (entdel carc) (princ "\n程序强制已退出!") (setq *error* olderr) (princ))
- (while (/= (type (setq cen (getpoint "\n指定圆弧的圆心[ESC退出]:"))) 'LIST))
- (while (/= (type (setq r (getdist cen "\n指定圆弧的半径[ESC退出]: "))) 'REAL))
- (while (/= (type (setq sa (getangle cen "\n指定圆弧起始角度[ESC退出]:"))) 'REAL))
- (setq carc (entmakex (list '(0 . "ARC") (cons 10 cen) (cons 40 r) (cons 50 sa) (cons 51 sa))) arcdata (entget carc))
- (prompt "\n指定圆弧终止角度[ESC退出]:")
- (while (or (and (setq gr (grread T 15 0)) (= (car gr) 5)) (or (= (car gr) 2) (= (car gr) 11) (= (car gr) 12) (= (car gr) 25)))
- (if (= (car gr) 5)
- (progn
- (setq ea (angle cen (cadr gr)))
- (setq arcdata (subst (cons 51 ea) (assoc 51 arcdata) arcdata))
- (entmod arcdata)
- )
- )
- )
- (prompt "\n请使用【空格】改变圆弧方向,左键单击完成!")
- (while (or (and (setq gr (grread T 15 0)) (= (car gr) 5)) (or (= (car gr) 2) (= (car gr) 11) (= (car gr) 12) (= (car gr) 25)))
- (if (equal gr '(2 32))
- (progn
- (setq dxf50 (cons 50 (cdr (assoc 51 arcdata))) dxf51 (cons 51 (cdr (assoc 50 arcdata))))
- (setq arcdata (subst dxf50 (assoc 50 arcdata) arcdata))
- (setq arcdata (subst dxf51 (assoc 51 arcdata) arcdata))
- (entmod arcdata)
- )
- )
- )
- (setq *error* olderr)
- (prin1)
- )
具体用归何处,参考:https://www.bilibili.com/video/BV1Xa4y1P75d
还是CAD.Net给力,不影响捕捉和角度值的输入
网友答: getdist不是initget控制的吗?网友答: 本帖最后由 fangmin723 于 2025-1-17 08:05 编辑
自贡黄明儒 发表于 2025-1-17 07:57
getdist不是initget控制的吗?
可以用initget来控制程序功能走向,当时没有考虑那么多,就着当时的情况以及想要的效果写的
网友答:
;;加个动态角度显示可能更直观网友答:
xyp1964 发表于 2025-1-18 10:35
;;加个动态角度显示可能更直观
高手。高手。高高手