C三维绘图教程与案例很实用
- 格式:docx
- 大小:965.95 KB
- 文档页数:18
C#实现3D效果完整实例本⽂实例讲述了C#实现3D效果的⽅法。
分享给⼤家供⼤家参考,具体如下:⼀、新建⼀类⽂件private static double[] addVector(double[] a, double[] b){return new double[] { a[0] + b[0], a[1] + b[1], a[2] + b[2] };}private static double[] scalarProduct(double[] vector, double scalar){return new double[] { vector[0] * scalar, vector[1] * scalar, vector[2] * scalar };}private static double dotProduct(double[] a, double[] b){return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];}private static double norm(double[] vector){return Math.Sqrt(dotProduct(vector, vector));}private static double[] normalize(double[] vector){return scalarProduct(vector, 1.0 / norm(vector));}private static double[] crossProduct(double[] a, double[] b){return new double[]{(a[1] * b[2] - a[2] * b[1]),(a[2] * b[0] - a[0] * b[2]),(a[0] * b[1] - a[1] * b[0])};}private static double[] vectorProductIndexed(double[] v, double[] m, int i){return new double[]{v[i + 0] * m[0] + v[i + 1] * m[4] + v[i + 2] * m[8] + v[i + 3] * m[12],v[i + 0] * m[1] + v[i + 1] * m[5] + v[i + 2] * m[9] + v[i + 3] * m[13],v[i + 0] * m[2] + v[i + 1] * m[6] + v[i + 2] * m[10]+ v[i + 3] * m[14],v[i + 0] * m[3] + v[i + 1] * m[7] + v[i + 2] * m[11]+ v[i + 3] * m[15]};}private static double[] vectorProduct(double[] v, double[] m){return vectorProductIndexed(v, m, 0);}private static double[] matrixProduct(double[] a, double[] b){double[] o1 = vectorProductIndexed(a, b, 0);double[] o2 = vectorProductIndexed(a, b, 4);double[] o3 = vectorProductIndexed(a, b, 8);double[] o4 = vectorProductIndexed(a, b, 12);return new double[]{o1[0], o1[1], o1[2], o1[3],o2[0], o2[1], o2[2], o2[3],o3[0], o3[1], o3[2], o3[3],o4[0], o4[1], o4[2], o4[3]};}private static double[] cameraTransform(double[] C, double[] A){double[] w = normalize(addVector(C, scalarProduct(A, -1)));double[] y = new double[] { 0, 1, 0 };double[] u = normalize(crossProduct(y, w));double[] v = crossProduct(w, u);double[] t = scalarProduct(C, -1);return new double[]{u[0], v[0], w[0], 0,u[1], v[1], w[1], 0,u[2], v[2], w[2], 0,dotProduct(u, t), dotProduct(v, t), dotProduct(w, t), 1};}private static double[] viewingTransform(double fov, double n, double f){fov *= (Math.PI / 180);double cot = 1.0 / Math.Tan(fov / 2);return new double[] { cot, 0, 0, 0, 0, cot, 0, 0, 0, 0, (f + n) / (f - n), -1, 0, 0, 2 * f * n / (f - n), 0 };}public static Image Generate(string captchaText){int fontsize = 24;Font font = new Font("Arial", fontsize);SizeF sizeF;using (Graphics g = Graphics.FromImage(new Bitmap(1, 1))){sizeF = g.MeasureString(captchaText, font, 0, StringFormat.GenericDefault);}int image2d_x = (int)sizeF.Width;int image2d_y = (int)(fontsize * 1.3);Bitmap image2d = new Bitmap(image2d_x, image2d_y);Color black = Color.Black;Color white = Color.White;using (Graphics g = Graphics.FromImage(image2d)){g.Clear(black);g.DrawString(captchaText, font, Brushes.White, 0, 0);}Random rnd = new Random();double[] T = cameraTransform(new double[] { rnd.Next(-90, 90), -200, rnd.Next(150, 250) }, new double[] { 0, 0, 0 }); T = matrixProduct(T, viewingTransform(60, 300, 3000));double[][] coord = new double[image2d_x * image2d_y][];int count = 0;for (int y = 0; y < image2d_y; y += 2){for (int x = 0; x < image2d_x; x++){int xc = x - image2d_x / 2;int zc = y - image2d_y / 2;double yc = -(double)(image2d.GetPixel(x, y).ToArgb() & 0xff) / 256 * 4;double[] xyz = new double[] { xc, yc, zc, 1 };xyz = vectorProduct(xyz, T);coord[count] = xyz;count++;}}int image3d_x = 256;int image3d_y = image3d_x * 9 / 16;Bitmap image3d = new Bitmap(image3d_x, image3d_y);Color fgcolor = Color.White;Color bgcolor = Color.Black;using (Graphics g = Graphics.FromImage(image3d)){g.Clear(bgcolor);count = 0;double scale = 1.75 - (double)image2d_x / 400;for (int y = 0; y < image2d_y; y += 2){for (int x = 0; x < image2d_x; x++){if (x > 0){double x0 = coord[count - 1][0] * scale + image3d_x / 2;double y0 = coord[count - 1][1] * scale + image3d_y / 2;double x1 = coord[count][0] * scale + image3d_x / 2;double y1 = coord[count][1] * scale + image3d_y / 2;g.DrawLine(new Pen(fgcolor), (float)x0, (float)y0, (float)x1, (float)y1);}count++;}}}return image3d;}注意引⽤命名空间:using System.Drawing;⼆、页⾯调⽤Response.ContentType = "image/pjpeg";Captcha.Generate("我就是3D内容").Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);更多关于C#相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》希望本⽂所述对⼤家C#程序设计有所帮助。
ok.et内容提要:本文介绍了图形的绘制和图像处理,其中详细介绍了画布(Canvas)的属性与使用方法,利用它们,可以非常直观方便地绘制直线、曲线、矩形、椭圆等各种图形。
本文还介绍了图像处理的方法,其中包括 Image 组件、TBitmap 类和 TJPEGImage 类的使用,而要进行快速的图像处理,几乎都离不开 ScanLine 技术。
使用 ScanLine 技术,能够快速取得bitmap 的每行的颜色值,而无需使用 Canvas 的 Pixels 属性逐点获取像素点的颜色值。
关键字:C++Builder、图形、图像、画布引言:自 Windows 诞生以来,可以通过 GDI(Graphics Device Interface)来实现图形的绘制。
然而对于初学者来说,庞大复杂的 GDI 绘图系统是一个难以跨越的学习障碍。
所幸的是,在C++Builder 绘图系统中,提供了一个简易可行的画布( Canvas),可以用非常直观的方式来实现Windows 下的绘图功能。
C++Builder 提供了 Image 组件,可以很方便地装载图像,以及进行图像处理。
正文:1 在窗体上作图1.1 知识要点1. 画布( Canvas)在 C++Builder 中,几乎所有的可视化组件(包括:Form、Image、Bitmap、PaintBox)都包含Canvas 属性。
Canvas 包含了许多和绘图有关的性质,如 Pen、Brush、Pixels、Font 等,另外它还包含了各种绘图的函数,如 LineTo、Rectangle、MoveTo、Polygon 等。
(1)Canvas 类主要属性有:Font:画布绘制文本所用的字体。
Brush:用于填充背景的画笔刷。
Pen:用来画线和描述图形轮廓的画笔。
PenPos:当前绘图位置的坐标。
Pixels:画布像素数组。
(2)Canvas 类主要方法有:Arc:用当前画笔在画布上画圆弧。
一个C#三维绘图控件一般的三维图形程序都使用C++开发,很少有使用C#的。
并不是因为C++效率有多高,而是因为没有合适的C#图形控件使用。
C#开发程序,只能用一个字来形容:爽!二个字:倍爽!那能不能用C#开发三维程序也倍爽呢?答案是肯定的。
由于公司需要开发一个三维应用,完全用C#+OpenGL/Direct3D开发又不太现实,毕竟公司主营不是搞三维的,希望能有一个能拿来就能使用的三维绘图控件。
经过一番的googe 和baidu,找到几款支持.Net的三维图形控件,经过一番对比和使用,最终选用AnyCAD的.Net 图形控件。
AnyCAD三维图形控件主要的优势在于支持建模(类似CAD的三维造型)、显示和支持三维的文件格式(STEP,IGES,STL,DXF等),根据API的名字就能知道怎么使用。
只要稍微有点三维的概念,就能上手使用了。
当然根据控件提供的例子,很容易就能改造一个。
主要的建模功能:●三维的球、立方体、圆柱体、圆锥等常见的三维几何形状●二维的线、多折线、圆弧、椭圆弧、Spline等2D几何形状●支持布尔运算●支持拉伸、扫略、loft等等CAD的建模方式三维显示●内置视图的旋转、缩放、平移,基本上不用任何设置就能用●支持选择:点、线、面,能方便的从选择集中得到几何对象●设置点、线、面的显示样式,支持透明,自定义的材质WinForm控件●拖到窗体上,运行程序就能看到显示的效果。
使用太方便了。
支持的CAD格式●STEP,IGES,STL,DXF●遗憾的是不支持DWG,如果支持就更完美了控件的功能比较多,不能一一的列举,上面是我们能用到功能。
另外,这个控件有免费版和专业版,免费的版本比较老,功能没有收费的多,但对于小的应用也够用了。
cad画三维立体图的教程篇一:CAD三维绘图教程与案例,很实用CAD 绘制三维实体基础AutoCAD除具有强大的二维绘图功能外,还具备基本的三维造型能力.若物体并无复杂的外表曲面及多变的空间结构关系,则使用AutoCAD可以很方便地建立物体的三维模型.本章我们将介绍AutoCAD三维绘图的基本知识. 1.三维模型的分类及三维坐标系;2.三维图形的观察方法;3.创建基本三维实体;4.由二维对象生成三维实体; 5.编辑实体.实体的面和边;_.1 三维几何模型分类在AutoCAD中,用户可以创建3种类型的三维模型:线框模型.表面模型及实体模型.这3种模型在计算机上的显示方式是相同的,即以线架结构显示出来,但用户可用特定命令使表面模型及实体模型的真实性表现出来._.1.1线框模型(Wireframe Model)线框模型是一种轮廓模型,它是用线(3D空间的直线及曲线)表达三维立体,不包含面及体的信息.不能使该模型消隐或着色.又由于其不含有体的数据,用户也不能得到对象的质量.重心.体积.惯性矩等物理特性,不能进行布尔运算.图_-1显示了立体的线框模型,在消隐模式下也看到后面的线.但线框模型结构简单,易于绘制._.1.2 表面模型(Surface Model)表面模型是用物体的表面表示物体.表面模型具有面及三维立体边界信息.表面不透明,能遮挡光线,因而表面模型可以被渲染及消隐.对于计算机辅助加工,用户还可以根据零件的表面模型形成完整的加工信息.但是不能进行布尔运算.如图_-2所示是两个表面模型的消隐效果,前面的薄片圆筒遮住了后面长方体的一部分.图_-1 线框模型 1 图_-2 表面模型_.1.3 实体模型实体模型具有线.表面.体的全部信息.对于此类模型,可以区分对象的内部及外部,可以对它进行打孔.切槽和添加材料等布尔运算,对实体装配进行干涉检查,分析模型的质量特性,如质心.体积和惯性矩.对于计算机辅助加工,用户还可利用实体模型的数据生成数控加工代码,进行数控刀具轨迹仿真加工等.如图_-3所示是实体模型.图_-3 实体模型_.2 三维坐标系实例——三维坐标系.长方体.倒角.删除面 AutoCAD的坐标系统是三维笛卡儿直角坐标系,分为世界坐标系(WCS)和用户坐标系(UCS).图_-4表示的是两种坐标系下的图标. 图中〝_〞或〝Y〞的剪头方向表示当前坐标轴_轴或Y轴的正方向,Z轴正方向用右手定则判定.世界坐标图_-4 表示坐标系的图标缺省状态时,AutoCAD的坐标系是世界坐标系.世界坐标系是唯一的,固定不变的,对于二维绘图,在大多数情况下,世界坐标系就能满足作图需要,但若是创建三维模型,就不太方便了,因为用户常常要在不同平面或是沿某个方向绘制结构.如绘制图_-5所示的图形,在世界坐标系下是不能完成的.此时需要以绘图的平面为_Y坐标平面,创建新的坐标系,然后再调用绘图命令绘制图形.2用户坐标系任务:绘制如图_-5所示的实体.目的:通过绘制此图形,学习长方体命令.实体倒角.删除面命令和用户坐标系的建立方法.知识的储备:基本绘图命令和对象捕捉.对象追踪的应用.图_-5 在用户坐标系下绘图绘图步骤分解:1.绘制长方体指定长方体的角点或 [中心点(CE)] 0,0,0 :在屏幕上任意点单击指定角点或 [立方体(C)/长度(L)]:L ? //选择给定长宽高模式.指定长度: 30?指定宽度: _?指定高度: _?绘制出长30,宽_,高_的长方体,如图_-6所示.2.倒角用于二维图形的倒角.圆角编辑命令在三维图中仍然可用.单击〝编辑〞工具栏上的倒角按钮,调用倒角命令:命令: _chamfer3(〝修剪〞模式) 当前倒角距离 1 = 0.__,距离 2 = 0.__选择第一条直线或 [多段线(P)/距离(D)/角度(A)/修剪(T)/方式(M)/多个(U)]:在AB直线上单击基面选择...输入曲面选择选项 [下一个(N)/当前(OK)] 当前 :? //选择默认值.指定基面的倒角距离: _?指定其他曲面的倒角距离 _.__ :?//选择默认值_.选择边或 [环(L)]:在AB直线上单击结果如图_-7所示.图_-6 绘制长方体图_-7 长方体倒角3.移动坐标系,绘制上表面圆因为AutoCAD只可以在_Y平面上画图,要绘制上表面上的图形,则需要建立用户坐标系.由于世界坐标系的_Y面与CDEF面平行,且_轴.Y轴又分别与四边形CDEF的边平行,因此只要把世界坐标系移到CDEF面上即可.移动坐标系,只改变坐标原点的位置,不改变_.Y轴的方向.如图_-8所示.(1)移动坐标系在命令窗口输入命令动词〝UCS〞,AutoCAD提示:命令: ucs当前 UCS 名称: _世界_输入选项[新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/应用(A)/?/世界(W)] 世界 : M ? //选择移动选项.指定新原点或 [Z 向深度(Z)] 0,0,0 : 对象捕捉开选择F点单击也可直接调用〝移动坐标系〞命令:4(2)绘制表面圆打开〝对象追踪〞.〝对象捕捉〞, 调用圆命令,捕捉上表面的中心点,以 5 为半径绘制上表面的圆.结果如图_-9所示.4.三点法建立坐标系,绘制斜面上圆(1)三点法建立用户坐标系命令窗口输入命令动词〝UCS〞命令: ucs当前 UCS 名称: _没有名称_输入选项 [新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/应用(A)/?/世界(W)] 世界 : N ? //新建坐标系.指定新UCS的原点或[Z轴(ZA)/三点(3)/对象(OB)/面(F)/视图(V)/_/Y/Z] 0,0,0 : 3?//选择三点方式.指定新原点 0,0,0 :在H点上单击在正 _ 轴范围上指定点 50.9844,-27.3562,_.7279 :在G点单击在 UCS _Y 平面的正 Y 轴范围上指定点 49.9844,-26.3562,_.7279 :在C 点单击(2)绘制圆方法同第3步,结果如图_-9所示.5篇二:CAD 三维图的绘制教程实例一.工字型的绘制步骤一:设置好绘图单位.绘图范围.线型.图层.颜色,打开捕捉功能.从下拉菜单View→Display→UCSIcon→On关闭坐标显示.步骤二:根据图1所示尺寸绘制图形,得到如图1-1所示封闭图形.步骤三:创建面域.在命令栏Command:输入Region,用框选方式全部选中该图形,回车.出现提示:1 loop e_tracted,1 Region created,表示形成了一个封闭图形,创建了一图1-2 三维效果图图1-1 平面图个面域.步骤四:对该面域进行拉伸操作.Draw→Solids→E_trude,选中该面域的边框,回车.在命令栏提示:Specify height of e_trusion or [Path]:30,回车,再回车.三维工字形实体就生成了.步骤五:观察三维实体.View→3D Views→SW Isometric,再从View→Hide进行消除隐藏线处理,观察,最后进行着色渲染,View→Shade→Gouraud Shaded,如图1-2所示.二.二维五角形到三维五角星的绘制步骤一:设置好绘图单位.绘图范围.线型.图层.颜色,打开捕捉功能.步骤二:绘制一个矩形,以矩形中心为圆心,作一个圆及一个椭圆,修整直线.步骤三:阵列直线,创建光图2-1图2-2线效果.将直线段在360度范围内阵列72个,形成光线效果步骤.步骤四:修整直线.以椭圆为边界,将直线每隔一条修剪至椭圆;同时以矩形为边界,将矩形外的线条全部修剪至矩形;矩形内没修的剪线条延伸至矩形.步骤五:绘制五角形.在上图的旁边绘制一个圆,再绘制这个圆的内接正五边形.将五边形的五个端点连成直线,修剪掉每边的中间部分就得到五角形.步骤六:绘制五角星.先用交叉窗口选择的方法将五角形图2-4图2-3做成面域,再将其拉伸成高度为30.角度为30的五角星.步骤七:移动图形.将五角星移到步骤四所绘的图形中,删除绘图用到的辅助图形,如矩形.椭圆.大小圆.正五边形.图2-5图2-6三.汤勺主视图.纵截面轮廓线图和横截面图的尺寸,进行实体造型.图3-1步骤一:绘图准备.新建一个图形文件,选择公制,设置适当的图层.线型.颜色.绘图范围和绘图对象捕捉方式.步骤二:绘制汤勺主视图.先分析汤勺的造型特点,上下可由一个椭圆经修剪得到,上椭圆尺寸是__40,下椭圆尺寸是8_30,两椭圆中心距是65.步骤三:修改完善主视图.中间联接处由直线组成,两直线一端点分别过上椭圆中心,另一端点分别相切于下椭圆轮廓两边.修剪直线和上下椭圆.再将上椭圆与直线联接处两边倒圆角R_.图3-2步骤四:绘制汤勺纵截面轮廓线.汤勺的纵截面轮廓线是一条光滑曲线,构图时可选用多义线,根据坐标值或栅格点绘出.在缺少精确尺寸时,可任选若干点拟合,用多义线Spline命令绘出其基本轮廓形状. 步骤五:修改完善汤勺纵截面轮廓线.如图所示用小圆标记的交点1.2.3.4.5.6.7处,用Spline来绘制成所需要的曲线. 注意:1处要比汤勺主视图的勺尖长些.图3-3步骤六:绘制汤勺横截面图.汤勺横截面是由两段圆弧和两段直线组成,可通过两个圆修剪而成. 步骤七:做成面域.将汤勺主视图和汤勺横截面图做成面域,在西南轴测方向观测.步骤八:做成三维实体. 图3-4先将汤勺主视图拉伸成三维,再调整汤勺纵截面轮廓线方向及横截面方向. 步骤九:拉伸成曲面实体.先将横截面移到纵截面轮廓线一端,再把纵截面轮廓线作为路径,拉伸成三维实体. 步骤十:三维实体求交运算.先将图的截面体分二次移到图平面体中部,再执行求交运算,注意两图要完全重叠,否则结果不完整.图3-5步骤十一:整理图形.上下棱边倒圆角. 步骤十二:出效果图,渲染着色显示. 图3-7图3-6CAD 绘制三维实体基础1.三维模型的分类及三维坐标系;2.三维图形的观察方法;3.创建基本三维实体;4.由二维对象生成三维实体;5.编辑实体.实体的面和边;1.建立用户坐标系;2.编辑出版三维实体.讲授8学时上机8学时总计_学时AutoCAD除具有强大的二维绘图功能外,还具备基本的三维造型能力.若物体并无复杂的外表曲面及多变的空间结构关系,则使用AutoCAD可以很方便地建立物体的三维模型.本章我们将介绍AutoCAD三维绘图的基本知识._.1 三维几何模型分类在AutoCAD中,用户可以创建3种类型的三维模型:线框模型.表面模型及实体模型.这3种模型在计算机上的显示方式是相同的,即以线架结构显示出来,但用户可用特定命令使表面模型及实体模型的真实性表现出来. _.1.1线框模型(Wireframe Model)线框模型是一种轮廓模型,它是用线(3D空间的直线及曲线)表达三维立体,不包含面及体的信息.不能使该模型消隐或着色.又由于其不含有体的数据,用户也不能得到对象的质量.重心.体积.惯性矩等物理特性,不能进行布尔运算.图_-1显示了立体的线框模型,在消隐模式下也看到后面的线.但线框模型结构简单,易于绘制. _.1.2 表面模型(Surface Model)表面模型是用物体的表面表示物体.表面模型具有面及三维立体边界信息.表面不透明,能遮挡光线,因而表面模型可以被渲染及消隐.对于计算机辅助加工,用户还可以根据零件的表面模型形成完整的加工信息.但是不能进行布尔运算.如图_-2所示是两个表面模型的消隐效果,前面的薄片圆筒遮住了后面长方体的一部分.图_-1 线框模型图_-2 表面模型_.1.3 实体模型实体模型具有线.表面.体的全部信息.对于此类模型,可以区分对象的内部及外部,可以对它进行打孔.切槽和添加材料等布尔运算,对实体装配进行干涉检查,分析模型的质量特性,如质心.体积和惯性矩.对于计算机辅助加工,用户还可利用实体模型的数据生成数控加工代码,进行数控刀具轨迹仿真加工等.如图_-3所示是实体模型.篇三:CAD三维实用建模教程---很好的资料_(图解)CAD容易学,但三维很少有人懂,在这里分享下关于cad三维建模的技巧视频和大家分享一下又想学的小盆友可以分享下一.首先让我们学习cad实体建模的相关知识和命令: e_t 闭合图形挤压命令rev 闭合图形放样命令3f绘制单面物体(可用于ls中植物贴图载体)(一)e_t 闭合图形挤压命令_绘制三个矩形和圆,可用于比较e_t命令后三种不同结果_切换到三维视图显示_这个是e_t标准(默认90)挤压命令后生成的模型(圆柱和方体)_这个是e_t挤压命令后,输入正角度后生成的模型(圆椎和棱锥)_ 这个是e_t挤压命令后,输入负角度后生成的模型(倒圆椎反棱锥)_三种不同角度挤压的结果比较_ 下面介绍通过路径挤压(用这种方法可以放样出类似天花线条的复杂模型) _注意e_t命令后,空格后,按提示输入p后,空格后点取挤压或放样的路径即可 _挤压后的简单渲染(二)rev 闭合图形放样命令_绘制剖面图形和一条放样轴线(该轴线距离剖面图形的大小,直接影响放样后模型的大小和形状),该轴线可以任意角度绘制,这样生成的模型结果都不一样,本图只以一条竖轴线作为参考._ 方便观看,切换到轴侧图显示。
C三维绘图教程与案例很实用Prepared on 21 November 2021CAD 绘制三维实体基础AutoCAD 除具有强大的二维绘图功能外,还具备基本的三维造型能力。
若物体并无复杂的外表曲面及多变的空间结构关系,则使用AutoCAD 可以很方便地建立物体的三维模型。
本章我们将介绍AutoCAD 三维绘图的基本知识。
三维几何模型分类在AutoCAD 中,用户可以创建3种类型的三维模型:线框模型、表面模型及实体模型。
这3种模型在计算机上的显示方式是相同的,即以线架结构显示出来,但用户可用特定命令使表面模型及实体模型的真实性表现出来。
线框模型(Wireframe Model)线框模型是一种轮廓模型,它是用线(3D 空间的直线及曲线)表达三维立体,不包含面及体的信息。
不能使该模型消隐或着色。
又由于其不含有体的数据,用户也不能得到对象的质量、重心、体积、惯性矩等物理特性,不能进行布尔运算。
图11-1显示了立体的线框模型,在消隐模式下也看到后面的线。
但线框模型结构简单,易于绘制。
表面模型(Surface Model )表面模型是用物体的表面表示物体。
表面模型具有面及三维立体边界信息。
表面不透明,能遮挡光线,因而表面模型可以被渲染及消隐。
对于计算机辅助加工,用户还可以根据零件的表面模型形成完整的加工信息。
但是不能进行布尔运算。
如图11-2所示是两个表面模型的消隐效果,前面的薄片圆筒遮住了后面长方体的一部分。
实体模型 实体模型具有线、表面、体的全部信息。
对于此类模型,可以区分对象的内部及外部,可以对它进行打孔、切槽和添加材料等布尔运算,对实体装配进行干涉检查,分析模型的质量特性,如质心、体积和惯性矩。
对于计算机辅助加工,用户还可利用实体模型的数据生成数控加工代码,进行数控刀具轨迹仿真加工等。
如图11-3所示是实体模型。
11.2 三维坐标系实例——三维坐标系、长方体、倒角、删除面AutoCAD 的坐标系统是三维笛卡儿直角坐标系,分为世界坐标系(WCS )和用户坐标系(UCS )。
图11-4表示的是两种坐标系下的图标。
图中“X ”或“Y ”的剪头方向表示当前坐标轴X 轴或Y 轴的正方向,Z 轴正方向用右手定则判定。
图11-1 线框模型图11-2 表面模型图11-3 实体模型1、三维模型的分类及三维坐标系;2、三维图形的观察方法;3、创建基本三维实体;4、由二维对象生成三维实体;5、编辑实体、实体的面和边;缺省状态时,AutoCAD 的坐标系是世界坐标系。
世界坐标系是唯一的,固定不变的,对于二维绘图,在大多数情况下,世界坐标系就能满足作图需要,但若是创建三维模型,就不太方便了,因为用户常常要在不同平面或是沿某个方向绘制结构。
如绘制图11-5所示的图形,在世界坐标系下是不能完成的。
此时需要以绘图的平面为XY 坐标平面,创建新的坐标系,然后再调用绘图命令绘制图形。
绘图步骤分解: 1.绘制长方体调用长方体命令:实体工具栏:下拉菜单:[绘图][实体] [长方体] 命令窗口:BOX图11-4 表示坐标系的图标用户坐标系世界坐标图11-5 在用户坐标系下绘图任务:绘制如图11-5所示的实体。
目的:通过绘制此图形,学习长方体命令、实体倒角、删除面命令和用户坐标系的建立方法。
知识的储备:基本绘图命令和对象捕捉、对象追踪的应用。
指定长方体的角点或 [中心点(CE)] <0,0,0>:在屏幕上任意点单击指定角点或 [立方体(C)/长度(L)]:L角用于二维图形的倒角、圆角编辑命令在三维图中仍然可用。
单击“编辑”工具栏上的倒角按钮,调用倒角命令:命令: _chamfer(“修剪”模式) 当前倒角距离 1 = ,距离 2 =选择第一条直线或 [多段线(P)/距离(D)/角度(A)/修剪(T)/方式(M)/多个(U)]:在AB 直线上单击基面选择...输入曲面选择选项 [下一个(N)/当前(OK)] <当前>:动坐标系,绘制上表面圆图11-6 绘制长方体图11-7 长方体倒角因为AutoCAD只可以在XY平面上画图,要绘制上表面上的图形,则需要建立用户坐标系。
由于世界坐标系的XY面与CDEF面平行,且X轴、Y轴又分别与四边形CDEF的边平行,因此只要把世界坐标系移到CDEF面上即可。
移动坐标系,只改变坐标原点的位置,不改变X、Y轴的方向。
如图11-8所示。
(1)移动坐标系在命令窗口输入命令动词“UCS”,AutoCAD提示:命令: ucs当前 UCS 名称: *世界*输入选项[新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/应用(A)果倒角或圆角所创建的面不合适,可使用 “删除面”命令删除,调用删除面命令方法: 实体编辑工具栏:下拉菜单:[修改][实体编辑][删除面]观察三维图形——绘制球、视图、三维动态观察器、布尔运算在绘制三维图形过程中,常常要从不同方向观察图形,AutoCAD 默认视图是XY平面,方向为Z 轴的正方向,看不到物体的高度。
AutoCAD 提供了多种创建3D 视图的方法沿不同的方向观察模型,比较常用的是用标准视点观察模型和三维动态旋转方法。
我们这里只介绍这两种常用方法。
标准视点观察实体工具栏如图11-12所示。
任务:绘制如图11-13所示的物体图11-8 改变坐标系 图11-9 绘制上表面圆 图11-10 绘制侧面上圆图11-11 绘制侧面上圆 图11-12 视图工具栏图11-13 股子目的:通过绘制此物体,掌握用标准视点和用三维动态观察器旋转方法观察模型,使用圆角命令、布尔运算等编辑三维实体的方法。
知识的储备:基本绘图命令、使用对象捕捉、建立用户坐标系绘图步骤分解:1.绘制正方体(1)新建两个图层:层名颜色线型线宽实体层白色 Continues 默认辅助层黄色 Continues 默认并将实体层作为当前层。
单击“视图”工具栏上“西南等轴测”按钮,将视点设置为西南方向。
(2)绘制正方体在“实体”工具栏上单击“长方体”按钮,调用长方体命令:命令: _box指定长方体的角点或 [中心点(CE)] <0,0,0>:在屏幕上任意一点单击指定角点或 [立方体(C)/长度(L)]: C.选择对象:在立方体上单击找到 1 个选择对象:选择对象:在球体上单击找到 1 个选择对象: 图11-22 长方体圆角 图11-14 立方体 图11-15 绘制球 图11-16 挖坑图11-17 挖两点坑(b) (a)图11-19 三维动态观察图11-20 挖六点坑 图11-18 绘制三点坑图11-21 挖坑完成图11-23 长方体圆角图11-24 ISOLINES 对图形显示的影响ISOLINES=4 ISOLINES=12图11-25 布尔运算图11-26 电视塔图11-27 环图11-28 绘制环珠图11-29 阵列准备图11-30 拱形体图11-34 旋转实体图11-31 绘制长方形和圆图11-32 面域计算图11-33 路径拉伸图11-35 绘制截面(a)(b)图11-36 180°和270°图11-39 底板实体图11-40 圆筒端面图11-38 平面图形图11-42 完整的实体.图11-41 圆筒图11-43 切割成两部分的实体图11-37 轴承坐(a)(b)(c)图11-44 半剖的实体图11-45 切割实体(a)(b)图11-46 工字钢(a)(b)图11-47垫块实体(a)(b)图11-48创建原图形(a)(b)图11-49 移动面(a)(b)图11-50 旋转面图11-51 着色面、复制面(a)(b)(c)图11-52 抽屉实体.) <1>: 2指定行间距 (---): 100指定列间距 (|||): 100指定层间距 (...): -110结果如图11-59所示。
3.压印调用压印命令: 实体编辑工具栏:图11-53 抽壳、复制边(b)(a )图11-54 制作抽屉面图11-55 对齐面图11-57 平面图形 图11-58 绘制表面圆 图11-56 环形孔板(a) (b) (c)命令: _solidedit实体编辑自动检查: SOLIDCHECK=1输入实体编辑选项 [面(F)/边(E)/体(B)/放弃(U)/退出(X)] <退出>: _body输入体编辑选项[压印(I)/分割实体(P)/抽壳(S)/清除(L)/检查(C)/放弃(U)/退出(X)] <退出>: _imprint选择三维实体:选择实体选择要压印的对象:选择一个圆是否删除源对象 [是(Y)/否(N)] <N>:Y选择要压印的对象:选择另一个圆是否删除源对象 [是(Y)/否(N)] <N>:……逐个选择各个圆,完成8个圆的压印。
压印结果同上步,如图11-59所示。
4.拉伸面调用“实体编辑”工具栏上的“拉伸面”命令,选择各个圆内的表面,以-10的高度拉伸表面,得到8个通孔。
结果如图11-56(a)所示。
5.3D镜像命令: _mirror3d选择对象: 选择实体找到 1 个选择对象:指定镜像平面 (三点) 的第一个点或 [对象(O)/最近的(L)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] <三点>:选择端面点A在镜像平面上指定第二点:选择端面点B在镜像平面上指定第三点:选择端面点C是否删除源对象[是(Y)/否(N)] <否>:图11-59 阵列圆图11-60 镜像图11-61 环形阵列图11-62 分割(a)(b)(c)图11-63清除(a)(b)图11-64箱体(a)(b)图11-65倒圆角长方体图11-66抽壳图11-67耳板端面图11-68拉伸耳板切(1)剖切实体成前后两部分调用“剖切”命令: 命令: _slice选择对象: 找到 1 个 选择对象:指定切面上的第一个点,依照 [对象(O)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] <三点>:选择中点A 指定平面上的第二个点:选择中点B 指定平面上的第三个点:选择中点C在要保留的一侧指定点或 [保留两侧(B)]: B图11-69镜像耳板 图11-70旋转箱体图11-71 创建顶面方孔 (a )(b ) (c )图11-72 创建凸台(a )(b )图11-73 倒圆角 (a ) (b )结果如图11-74(a)所示。
(2)剖切前半个实体调用剖切命令: 命令: _slice选择对象: 选择前半个箱体 找到 1 个 选择对象:指定切面上的第一个点,依照 [对象(O)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] <三点>:选择中点D 指定平面上的第二个点: 选择中点F 指定平面上的第三个点: 选择中点E在要保留的一侧指定点或 [保留两侧(B)]: 在右侧单击 结果如图11-74(b )所示。