如何通过三维坐标在CAD里输出三维模型

  • 模型展示
  • 利用CAD的Visual Lisp编写程序
    • 1.直接画线
    • 2.直接画面
    • 3.直接画体
  • 总结

模型展示

下面教大家如何通过实际测量出的三维点坐标,在CAD中用一些自己编写的快捷键输出线、面、体。

利用CAD的Visual Lisp编写程序

1.直接画线

Visual LISP编辑器 是CAD常用的二次开发工具,它就在CAD里,见下图

1.打开Visual LISP编辑器;
2. 拷贝下面的代码,此代码是画两条三维线,然后保存;

(defun c:hual()(setvar "cmdecho" 0) (setvar "blipmode" 0)(setvar "dimzin" 0)(vl-load-com)(setq path "D:/")(setq g1(getfiled "选择数据文件" path "txt" 0))(setq g2(open g1 "r")) (setq i 1)(while (<= i 120) (setq f1 (read-line g2))(eval (read(strcat "(setq s" (rtos i)  " "  (vl-prin1-to-string f1) ")")))(setq i(+ i 1)))(setq s1 (vlax-make-variant s1 vlax-vbDouble))(setq s1(vlax-variant-value s1))(setq s2 (vlax-make-variant s2 vlax-vbDouble))(setq s2(vlax-variant-value s2))(setq s3 (vlax-make-variant s3 vlax-vbDouble))(setq s3(vlax-variant-value s3))(setq s4 (vlax-make-variant s4 vlax-vbDouble))(setq s4(vlax-variant-value s4))(setq s5 (vlax-make-variant s5 vlax-vbDouble))(setq s5(vlax-variant-value s5))(setq s6 (vlax-make-variant s6 vlax-vbDouble))(setq s6(vlax-variant-value s6))(setq s7 (vlax-make-variant s7 vlax-vbDouble))(setq s7(vlax-variant-value s7))(setq s8 (vlax-make-variant s8 vlax-vbDouble))(setq s8(vlax-variant-value s8))(setq s9 (vlax-make-variant s9 vlax-vbDouble))(setq s9(vlax-variant-value s9))(setq s10(vlax-make-variant s10 vlax-vbDouble))(setq s10(vlax-variant-value s10))(setq s11 (vlax-make-variant s11 vlax-vbDouble))(setq s11(vlax-variant-value s11))(setq s12 (vlax-make-variant s12 vlax-vbDouble))(setq s12(vlax-variant-value s12))(command "line"  (list s1 s2 s3) (list s4 s5 s6) "" )(command "line"  (list s7 s8 s9) (list s10 s11 s12) "" )(princ)(close g2)
)
  1. 此代码保存后,需要自己创建一个.txt文件,里面有四个点的三维坐标,每个点的XYZ各占一行,可为浮点数,见下图示意,共12个数;


4. 把构建的文本保存在D盘里;
5. 然后加载应用程序,见下图步骤;

6.注意:先关闭二维及三维捕捉,然后输入快捷键HUAL,找到之前创建的txt文件,打开后即可见到那两条线,可以调一下轴测图,这样更清楚,见下图;

2.直接画面

1.代码如下;

