明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 607|回复: 5

[讨论] 这个圆心为啥不在我的目标点p1呢?

[复制链接]
发表于 2024-7-12 12:00:39 | 显示全部楼层 |阅读模式
我当前UCS和WCS是一样的,我指定了任意两点:
p1(3148.79 1004.97 0.0)  
p2(2640.25 1486.33 0.0),
想把p1作为圆心,在p1处生成一个半径50的圆,其法向为从P1指向P2的向量(其实就是想把应该与XY平面平行的圆面,变成了与XY平面垂直的圆面)

(setq c1 (entmakex (list '(0 . "CIRCLE") '(67 . 0) '(62 . 6) '(410 . "Model") '(8 . "0") (cons 10 p1) (cons 40 50) (cons 210 (direction p2 p1)))))

但实际这个圆并没有按预期,方向是正确的,只是圆心不对,请问是为何?
;----------------------------------------------------------------------------------------------------------------------------------------------------------------
direction函数是我自定义的,求P1指向P2的向量,定义如下:

(defun direction (p1 p2 / )
        (list
                (* 1.00000000 (- (atoi (rtos (car   p2) 2 9)) (atoi (rtos (car     p1) 2 9))))
                (* 1.00000000 (- (atoi (rtos (cadr  p2) 2 9)) (atoi (rtos (cadr   p1) 2 9))))
                (* 1.00000000 (- (atoi (rtos (caddr p2) 2 9)) (atoi (rtos (caddr p1) 2 9))))
        );list
);defun



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-7-12 14:51:35 | 显示全部楼层
要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了
 楼主| 发表于 2024-7-12 15:08:28 | 显示全部楼层
jun470 发表于 2024-7-12 14:51
要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了

是的,在群友指点下,搞对了,把圆心坐标转换成新的UCS(以向量为Z轴的)就可以了
发表于 2024-7-12 17:21:53 | 显示全部楼层
228378553 发表于 2024-7-12 15:08
是的,在群友指点下,搞对了,把圆心坐标转换成新的UCS(以向量为Z轴的)就可以了

亲,修正后的记得发出来学习下,谢谢
 楼主| 发表于 2024-7-12 17:25:01 | 显示全部楼层
czb203 发表于 2024-7-12 17:21
亲,修正后的记得发出来学习下,谢谢

喏:
(defun $AddCircle (p1 p2 di / norm1 norm2 c1 c2)
        (setq norm1 (direction p2 p1))
        (setq norm2 (direction p1 p2))
        ;(command "point" p1)
        ;(command "point" p2)
        ;(command "line" p1 p2 "")
        (setq c1
                (entmakex
                        (list
                                '(0 . "CIRCLE")
                                '(67 . 0)
                                '(62 . 1)
                                '(410 . "Model")
                                '(8 . "0")
                                (cons 10 (trans p1 1 norm1))
                                (cons 40 di)
                                (cons 210 norm1)
                        )
                )
        )
        (setq c2
                (entmakex
                        (list
                                '(0 . "CIRCLE")
                                '(67 . 0)
                                '(62 . 1)
                                '(410 . "Model")
                                '(8 . "0")
                                (cons 10 (trans p2 1 norm2))
                                (cons 40 di)
                                (cons 210 norm2)
                        )
                )
        )
);defun
发表于 2024-7-12 17:26:55 | 显示全部楼层
228378553 发表于 2024-7-12 17:25
喏:
(defun $AddCircle (p1 p2 di / norm1 norm2 c1 c2)
        (setq norm1 (direction p2 p1))

谢谢大佬分享,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 14:43 , Processed in 0.182238 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表