Dxf库中的DL_Extrusion类

  • 类DL_Extrusion

DL_Extrusion 是 DXF 库中的一个类,用于表示三维实体的扩展信息。在 DXF 文件中,DL_Extrusion 类通常用于表示具有高度的三维图形实体,如立方体、圆柱体等,以及其它具有体积的几何对象。

以下是一个简单的示例代码,展示了如何使用 DL_Extrusion 类来创建一个简单的三维实体并将其写入 DXF 文件:

#include <iostream>
#include "dl_creationadapter.h"
#include "dl_dxf.h"
#include "dl_writerascii.h"class MyExtrusion : public DL_CreationAdapter {
public:void addExtrusion() {DL_ExtrusionData data;data.basePoint.set(0.0, 0.0, 0.0);data.axis.set(0.0, 0.0, 1.0);data.length = 10.0;data.angle = 0.0;data.radius = 2.0;addExtrusion(data);}void addExtrusion(const DL_ExtrusionData& data) {addExtrusion(data.basePoint.x, data.basePoint.y, data.basePoint.z,data.axis.x, data.axis.y, data.axis.z,data.length, data.angle, data.radius);}void addExtrusion(double x, double y, double z,double nx, double ny, double nz,double length, double angle, double radius) {DL_Extrusion extrusion(x, y, z, nx, ny, nz, length, angle, radius);addEntity(&extrusion);}
};int main() {DL_Dxf dxf;MyExtrusion creationAdapter;creationAdapter.addExtrusion();dxf.write("output.dxf", &creationAdapter);std::cout << "DXF 文件已生成。" << std::endl;return 0;
}

在上面的示例中,我们定义了一个名为 MyExtrusion 的类,继承自 DL_CreationAdapter。在 addExtrusion 方法中,我们创建了一个 DL_ExtrusionData 对象,设置了基本点、轴向、长度、角度和半径等参数,并调用 addExtrusion 方法添加了一个 Extrusion 实体。然后在 main 函数中,我们创建了一个 DXF 对象,调用 write 方法将添加的实体写入 DXF 文件中。

请注意,以上示例仅用于演示目的,实际使用时需要根据您的需求和 DXF 库的具体接口进行调整。

  • 方法setElevation 

在 DXF 库中的 DL_Extrusion 类中,setElevation 方法通常用于设置或更改 Extrusion 实体的高度或海拔值。在三维空间中,高度通常表示对象在 z 轴上的位置,即垂直于 XY 平面的距离。通过调用 setElevation 方法,您可以指定 Extrusion 实体在 z 轴上的位置,从而改变其在三维空间中的位置。

以下是一个简单的伪代码示例,展示了如何使用 setElevation 方法来设置 Extrusion 实体的高度:

DL_Extrusion extrusion;
double elevation = 5.0;  // 设置高度为 5.0extrusion.setElevation(elevation);

在上面的示例中,我们创建了一个名为 extrusion 的 DL_Extrusion 对象,并将高度值设置为 5.0,然后调用 setElevation 方法将这个高度值应用到 Extrusion 实体上。这样,实体的位置就会相应地在 z 轴上移动 5 个单位距禿

请注意,setElevation 方法的确切用法可能会根据您所使用的 DXF 库的 API 设计略有不同,具体取决于库的实现方式和参数设置。

  • 老版库头文件实现
