228378553 发表于 2024-7-12 12:00:39

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

我当前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 (cadrp2) 2 9)) (atoi (rtos (cadr   p1) 2 9))))
                (* 1.00000000 (- (atoi (rtos (caddr p2) 2 9)) (atoi (rtos (caddr p1) 2 9))))
      );list
);defun



jun470 发表于 2024-7-12 14:51:35

要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了

228378553 发表于 2024-7-12 15:08:28

jun470 发表于 2024-7-12 14:51
要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了

是的,在群友指点下,搞对了,把圆心坐标转换成新的UCS(以向量为Z轴的)就可以了

czb203 发表于 2024-7-12 17:21:53

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

亲,修正后的记得发出来学习下,谢谢

228378553 发表于 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

czb203 发表于 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))


:handshake谢谢大佬分享,:loveliness::loveliness:
页: [1]
查看完整版本: 这个圆心为啥不在我的目标点p1呢?