明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2229|回复: 8

如何找到一根直线和任意三点决定平面的交点?

[复制链接]
发表于 2004-2-4 12:59:00 | 显示全部楼层 |阅读模式
如何找到一根直线和任意三点决定平面的交点?


有好的算法么?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-2-5 12:39:00 | 显示全部楼层
我也很想知道啊
 楼主| 发表于 2004-2-5 19:19:00 | 显示全部楼层
那我告诉你::


那就是先把沿线作一柱体(实体)


在通过三个点的面在柱体上切一个剖面,


然后炸开剖面


再去捕捉生成椭圆的圆心!!


去写程序吧,写完了给大家贴出来.......
发表于 2004-2-6 08:03:00 | 显示全部楼层
 楼主| 发表于 2004-2-6 20:14:00 | 显示全部楼层
楼上的兄弟:


我看了你写的垂足的程序,很好,这段程序对三维图形投影到某一平面很有用处..


但是我希望的是直线和面的交点,好象不是一回事.....
发表于 2004-2-7 03:12:00 | 显示全部楼层
  1. (defun C:EE0 (/ LIN PT1 PT2 PT3   WW1 WW2)
  2.    (command "_.ucs" "w")
  3.    (setq PT1 (getpoint "\n第一点: ")
  4.                PT2 (getpoint PT1 "\n第二点: "))
  5.    (grdraw PT1 PT2 3 1)
  6.    (setq PT3 (getpoint PT2 "\n第三点: "))
  7.    (grdraw PT2 PT3 3 1)
  8.    (grdraw PT3 PT1 3 1)
  9.    (command "_.ucs" 3 PT1 PT2 PT3)
  10.    (setq lin (car(entsel "\n面外线: "))
  11.   pt1 (cdr (assoc 10 (entget lin)))
  12.   pt2 (cdr (assoc 11 (entget lin))))
  13.    (setq WW1 (trans (list (car (trans pt1 0 1)) (cadr (trans pt1 0 1)) 0) 1 0)
  14.                WW2 (trans (list (car (trans pt2 0 1)) (cadr (trans pt2 0 1)) 0) 1 0)
  15.   pt3 (inters pt1 pt2 ww1 ww2 nil))
  16.    (command "_.ucs" "p")
  17.    (grdraw PT1 pt3 3 1)
  18.    (command "_.ucs" "p")
  19.    (princ "\n线与面交点(世界坐标): ")(princ pt3)
  20.    (princ)
  21. )
发表于 2004-2-7 03:44:00 | 显示全部楼层
来个数学方法

本帖子中包含更多资源

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

x
 楼主| 发表于 2004-2-8 08:08:00 | 显示全部楼层
谢谢各位的帮助
 楼主| 发表于 2004-2-8 15:51:00 | 显示全部楼层
无痕的坐标转化很值得学习,构思很巧妙... Ea的理论写的很简练我很羡慕... "总之,能推给AutoCAD做的事情,我们决不自己做。要不然,买这个软件做什么?"呵呵----- 那我就用cad的命令来完成这个任务希望大家多提出一些算法,让我们的思路更宽.... ;一根直线和任意三点决定平面的交点
;2004.2 ljc 唐山
(defun c:jj(/p1 p2 p3 st st1 )
(setq line (ssget '((0 . "line"))))
(setq osmode(getvar "osmode"))
(command "ucs" "" "")
(setq p1 (getpoint "选择第一点") p2 (getpoint "选择第二点") p3 (getpoint "选择第三点") )
(command "_cylinder"
(cdr(assoc 10 (entget(ssname line 0)))) 100 "c" (cdr(assoc 11 (entget(ssname line 0)))) "")
(setq st(entlast))
(command "section" st "" p1 p2 p3 )
(command "erase" st "")
(command "explode" (entlast) "")
(setq st1(entlast)) (SETVAR "OSMODE" 0)
(command "point" (cdr(assoc 10 (entget st1))) )
(command "erase" st1 "")
(SETVAR "OSMODE" osmode)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 01:24 , Processed in 0.201757 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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