xunifengshen 发表于 4 天前

源码倒角反了

直线和直线可以直线和内弧可以 直线和外弧就反了方向了 有大神帮忙看下什么原因吗附件和下面的代码一样的 谢谢了



[*](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))); 辅助函数:将角度转换为弧度

飞雪神光 发表于 3 天前

xunifengshen 发表于 2024-12-23 16:54
厉害了大哥 倒角命令你用的中点对中点我一直用对象怪不得不对啊 那如果这个中点有两条直线通过 会不 ...还可以更改点的位置或者
(command "_fillet" (list line-entity1 (lm-mipt pt2 pt1)) (list arc-entity midpoint))

帝都划水王 发表于 3 天前

看的眼睛疼

飞雪神光 发表于 3 天前

函数名不可设置为变量
(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)
)

xunifengshen 发表于 3 天前

飞雪神光 发表于 2024-12-23 12:08
函数名不可设置为变量

厉害了大哥 倒角命令你用的中点对中点我一直用对象怪不得不对啊 那如果这个中点有两条直线通过 会不会产生混乱
页: [1]
查看完整版本: 源码倒角反了