iain9876 发表于 2022-7-6 07:02:13

三维中3个点的矩形

有谁知道lisp routne可以从具有不同z值的3个点绘制闭合矩形?
 
1.首先,有三个具有不同z值的3d点。
2、按顺时针顺序点击这些点,然后绘制一个最适合这三个点的矩形。
3.4点将被平方并升高以适合。
 
有人听说过这样的例行公事吗?

gile 发表于 2022-7-6 07:15:26

你好
 
这里有一个快速(无错误处理)
 
(defun c:rect3d (/ p1 p2 p3)
(setq p1 (trans (getpoint "\nFirst point: ") 1 0)
       p2 (trans (getpoint p1 "\nSecond point: ") 1 0)
       p3 (trans (getpoint p1 "\nThird point: ") 1 0)
)
(command "_.ucs" "3" "_non" p1 "_non" p2 "_non" p3)
(setq p1 (trans p1 0 1)
       p2 (trans p2 0 1)
       p3 (trans p3 0 1)
       p3 (list (max (car p2) (car p3)) (max (cadr p2) (cadr p3)))
)
(command "_.rectangle" "_non" p1 "_non" p3)
(command "_.ucs" "_previous")
(princ)
)

David Bethel 发表于 2022-7-6 07:23:53

我不认为,除非这三个点形成直角,否则可以用定义角的点制作一个真正的矩形。可能是一个Parralellagram。如果这些点是共线的,会发生什么?也许我没有正确理解这个请求-大卫

iain9876 发表于 2022-7-6 07:25:08

 
它将根据3d中的3个点放置一个最合适的矩形

iain9876 发表于 2022-7-6 07:36:52

 
 
太棒了!

David Bethel 发表于 2022-7-6 07:42:23

然后有两种可能的解决方案:
 
1) ab垂直于bc
2) bc垂直于ab
 
-大卫

iain9876 发表于 2022-7-6 07:50:16

 
解决方案1

boxero 发表于 2022-7-6 07:57:47

这个很完美。因为经常发生的情况是,这3个点不是90度角,如果可以把矩形大小的修正。假设真实尺寸为1.00x0.50,但lisp绘制的是0.98x0.51,所以我的想法是添加关于我们是否同意拟议尺寸或我们想要放置自己尺寸的请求??我希望这是合理的,是你可以帮助的东西吗??

BIGAL 发表于 2022-7-6 08:03:38

这实际上取决于您想要设置规则的方式,使用pt1和pt2作为方向,但关于第三个pt的其他一些规则所有方法都只使用UCs平面类型答案。
 
像扩展/缩短pt pt2之类的东西并不是真正的sq到pt3。因此,没有规则就无法生成简单的lisp。
页: [1]
查看完整版本: 三维中3个点的矩形