明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3295|回复: 11

自己写的坐标变换函数!不需要设置坐标系就可以做变换!

  [复制链接]
发表于 2012-11-23 16:56:33 | 显示全部楼层 |阅读模式
  1. ;;;■=========点的坐标从世界坐标变换至对象坐标=========
  2. ;;;参数(<表>点 <图元名>对象)=======
  3. ;;;-----返回值:<表>新点坐标
  4. (defun trans-ucs-w->obj (in_pt in_obj / pt m_ret xu yu zu angu xp yp zp x1 y1 z1 x y z ent_obj )  
  5.   (if (and in_pt in_obj )
  6.     (progn
  7.       (setq ent_obj (entget in_obj))
  8.       (setq pt (cdr(assoc '10 ent_obj)))
  9.       (setq xu  (car pt))      
  10.     (setq yu  (cadr pt))      
  11.     (setq zu (caddr pt))
  12.      (setq angu  (cdr(assoc '50 ent_obj)))
  13.      (setq xp (car in_pt))      
  14.     (setq yp (cadr in_pt))     
  15.     (setq zp (caddr in_pt))      
  16.     (setq x1 (- xp xu))     
  17.     (setq y1 (- yp yu))      
  18.     (setq z1 (- zp zu))      
  19.     (setq x (+ (* x1 (cos angu)) (* y1 (sin angu))))      
  20.     (setq y (- (* y1 (cos angu)) (* x1 (sin angu))))      
  21.     (setq z z1)      
  22.     (setq m_ret (list x y z))      
  23.   ))  
  24.   m_ret
  25.   )
  26. ;;;■=========点的坐标从对象坐标变换至世界坐标=========
  27. ;;;参数(<表>点 <图元名>对象)=======
  28. ;;;-----返回值:<表>新点坐标
  29. (defun trans-ucs-obj->w (in_pt in_obj / pt m_ret xu yu zu angu xp yp zp x1 y1 z1 x y z )  
  30.   (if (and in_pt in_obj )
  31.     (progn
  32.       (setq pt (trans-ucs-w->obj '(0.0 0.0 0.0) in_obj))
  33.       (setq xu  (car pt))      
  34.     (setq yu  (cadr pt))      
  35.     (setq zu (caddr pt))
  36.      (setq angu  (* -1.0 (cdr(assoc '50 (entget in_obj)))))
  37.      (setq xp (car in_pt))      
  38.     (setq yp (cadr in_pt))     
  39.     (setq zp (caddr in_pt))      
  40.     (setq x1 (- xp xu))     
  41.     (setq y1 (- yp yu))      
  42.     (setq z1 (- zp zu))      
  43.     (setq x (+ (* x1 (cos angu)) (* y1 (sin angu))))      
  44.     (setq y (- (* y1 (cos angu)) (* x1 (sin angu))))      
  45.     (setq z z1)      
  46.     (setq m_ret (list x y z))      
  47.   ))  
  48.   m_ret
  49.   )
来明经混了两个月了,得到了很多帮助,自己也写了不少代码!今天发上来一个自己重写的坐标变换函数,欢迎大家使用,指正! 个人感觉比较方便,不需要设置新坐标系就可以执行变换,只要传入对象名,既可以自动变换并输出对象坐标系下的新坐标,同时不影响当前ucs。trans-ucs-w->obj 与trans-ucs-obj->w 两个函数互为逆向操作,前者变换至对象坐标,后者由对象坐标变回到世界坐标。今后还会多多发源码的!



该贴已经同步到 蔡__洛的微博

点评

类似trans  发表于 2012-11-29 13:33

评分

参与人数 1金钱 +5 收起 理由
chenlight + 5 赞一个!

查看全部评分

发表于 2024-6-28 08:24:29 | 显示全部楼层
太强大了 顶顶  收藏
发表于 2012-11-23 17:01:49 | 显示全部楼层
谢谢高手分享源码。
发表于 2012-11-23 18:09:16 | 显示全部楼层
想给楼主封个赏,但找不到按钮,也许权限不够。在此只能精神上支持你了
发表于 2012-11-23 19:24:06 | 显示全部楼层
绝对要顶,正寻找这方面的代码,不期就到了!不懂的地方要向你请教了!
发表于 2012-11-23 21:22:00 | 显示全部楼层
向高手学习了!!!
发表于 2012-11-24 08:42:56 | 显示全部楼层
还是不太明白怎么用
发表于 2012-11-24 10:42:48 来自手机 | 显示全部楼层
源代码要支持
发表于 2012-11-30 17:07:10 | 显示全部楼层
支持开源的
发表于 2012-11-30 18:42:19 | 显示全部楼层
本帖最后由 Q1241274614 于 2012-12-1 21:42 编辑

首先感谢楼主的源码,楼主能不能看看这种坐标系怎么转换,谢谢!

已知:1.空间3点 A B C,D为平面ABC内点。
           2.A为UCS系原点,D为UCS系内坐标点(list AE  ED)
求:D点WCS坐标。

本帖子中包含更多资源

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

x
发表于 2013-1-23 02:51:29 | 显示全部楼层
哥们怎么操作这个
我载入程序后 怎么搞?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 22:07 , Processed in 0.189114 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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