源码倒角反了
直线和直线可以直线和内弧可以 直线和外弧就反了方向了 有大神帮忙看下什么原因吗附件和下面的代码一样的 谢谢了[*](defun c:qaz ()
[*](vl-load-com)
[*];; 定义变量
[*](setq angle 45.0);; 扇形角度
[*](setq radius 300);; 扇形的半径
[*] ;; 选择扇形的中心点
[*](setq pt1 (getpoint "\n选择扇形的中心点: "))
[*] ;; 计算扇形的端点
[*](setq angle1 (/ angle 2));; 计算扇形的一半角度
[*];; 计算两个端点的坐标(通过极坐标转换)
[*](setq pt2 (polar pt1 (deg2rad (- 90 angle1)) radius)) ;; 第一个端点(左侧)
[*](setq pt3 (polar pt1 (deg2rad (+ 90 angle1)) radius)) ;; 第二个端点(右侧])
[*] (setq midpoint (polar pt1 (deg2rad 90) radius)) ;; 中心点
[*] (setq midpoint1 (polar pt1 (deg2rad 90) 240)) ;; 中心点
[*];; 画扇形的两条边
[*](command "LINE" pt2 pt1 "");; 画从中心点到第一个端点的直线
[*](setq line-entity1 (entlast))
[*](command "LINE" pt3 pt1 "");; 画从中心点到第二个端点的直线
[*](setq line-entity2 (entlast))
[*] (command "LINE" pt2 pt3 "");; 画从中心点到第二个端点的直线
[*](setq line-entity3 (entlast))
[*];; 画弧线(扇形的弧)第一条弧长
[*](command "ARC" pt2 midpoint pt3)
[*];; 获取刚绘制的圆弧的实体名称
[*](setq arc-entity (entlast)) ; 获取图形数据库中最后绘制的实体,也就是刚画的圆弧
[*] (command "ARC" pt2 midpoint1 pt3)
[*] (setq arc-entity1 (entlast))
[*];; 调整倒角半径(负值:朝内侧)
[*](setq A (getvar "FILLETRAD")) ; 获取默认倒角半径
[*](setq B (getreal "\012请输入倒角半径:")) ; 提示新设置倒角
[*](if (= B nil) (setq B A)) ; 如果没有设置就用A
[*] (setvar "FILLETRAD" B) ;
[*];(setvar "FILLETRAD" (- B)) ; 不能设置为负数报错
[*];; 执行倒角命令
[*](command "_fillet" line-entity1 arc-entity); 互换顺序也没用
[*];(command "_fillet" "R" 10 arc-entity5 line-entity4)
[*](princ "\n倒圆角命令已执行完毕.")
[*](princ)
[*])
[*]
[*](defun deg2rad (deg)
[*](* pi (/ deg 180.0))); 辅助函数:将角度转换为弧度
xunifengshen 发表于 2024-12-23 16:54
厉害了大哥 倒角命令你用的中点对中点我一直用对象怪不得不对啊 那如果这个中点有两条直线通过 会不 ...还可以更改点的位置或者
(command "_fillet" (list line-entity1 (lm-mipt pt2 pt1)) (list arc-entity midpoint))
看的眼睛疼 函数名不可设置为变量
(vl-load-com)
(defun c:qaz (/ a an angle1 arc-entity arc-entity1 b deg2rad line-entity1 line-entity2 line-entity3 lm-mipt midpoint midpoint1 pt1 pt2 pt3 radius)
(defun deg2rad (deg)
(* pi (/ deg 180.0))
)
(defun lm-mipt(p1 p2)(mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2))
(setq an 45.0)
(setq radius 300)
(setq pt1 (getpoint "\n选择扇形的中心点: "))
(setq angle1 (/ an 2))
(setq pt2 (polar pt1 (deg2rad (- 90 angle1)) radius)) ;; 第一个端点(左侧)
(setq pt3 (polar pt1 (deg2rad (+ 90 angle1)) radius)) ;; 第二个端点(右侧])
(setq midpoint (polar pt1 (deg2rad 90) radius)) ;; 中心点
(setq midpoint1 (polar pt1 (deg2rad 90) 240)) ;; 中心点
(command "LINE" pt2 pt1 "");; 画从中心点到第一个端点的直线
(setq line-entity1 (entlast))
(command "LINE" pt3 pt1 "");; 画从中心点到第二个端点的直线
(setq line-entity2 (entlast))
(command "LINE" pt2 pt3 "");; 画从中心点到第二个端点的直线
(setq line-entity3 (entlast))
(command "ARC" pt2 midpoint pt3)
(setq arc-entity (entlast)) ; 获取图形数据库中最后绘制的实体,也就是刚画的圆弧
(command "ARC" pt2 midpoint1 pt3)
(setq arc-entity1 (entlast))
(setq A (getvar "FILLETRAD")) ; 获取默认倒角半径
(setq B (getreal "\012请输入倒角半径:")) ; 提示新设置倒角
(if (= B nil) (setq B A)) ; 如果没有设置就用A
(setvar "FILLETRAD" B) ;
(command "_fillet" (lm-mipt pt2 pt1) midpoint)
(command "_fillet" (lm-mipt pt3 pt1) midpoint)
(princ "\n倒圆角命令已执行完毕.")
(princ)
) 飞雪神光 发表于 2024-12-23 12:08
函数名不可设置为变量
厉害了大哥 倒角命令你用的中点对中点我一直用对象怪不得不对啊 那如果这个中点有两条直线通过 会不会产生混乱
页:
[1]