/****************************************************************************
** Copyright (C) 2001-2013 RibbonSoft, GmbH. All rights reserved.
**
** This file is part of the dxflib project.
**
** This file is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** Licensees holding valid dxflib Professional Edition licenses may use
** this file in accordance with the dxflib Commercial License
** Agreement provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.ribbonsoft.com for further details.
**
** Contact info@ribbonsoft.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/#ifndef DL_EXTRUSION_H
#define DL_EXTRUSION_H#include "dl_global.h"#include <math.h>/*** Extrusion direction.** @author Andrew Mustun*/
class DXFLIB_EXPORT DL_Extrusion
{
public:/*** Default constructor.*/DL_Extrusion(){direction = new double[3];setDirection( 0.0, 0.0, 1.0 );setElevation( 0.0 );}/*** Destructor.*/~DL_Extrusion(){delete[] direction;}/*** Constructor for DXF extrusion.** @param direction Vector of axis along which the entity shall be extruded*                  this is also the Z axis of the Entity coordinate system* @param elevation Distance of the entities XY plane from the origin of the*                  world coordinate system*/DL_Extrusion( double adx, double ady, double adz, double aelevation ){direction = new double[3];setDirection( adx, ady, adz );setElevation( aelevation );}/*** Sets the direction vector.*/void setDirection( double dx, double dy, double dz ){direction[0]    = dx;direction[1]    = dy;direction[2]    = dz;}/*** @return direction vector.*/double* getDirection() const{return direction;}/*** @return direction vector.*/void getDirection( double dir[] ) const{dir[0]  = direction[0];dir[1]  = direction[1];dir[2]  = direction[2];}/*** Sets the elevation.*/void setElevation( double aelevation ){this->elevation = aelevation;}/*** @return Elevation.*/double getElevation() const{return elevation;}/*** Copies extrusion (deep copies) from another extrusion object.*/DL_Extrusion operator =( const DL_Extrusion& extru ){setDirection( extru.direction[0], extru.direction[1], extru.direction[2] );setElevation( extru.elevation );return *this;}private:double* direction;double  elevation;
};#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python接口自动化测试数据和代码分离解析

common中存放的是整个项目中公共使用的封装方法 从工程目录上可以看到区分 datas中专门存放测试数据(yml文件) cases中专门集中存放测试用例 ... 数据分离的第一步先找到工程项目路径 1 2 3 4 5 6 7 8 9 10 11 12 # -*- encoding: utf-8 -*- """ __Software…

6月28日PolarDB开源社区长沙站,NineData联合创始人周振兴将带来《数据库DevOps最佳实践》主题分享

6月28日&#xff08;周五&#xff09;&#xff0c;PolarDB 开源社区将来到湖南长沙&#xff0c;与湖南的开发者朋友们一起进行数据库技术交流&#xff01;NineData 联合创始人周振兴受邀参加&#xff0c;并将带来《数据库 DevOps 最佳实践》的主题分享。 本次活动议程&#xff…

GEE问题——EEException:未注册 Earth Engine 或项目未注册。

问题 EEException:未注册 Earth Engine 或项目未注册。 EEException: Not signed up for Earth Engine or project is not registered. 解决方案 在谷歌社区里面这个问题已经被记录了: [Notice] Removing access for unregistered Cloud projects on 2024-06-17 查看下…

SpringBoot集成IotDB

1、引入依赖 <dependency><groupId>org.apache.iotdb</groupId><artifactId>iotdb-session</artifactId><version>0.14.0-preview1</version></dependency><dependency><groupId>cn.hutool</groupId><a…

JAVA小知识29:IO流(上)

IO流是指在计算机中进行输入和输出操作的一种方式&#xff0c;用于读取和写入数据。IO流主要用于处理数据传输&#xff0c;可以将数据从一个地方传送到另一个地方&#xff0c;例如从内存到硬盘&#xff0c;从网络到内存等。IO流在编程中非常常见&#xff0c;特别是在文件操作和…

如何使用Java中的正则表达式

如何使用Java中的正则表达式 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java开发中&#xff0c;正则表达式是处理文本和字符串的重要工具。本文将介绍如何…

第4章 客户端-Java客户端Jedis

1.获取Jedis maven配置加入项目中 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.2</version> </dependency>2.Jedis的基本使用 Jedis的使用方法非常简单&#xff0c;只要下面三…

陕西师范大学的教育学、汉语语言文学、外国语言文学(英语)和历史学专业的招聘专业要求

结合西安教师招聘汇公众号的信息以及参考文章中的相关内容&#xff0c;对于陕西师范大学的教育学、汉语语言文学、外国语言文学&#xff08;英语&#xff09;和历史学专业的招聘专业要求&#xff0c;可以做出如下总结和推荐&#xff1a; 教育学专业 专业要求与特点&#xff1…

每天一个数据分析题(三百八十七)- 线性回归分析

下列关于线性回归分析中的残差&#xff08;Residuals&#xff09;的假设说法正确的是&#xff1f; A. 残差均值总是为零 B. 残差均值总是小于零 C. 残差均值总是大于零 D. 以上说法都不对 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取…

首次30米空间分辨率生成中国年度耕地栅格数据1986-2021