(defun c:huam()(setvar "cmdecho" 0) (setvar "blipmode" 0)(setvar "dimzin" 0)(vl-load-com)(setq path "D:/")(setq g1(getfiled "选择数据文件" path "txt" 0))(setq g2(open g1 "r")) (setq i 1)(while (<= i 120) (setq f1 (read-line g2))(eval (read(strcat "(setq s" (rtos i)  " "  (vl-prin1-to-string f1) ")")))(setq i(+ i 1)))(setq s1 (vlax-make-variant s1 vlax-vbDouble))(setq s1(vlax-variant-value s1))(setq s2 (vlax-make-variant s2 vlax-vbDouble))(setq s2(vlax-variant-value s2))(setq s3 (vlax-make-variant s3 vlax-vbDouble))(setq s3(vlax-variant-value s3))(setq s4 (vlax-make-variant s4 vlax-vbDouble))(setq s4(vlax-variant-value s4))(setq s5 (vlax-make-variant s5 vlax-vbDouble))(setq s5(vlax-variant-value s5))(setq s6 (vlax-make-variant s6 vlax-vbDouble))(setq s6(vlax-variant-value s6))(setq s7 (vlax-make-variant s7 vlax-vbDouble))(setq s7(vlax-variant-value s7))(setq s8 (vlax-make-variant s8 vlax-vbDouble))(setq s8(vlax-variant-value s8))(setq s9 (vlax-make-variant s9 vlax-vbDouble))(setq s9(vlax-variant-value s9))(setq s10(vlax-make-variant s10 vlax-vbDouble))(setq s10(vlax-variant-value s10))(setq s11 (vlax-make-variant s11 vlax-vbDouble))(setq s11(vlax-variant-value s11))(setq s12 (vlax-make-variant s12 vlax-vbDouble))(setq s12(vlax-variant-value s12))(setq s13 (vlax-make-variant s13 vlax-vbDouble))(setq s13(vlax-variant-value s13))(setq s14 (vlax-make-variant s14 vlax-vbDouble))(setq s14(vlax-variant-value s14))(setq s15 (vlax-make-variant s15 vlax-vbDouble))(setq s15(vlax-variant-value s15))(setq s16 (vlax-make-variant s16 vlax-vbDouble))(setq s16(vlax-variant-value s16))(setq s17 (vlax-make-variant s17 vlax-vbDouble))(setq s17(vlax-variant-value s17))(setq s18 (vlax-make-variant s18 vlax-vbDouble))(setq s18(vlax-variant-value s18))(setq s19 (vlax-make-variant s19 vlax-vbDouble))(setq s19(vlax-variant-value s19))(setq s20(vlax-make-variant s20 vlax-vbDouble))(setq s20(vlax-variant-value s20))(setq s21 (vlax-make-variant s21 vlax-vbDouble))(setq s21(vlax-variant-value s21))(setq s22 (vlax-make-variant s22 vlax-vbDouble))(setq s22(vlax-variant-value s22))(setq s23 (vlax-make-variant s23 vlax-vbDouble))(setq s23(vlax-variant-value s23))(setq s24 (vlax-make-variant s24 vlax-vbDouble))(setq s24(vlax-variant-value s24))(command "3dface"  (list s1 s2 s3) (list s4 s5 s6) (list s7 s8 s9) (list s10 s11 s12)"" )(command "3dface"  (list s13 s14 s15)(list s16 s17 s18)(list s19 s20 s21)(list s22 s23 s24)"" )(princ)(close g2)
)

2.按画线的步骤进行即可,此快捷键为HUAM,txt文件里是24个数(8个点),画的是两个面,每个面由四个点生成,见下图;


3.另,想把三维面转为曲面可用cad的convtosurface命令,这样就可对其修剪等。

3.直接画体

1.原理:先生成两个面,然后放样生成体,代码如下;

(defun c:huat()(setvar "cmdecho" 0) (setvar "blipmode" 0)(setvar "dimzin" 0)(vl-load-com)(setq path "D:/")(setq g1(getfiled "选择数据文件" path "txt" 0))(setq g2(open g1 "r")) (setq i 1)(while (<= i 240) (setq f1 (read-line g2))(eval (read(strcat "(setq s" (rtos i)  " "  (vl-prin1-to-string f1) ")")))(setq i(+ i 1)))(setq s1 (vlax-make-variant s1 vlax-vbDouble))(setq s1(vlax-variant-value s1))(setq s2 (vlax-make-variant s2 vlax-vbDouble))(setq s2(vlax-variant-value s2))(setq s3 (vlax-make-variant s3 vlax-vbDouble))(setq s3(vlax-variant-value s3))(setq s4 (vlax-make-variant s4 vlax-vbDouble))(setq s4(vlax-variant-value s4))(setq s5 (vlax-make-variant s5 vlax-vbDouble))(setq s5(vlax-variant-value s5))(setq s6 (vlax-make-variant s6 vlax-vbDouble))(setq s6(vlax-variant-value s6))(setq s7 (vlax-make-variant s7 vlax-vbDouble))(setq s7(vlax-variant-value s7))(setq s8 (vlax-make-variant s8 vlax-vbDouble))(setq s8(vlax-variant-value s8))(setq s9 (vlax-make-variant s9 vlax-vbDouble))(setq s9(vlax-variant-value s9))(setq s10(vlax-make-variant s10 vlax-vbDouble))(setq s10(vlax-variant-value s10))(setq s11 (vlax-make-variant s11 vlax-vbDouble))(setq s11(vlax-variant-value s11))(setq s12 (vlax-make-variant s12 vlax-vbDouble))(setq s12(vlax-variant-value s12))(setq s13 (vlax-make-variant s13 vlax-vbDouble))(setq s13(vlax-variant-value s13))(setq s14 (vlax-make-variant s14 vlax-vbDouble))(setq s14(vlax-variant-value s14))(setq s15 (vlax-make-variant s15 vlax-vbDouble))(setq s15(vlax-variant-value s15))(setq s16 (vlax-make-variant s16 vlax-vbDouble))(setq s16(vlax-variant-value s16))(setq s17 (vlax-make-variant s17 vlax-vbDouble))(setq s17(vlax-variant-value s17))(setq s18 (vlax-make-variant s18 vlax-vbDouble))(setq s18(vlax-variant-value s18))(command "3dpoly" (list s1 s2 s3) (list s4 s5 s6) (list s7 s8 s9)(list s1 s2 s3)"" )(command "3dpoly"  (list s10 s11 s12)(list s13 s14 s15)(list s16 s17 s18)(list s10 s11 s12)"" )(command "loft"  (entnext)(entlast)  "" "")(princ)(close g2)
)

