明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2733|回复: 22

[提问] 求三维实体表面与空间直线的交点

[复制链接]
发表于 2016-2-20 20:39 | 显示全部楼层 |阅读模式
求三维实体表面与空间直线的交点
求红色三维实体表面与空间白色直线的交点表
(底面的交点可不求)
或求交点的方法


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-10-27 16:36 | 显示全部楼层
(defun C:zxstjd( / swst zxxzj i gs en ss ii gs2 sss gs3 iii )
(setvar "CMDECHO" 0)
(setq swst(car(entsel"\n请选择三维实体")))
(princ "\n请选择所有直线")
(setq zxxzj(ssget))
(setq i 0 gs(sslength zxxzj))
(repeat gs
(command "_.imprint" swst (ssname zxxzj i) "" "")
(setq i(1+ i))
)
(command "copy" swst "" "non" '(0 0 0) "non" '(0 0 0) "")
(setq en(entlast))
(setvar "QAFLAGS" 1)
(command "explode" en "")
(setq ss(ssget "p"))
(setq ii 0 gs2(sslength ss))
(setq en(entlast))
(repeat gs2
(command "explode" (ssname ss ii) "")
(setq ii(1+ ii))
)
(setq sss(ss-entnext en))
(setq gs3(sslength sss) iii 0 lst1 nil)

(repeat gs3
   (if(= (cdr( assoc 0 (entget (ssname sss iii)))) "POINT")
      (setq lst1 (cons (cdr( assoc 10 (entget (ssname sss iii)))) lst1))
   )
   (setq iii(1+ iii))
)
(command "erase" sss "")
(setvar "QAFLAGS" 0)
;lst1
(mapcar'(lambda(p)
               (entmakex (list '(0 . "POINT") (cons 10 p)))
             )
            lst1
)
  lst1
);;;;;;;子函数
(defun ss-entnext (en / ss)
  (if en
    (progn
      (setq ss (ssadd))
      (while (setq en (entnext en))
        (if (not (member (cdr (assoc 0 (entget en)))
                         '("ATTRIB"
                           "VERTEX"
                           "SEQEND"
                          )
                 )
            )
          (ssadd en ss)
        )
      )
      (if (zerop (sslength ss))
        (setq ss nil)
      )
      ss
    )
    (ssget "_x")
  )
)
 楼主| 发表于 2021-10-25 13:15 | 显示全部楼层
本帖最后由 ynhh 于 2021-10-25 13:19 编辑
guosheyang 发表于 2021-5-18 21:07
这个交点也是可以求出来的  只不过要用command调用  压印命令  imprint   ((11771.3 -4631.64 111.165) (11 ...

您好
按您求出的点,感觉都不在实体表面
不知是那里出了问题?

(setq DB '((11771.3 -4631.64 111.165) (11775.9 -4615.49 -26.322)
            (11774.8 -4659.23 -156.213) (11758.5 -4742.2 -273.059)
            (11734.5 -4931.63 -401.022) (11896.3 -4769.75 0.0) (11646.1 -5019.98 0.0))
       )


(foreach UUU DB
(command "point" UUU "" ) ;  画点
)




本帖子中包含更多资源

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

x
 楼主| 发表于 2021-10-25 13:17 | 显示全部楼层



本帖子中包含更多资源

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

x
 楼主| 发表于 2016-2-20 20:40 | 显示全部楼层
请求大师指点一下
用什么函数才能求出
三维实体与直线的交点

本帖子中包含更多资源

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

x
发表于 2016-2-20 20:54 | 显示全部楼层
CAD里貌似无法用lisp提供的函数求出
 楼主| 发表于 2016-2-20 20:56 | 显示全部楼层
陨落 发表于 2016-2-20 20:54
CAD里貌似无法用lisp提供的函数求出

连你这开店的都这么说
我感觉也好象有点是真的了
发表于 2016-2-20 21:02 | 显示全部楼层
ynhh 发表于 2016-2-20 20:56
连你这开店的都这么说
我感觉也好象有点是真的了

我在lisp里面试过解决这个问题,没有找到解决方法。也许arx可以也说不定
 楼主| 发表于 2016-2-20 21:08 | 显示全部楼层
陨落 发表于 2016-2-20 21:02
我在lisp里面试过解决这个问题,没有找到解决方法。也许arx可以也说不定

在找到很多实体与线相交的来学习
最后才发现
找到的实体
其实就是平面的图形
根本不是三维实体
看来是没办法了
发表于 2021-5-18 21:07 | 显示全部楼层
这个交点也是可以求出来的  只不过要用command调用  压印命令  imprint   ((11771.3 -4631.64 111.165) (11775.9 -4615.49 -26.322) (11774.8 -4659.23 -156.213) (11758.5 -4742.2 -273.059) (11734.5 -4931.63 -401.022) (11896.3 -4769.75 0.0) (11646.1 -5019.98 0.0))




本帖子中包含更多资源

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

x
 楼主| 发表于 2021-5-19 08:05 | 显示全部楼层
本帖最后由 ynhh 于 2021-5-19 08:58 编辑
guosheyang 发表于 2021-5-18 21:07
这个交点也是可以求出来的  只不过要用command调用  压印命令  imprint   ((11771.3 -4631.64 111.165) (11 ...

谢谢您的指点
不知能不能把您这个 ZCSTJD 分享一下或您提供多标几个明经币分享
谢谢您
发表于 2021-5-19 22:07 | 显示全部楼层
ynhh 发表于 2021-5-19 08:05
谢谢您的指点
不知能不能把您这个 ZCSTJD 分享一下或您提供多标几个明经币分享
谢谢您

这个程序就是一系列的command 组成  具体步骤我给你说下   首先  调用压印命令IMPRINT 将所有直线压印到实体表面,然后   复制一份压印后的实体     再炸开复制的实体   新生成了两个面域和一个曲面,再次炸开这三个对象,然后就可以得到你需要的点了  自己去写一下代码呗    都是一些command 调用
 楼主| 发表于 2021-5-20 08:02 | 显示全部楼层
guosheyang 发表于 2021-5-19 22:07
这个程序就是一系列的command 组成  具体步骤我给你说下   首先  调用压印命令IMPRINT 将所有直线压印到 ...

谢谢您的指点
如能分享
我愿多出几个币
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-27 00:16 , Processed in 0.178296 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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