中国1986-2021年30米分辨率年度耕地数据集 数据介绍 精确、详细且及时的耕地范围信息对于粮食安全保障和环境可持续性至关重要。然而&#xff0c;由于农业景观的复杂性和足够训练样本的缺乏&#xff0c;在大范围下进行高时空分辨率的耕地动态监测仍然具有挑战性&#xff0c;尤其…

如何在next14项目中加入favicon

如何在next14项目中加入favicon 第一次碰见这个问题的时候很头疼&#xff0c;直接搜官方文档也没有详细介绍这个&#xff0c;但其实next14提供了很简单的方法&#xff1a; Convention 将 favicon.ico 放置在 app/ 或 public/ 文件夹中&#xff0c;Next.js 将自动生成必要的元…

基于深度学习的双目重建

基于深度学习的双目重建 双目重建是通过从两个相机视角的图像中提取深度信息&#xff0c;重建场景的三维结构。传统的双目重建方法依赖于特征匹配和几何计算&#xff0c;而基于深度学习的方法通过训练神经网络&#xff0c;可以直接从图像对中学习到深度信息和场景的三维结构。…

通俗易懂的理解zookeeper的作用

举个例子&#xff0c;乌鸡国国王想找唐僧师徒安排点任务&#xff0c;所以乌鸡国国王找了唐僧师徒团队的leader唐僧&#xff0c;因为唐僧可以管理团队的成员&#xff0c;知道团队内的大大小小事情。唐僧协调安排了合适的人帮乌鸡国国王解决需求。 那么leader唐僧&#xff0c;实…

ChatGPT的原理简介

ChatGPT的原理简介 目录 ChatGPT简介自然语言处理基础 词嵌入序列模型注意力机制 生成式预训练模型 Transformer架构GPT模型 ChatGPT的工作原理 预训练微调生成回复 应用和局限 应用场景局限和挑战 未来发展方向总结 ChatGPT简介 ChatGPT是OpenAI开发的一种生成式预训练模型…

sql优化方法

基础优化方法 1.使用索引&#xff0c;在创建索引时&#xff0c;需要考虑查询的频率和数据的更新频率&#xff0c;避免过度索引或不必要的索引。 2.尽量避免使用SELECT *&#xff0c;而是明确指定需要查询的字段。这样可以减少返回的数据量&#xff0c;提高查询效率。 优化查询…

洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼

在互联网时代&#xff0c;App推广和运营面临着前所未有的挑战。流量红利逐渐衰退&#xff0c;用户获取成本不断攀升&#xff0c;如何确保在多变的互联网环境下&#xff0c;迅速搭建起能时刻满足用户需求的运营体系&#xff0c;成为众多企业急待解决的问题。今天&#xff0c;我们…

docker部署FastDFS整合Springboot

文章目录 1、FastDFS是什么&#xff1f;2、搭建docker环境3、部署fastdfs4、整合springboot5、接口测试参考文章 1、FastDFS是什么&#xff1f; FastDFS是一个开源的轻量级分布式文件系统&#xff0c;它对文件进行管理&#xff0c;功能包括&#xff1a;文件存储、文件同步、文…

聚星文社官网

推文工具可以帮助你将小说内容简洁明了地转化为推文形式&#xff0c;以便更好地在社交媒体上进行宣传和推广。以下是一些建议的小说推文工具&#xff1a; 聚星文社 字数统计工具&#xff1a;使用字数统计工具&#xff0c;如Microsoft Word或在线字数统计器&#xff0c;来确保你…

[JS]对象

介绍 对象是一种无序的数据集合, 可以详细的描述某个事物 事物的特征在对象中用属性来表示, 事物的行为在对象中用方法来表示 使用 创建对象 let 对象名 {属性名&#xff1a;值&#xff0c;方法名&#xff1a;函数&#xff0c; } let 对象名 new Object(); 对象名.属性…

【MySQL】记一次 SQL 优化

1 背景 我们的数据库中配置了一套慢 SQL 的监控(这里存在 SQL 本身不慢, 但是触发某些场景, 比如 filesort 等也会被采集), 会不定时的输出一批需要排查的 SQL, 下面挑了几条比较有意思的进行分享。 2 table_1 表结构: CEATE TABLE table_1 (column_1,column_2,column_3,co…