明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2912|回复: 24

[提问] (讨论)关于三维面对齐二维平面XY轴

[复制链接]
发表于 2020-8-21 11:09:02 | 显示全部楼层 |阅读模式
6明经币
本帖最后由 999999 于 2021-5-21 18:01 编辑

求助想法:1.把三维的XYZ生成的面,识别其坐标点,使其三维面的大小展开对齐为二维XY轴平面并且长宽高不变(能够实现框选最好)
                2.如果生成二维XY轴面后,Z轴不为0则使其归零
                3.生成二维XY轴面且Z轴归零后,则三维线段转为二维线段并合并

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

最佳答案

查看完整内容

老帖子了,正好看到,搞了一下,试试
发表于 2020-8-21 11:09:03 | 显示全部楼层
本帖最后由 夏生生 于 2022-10-27 08:12 编辑

老帖子了,正好看到,搞了一下,试试

  1. ;;;向量相关函数来自明经网友高飞鸟
  2. (defun c:tt (/ lst pt pt1 pt2 pt3 ss v v1 v2)
  3.   (defun xty-tr-ss2lst (ss form / n en lst)
  4.     (repeat (setq n (sslength ss))
  5.       (setq en (ssname ss (setq n (1- n))))
  6.       (setq lst (cons en lst))
  7.       )
  8.     (setq lst (reverse lst))
  9.     (if  form
  10.       lst
  11.       (mapcar (function vlax-ename->vla-object) lst)
  12.       )
  13.     )
  14. (defun xty-vec-v*v (v1 v2)
  15.   (mapcar (function *) v1 v2)
  16. )

  17.   (defun xty-vec-vxs (v sc)
  18.     (mapcar (function (lambda (n) (* n sc))) v)
  19.     )
  20.   (defun xty-vec-vxv (u v)
  21.     (list
  22.       (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
  23.       (- (* (car v) (caddr u)) (* (car u) (caddr v)))
  24.       (- (* (car u) (cadr v)) (* (car v) (cadr u)))
  25.       )
  26.     )
  27.   (defun xty-vec-norm (v)
  28.     (sqrt (apply (function +) (xty-vec-v*v v v)))
  29.     )
  30.   (defun xty-vec-unit (v / norm)
  31.     (setq norm (xty-vec-norm v))
  32.     (cond ((= 1. norm) v)
  33.     ((> norm 1e-14) (xty-vec-vxs v (/ 1. norm)))
  34.     ((equal 0. norm 1e-14) nil)
  35.     )
  36.     )
  37.   (defun xty-vec-DispToMatrix  (mat disp)
  38.   (append
  39.     (mapcar 'append mat (mapcar 'list disp))
  40.     '((0. 0. 0. 1.))
  41.   )
  42. )
  43.   (defun xty-vec-Trans (from to)
  44.   (xty-vec-DispToMatrix
  45.     (mapcar
  46.       (function (lambda (v) (trans v from to t)))
  47.       '((1. 0. 0.) (0. 1. 0.) (0. 0. 1.))
  48.     )
  49.     (trans '(0 0 0) to from)
  50.   )
  51. )
  52.   (setq  ss  (ssget '((0 . "*polyline")))
  53.   lst (xty-tr-ss2lst ss nil)
  54.   pt  (getpoint "\n插入点:")
  55.   )
  56.   (foreach en lst
  57.     (setq en  (vla-copy en)
  58.     pt1 (vlax-curve-getstartpoint en)
  59.     pt2 (vlax-curve-getpointatparam en 1)
  60.     pt3 (vlax-curve-getpointatparam en 2)
  61.     v1  (mapcar '- pt2 pt1)
  62.     v2  (mapcar '- pt3 pt1)
  63.     v   (xty-vec-unit (xty-vec-vxv v1 v2))
  64.     )
  65.     (vla-TransformBy
  66.       en
  67.       (vlax-tmatrix (xty-vec-Trans v '(0 0 1)))
  68.       )
  69.     (vla-getboundingbox en 'pt1 'pt2)
  70.     (vla-move en
  71.         pt1
  72.         (vlax-3d-point pt)
  73.         )
  74.     (vla-getboundingbox en 'pt1 'pt2)
  75.     (setq pt (list (car (vlax-safearray->list pt2))
  76.        (cadr (vlax-safearray->list pt1))
  77.        (caddr (vlax-safearray->list pt1))
  78.        )
  79.     )
  80.     )
  81.   )


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2020-10-17 08:14:23 来自手机 | 显示全部楼层
我写过哦哦,不过你要考虑 正反面的问题哦,比如垂直的面,正面和反面是对称的关系
回复

使用道具 举报

 楼主| 发表于 2020-10-17 20:10:10 | 显示全部楼层
纵横八方 发表于 2020-10-17 08:14
我写过哦哦,不过你要考虑 正反面的问题哦,比如垂直的面,正面和反面是对称的关系

表示没有理解到意思,,是我想的比较简单可能
回复

使用道具 举报

发表于 2020-10-18 14:06:36 | 显示全部楼层
自带的命令Align,,三点对齐。 可以弄lsp简化操作,如取3d曲面的3个点后,直接在指点一个点上放平.
3d曲面几个顶点不一定在一个平面,所以放平后还要踏平一下.
回复

使用道具 举报

 楼主| 发表于 2020-10-18 17:56:02 | 显示全部楼层
kwok 发表于 2020-10-18 14:06
自带的命令Align,,三点对齐。 可以弄lsp简化操作,如取3d曲面的3个点后,直接在指点一个点上放平.
3d曲面 ...

对的,,,要是三维的三条边可以用LSP解决生成对齐二维的两个X一个Y轴就好了,
回复

使用道具 举报

发表于 2020-10-18 17:57:51 | 显示全部楼层
AL命令可以达到要求。
回复

使用道具 举报

 楼主| 发表于 2020-10-21 11:33:45 | 显示全部楼层
mokson 发表于 2020-10-18 17:57
AL命令可以达到要求。

这个我知道呀,就是我想把布棸简单一些
回复

使用道具 举报

发表于 2021-4-26 18:54:51 来自手机 | 显示全部楼层
比如一个 直角梯形 片体  如果垂直 立着的,你对齐到平面  会有两种结果,一种是 左视图看到的  一种也可以是右视图看到的
回复

使用道具 举报

 楼主| 发表于 2021-4-27 16:46:29 | 显示全部楼层
纵横八方 发表于 2021-4-26 18:54
比如一个 直角梯形 片体  如果垂直 立着的,你对齐到平面  会有两种结果,一种是 左视图看到的  一种也可以 ...

我右边的视图是三维视图,然后,左边的是二维的,三维的三个点,对齐二维的三个点,变成了二维平面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 01:55 , Processed in 0.195891 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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