这个圆心为啥不在我的目标点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
要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了 jun470 发表于 2024-7-12 14:51
要的圆面是与XY平面垂直的面,是不是就相当于变成新ucs,坐标系就变了,向量能对,但是圆心的坐标不对了
是的,在群友指点下,搞对了,把圆心坐标转换成新的UCS(以向量为Z轴的)就可以了 228378553 发表于 2024-7-12 15:08
是的,在群友指点下,搞对了,把圆心坐标转换成新的UCS(以向量为Z轴的)就可以了
亲,修正后的记得发出来学习下,谢谢 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
228378553 发表于 2024-7-12 17:25
喏:
(defun $AddCircle (p1 p2 di / norm1 norm2 c1 c2)
(setq norm1 (direction p2 p1))
:handshake谢谢大佬分享,:loveliness::loveliness:
页:
[1]