QuantyView3D二次开发学习笔记
三维对象的创建
创建三维点
- 涉及到的类
1.CGV3dLayer 图层类
可以划分成CGV-3d-Layer三段来记忆,重点是Layer
2.CGV3dPoint点类
emm,感觉都有前缀CGV3d
- 涉及到的方法
1.GetDocument() -获取当前文件,返回一个IDocument类型的指针
2.GetCurrentLayer() -获取当前图层,放回一个CGV3dLayer的指针类型,指向当前图层,注意:这个方法是CGV3dProject类的一个方法,而貌似当前文件中有m_Project这个属性,类型正是CGV3dProject
3.PromptError(String)返回一个带有信息的错误提示对话框
4.CGV3dPoint的无参构造方法,创建一个三维点
CGV3dPoint* p=new CGV3dPoint;
5.SetPosition(float,float,float)设置三维点的位置,属于CGV3dPoint的方法
6.AddObject(三维对象)将创建好的三维对象添加进入当前图层,是CGV3dLayer的方法
//获取当前图层
CGV3dLayer*layer=GetDocument()->m_Project.GetCurrentLayer();
//判断当前图层是否为空
if(!layer)return PromptError("请设置当前图层");
//创建一个三维点
CGV3dPoint*p=new CGV3dPoint();
//设置三维点的坐标为默认坐标原点
p->SetPosition(0,0,0);
//将三维点加入当前图层
layer->AddObject(p);
结果如下:中间红色的小点就是我们创建的三维点
创建三维线
好了,我们已经学会了如何创建一个三维点,现在学习创建三维线,由于和创建三维点有很多相似的地方,所以重复的地方我们不再赘述,重点讲解新增的东西
- 涉及到的类
1.CGV3dPolyline三维线类 - 涉及到的方法
1.三维线类的构造方法,创建一个三维线
2.AddTail(float,float,float)将点添加到构造线的工作中,由于两点成线,所以我们只需要添加两次就就可以了。
实例代码如下
//1.获取当前图层
CGV3dLayer*layer=GetDocument()->m_Project.GetCurrentLayer();
if(!layer)return PromptError("请设置当前图层");
//2.创建三维线
CGV3dPolyline*l1=new CGV3dPolyline;
l1->AddTail(0,0,0);
l1->AddTail(0,0,1);
//3.将三维线添加入当前图层中
layer->AddObject(l1);
结果如下:
创建三维面
- 涉及到的类
1.CGV3dPolygon
- 涉及到的方法
1.构造方法
2.AddTail 将构成面的点要素添加进去,CGV3dPolygon的方法
3.MakeDefaultPolygons();也是属于CGV3dPolygon的方法,不知道是什么作用,emm
//1.获取当前图层
CGV3dLayer*layer=GetDocument()->m_Project.GetCurrentLayer();
if(!layer)return PromptError("请设置当前图层");
//2.创建三维面
CGV3dPolygon*p1=new CGV3dPolygon;
//三点确定一面
p1->AddTail(0,0,0);
p1->AddTail(0,1,0);
p1->AddTail(1,0,0);
p1->MakeDefaultPolygons();
//3.将三维线添加到当前图层中去
layer->AddObject(p1);
结果如下:
创建三维体
- 涉及到的类
1.CGV3dPolyhedron- 三维体类型 - 涉及到的方法
1.MakeDefaultPolyhedron()- 设置创建的三维体样式,参数设置为0的话为棱锥,1的话为愣住
代码如下
//1.获取当前图层
CGV3dLayer*layer=GetDocument()->m_Project.GetCurrentLayer();
if(!layer)return PromptError("请设置当前图层");
//2.创建三维四面体
CGV3dPolyhedron*p1=new CGV3dPolyhedron;
//添加底面需要的点
p1->AddTail(0,0,0);
p1->AddTail(0,1,0);
p1->AddTail(1,0,0);
//添加顶面
p1->AddTail(0,0,1);
//设置默认体类型
p1->MakeDefaultPolyhedron(0);
//3.将三维体添加到当前图层中去
layer->AddObject(p1);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!