2.按画线的步骤进行即可,此快捷键为HUAT,txt文件里是18个数(6个点),画的是一个上下不等的三角形生成的体,见下图;

总结

上面的程序用了后就会发现有很多可以变通的地方,以上只是通过一些实例让大家可以照猫画虎,大家完全可以增加点。再比如LISP的command命令,它就是间接调用了CAD的命令,也就是说只要能在CAD里画出来,就能通过LISP写出来,因为程序本身就是解决繁琐的工作。以上程序是我搜索查询摸索了一个多月的成果,欢迎大家指正学习。

【代码篇】通过三维坐标在CAD里自动输出三维模型相关推荐

  1. 套料排版代码python_【黑科技】CAD内自动套料,排样,排版功能终于被攻克了!!

    本帖最后由 AA纯水乐 于 2019-6-22 11:42 编辑 8 w7 a5 k# T. a$ V v! a% }- {$ K8 t6 T  [- k * J$ F" h% P6 W1 ...

  2. 双目视觉目标追踪及三维坐标获取—python(代码)

    2022年九月更新: 在原来的基础上,我使用了yolov5代替了opencv的目标检测算法辅助相机进行三维坐标的获取,并成功用获取的坐标实时控制机械臂,感兴趣的话可以看我b站里的视频,视频下方也有开源 ...

  3. 利用matplotlib将图片放入三维坐标里

    如何将二维图片放入三维坐标里显示,我是分三步做的: 1.读取二维图片,获取图片的尺寸 img = Image.open("/Users/yuhao/Desktop/timg.jpg" ...

  4. 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...

    我是怎么想的,在新浪博客里写代码教程. 这篇博客的内容同步到了CSND博客中,那里不限制外链,也可以复制代码. http://blog.csdn.net/sinat_41310868/article/ ...

  5. 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放

    给定一个二维点(x, y),那么形如(kx, ky, k)的所有三元组就都是等价的,它们就是这个点的齐次坐标(homogeneous).齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指 ...

  6. Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)

    Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)                                                                    ...

  7. Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标

    01 参考 本文下述使用参考的的工程均来自于下面的两个github yolo v5参考的代码:https://github.com/ultralytics/yolov5 本文参考的代码(仅获得深度): ...

  8. 忻州计算机cad培训,忻州CAD三维建模培训cad三维制图教程

    忻州CAD三维建模培训cad三维制图教程 (1)1 CAD三维建模 1. CAD三维建模首先应做什么? 答首先应当熟悉世界坐标系和三维空间的关系.其次 是CAD的用户坐标系以及多个视图的使用技巧.另外 ...

  9. python代码案例详解-Python实现电视里的5毛特效实例代码详解

    前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章. 我们先看看能实现什么效果,先来个正常版的,先看看原场景: 下面 ...

最新文章

  1. 小学教师计算机国培培训总结,小学教师国培个人研修总结
  2. 福州大学2013java期末试卷_2020-11-04:java里,总体说一下集合框架。
  3. 简单介绍一下Java常用的五大框架!
  4. html5 控制鼠标移动,HTML5 Canvas随鼠标移动的引力粒子群
  5. 工业级以太网交换机的应用领域有哪些?
  6. 使用 Github Pages 和 Hexo 搭建自己的独立博客【超级详细的小白教程】
  7. 这一路,信念很简单,把书念下去,然后走出去,不枉活一世
  8. mysql登录报错error1045,mysql创建登录报错ERROR1045(28000)
  9. 用R进行文本挖掘与分析:分词、画词云
  10. 为什么用JS取不到cookie的值?解决方法如下!
  11. Spring Security(02)——关于登录
  12. oracle对用户的管理
  13. qca9377linux无线驱动,ubuntu下安装无线网卡去驱动Qualcomm-Atheros-QCA9377
  14. shell2 for linux,Linux Shell编程(2): for while
  15. 附资料:工程总承包项目管理流程图(全套)
  16. Java Web(九) 用户管理系统
  17. Git下载、安装及环境配置(超详细)
  18. 如何批量提取过期域名,如何批量查询权重域名、收录域名
  19. 这就是爱,说也说不清楚
  20. Rhino学习教程——1.3

热门文章

  1. 通过PS把月亮“搬”到自己的床上
  2. 树与图在索引上的区别
  3. egret(白鹭引擎) 学习历程(二)
  4. 如何去理解虚拟机的概念?
  5. 离散数学——基本等价式、基本蕴含式
  6. Halcon17完美破解兼容17.12.0.0附破解说明
  7. Linux 内核软死锁(soft lockup)记录
  8. 网络安全-网站后台的寻找+网页JS文件信息收集
  9. jQuery三款简约MP3播放器插件
  10. 官方通报:kissreiko博文因涉嫌诈骗广告 将永久封号