DL_Attributes
通常是 DXF 库中用于存储图形实体属性的类。在 DXF 文件中,每个图形实体都可以具有一系列属性,如颜色、线型、线宽等。DL_Attributes
类用于封装和管理这些属性,以便在创建、编辑和显示图形实体时使用。
以下是一个简单的伪代码示例,展示了如何使用 DL_Attributes
类来设置和获取图形实体的属性:
DL_Attributes attributes;
// 设置属性值
attributes.setColor(DL_Codes::black); // 设置颜色为黑色
attributes.setLineWidth(0.5); // 设置线宽为0.5
// 获取属性值
int color = attributes.getColor(); // 获取颜色值
double lineWidth = attributes.getLineWidth(); // 获取线宽值
在上面的示例中,我们创建了一个 DL_Attributes
对象 attributes
,并使用该对象的方法来设置和获取图形实体的属性。通过调用 setColor
和 setLineWidth
方法,我们设置了图形实体的颜色和线宽属性,然后通过 getColor
和 getLineWidth
方法获取这些属性的值。
DL_Attributes
类的具体方法和属性可能会根据您所使用的 DXF 库的实现有所不同,具体取决于库的设计和功能。通常,您可以在 DXF 库的文档或源代码中找到关于 DL_Attributes
类的详细信息,包括其方法、属性和用法示例。
老版源码:
/****************************************************************************
** 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_ATTRIBUTES_H
#define DL_ATTRIBUTES_H
#include "dl_global.h"
#include <string>
#include <vector>
#include "dl_codes.h"
/**
* Storing and passing around attributes. Attributes
* are the layer name, color, width and line type.
*
* @author Andrew Mustun
*/
class DXFLIB_EXPORT DL_Attributes
{
public:
/**
* Default constructor.
*/
DL_Attributes() :
layer( "" ),
color( 0 ),
color24( -1 ),
width( 0 ),
linetype( "BYLAYER" ),
linetypeScale( 1.0 ),
handle( -1 ),
inPaperSpace( false )
{
}
/**
* Constructor for DXF attributes.
*
* @param layer Layer name for this entity or NULL for no layer
* (every entity should be on a named layer!).
* @param color Color number (0..256). 0 = BYBLOCK, 256 = BYLAYER.
* @param width Line thickness. Defaults to zero. -1 = BYLAYER,
* -2 = BYBLOCK, -3 = default width
* @param linetype Line type name or "BYLAYER" or "BYBLOCK". Defaults
* to "BYLAYER"
*/
DL_Attributes( const std::string& alayer,
int acolor, int awidth,
const std::string& alinetype,
double alinetypeScale ) :
layer( alayer ), color( acolor ), color24( -1 ), width( awidth ),
linetype( alinetype ), linetypeScale( alinetypeScale ),
handle( -1 ), inPaperSpace( false )
{
}
/**
* Constructor for DXF attributes.
*
* @param layer Layer name for this entity or NULL for no layer
* (every entity should be on a named layer!).
* @param color Color number (0..256). 0 = BYBLOCK, 256 = BYLAYER.
* @param color24 24 bit color (0x00RRGGBB, see DXF reference).
* @param width Line thickness. Defaults to zero. -1 = BYLAYER,
* -2 = BYBLOCK, -3 = default width
* @param linetype Line type name or "BYLAYER" or "BYBLOCK". Defaults
* to "BYLAYER"
*/
DL_Attributes( const std::string& alayer,
int acolor, int acolor24, int awidth,
const std::string& alinetype, int ahandle = -1 ) :
layer( alayer ),
color( acolor ), color24( acolor24 ),
width( awidth ), linetype( alinetype ), linetypeScale( 1.0 ),
handle( ahandle ),
inPaperSpace( false )
{
}
/**
* Sets the layer. If the given pointer points to NULL, the
* new layer name will be an empty but valid string.
*/
void setLayer( const std::string& alayer )
{
layer = alayer;
}
/**
* @return Layer name.
*/
std::string getLayer() const
{
return layer;
}
/**
* Sets the color.
*
* @see DL_Codes, dxfColors
*/
void setColor( int acolor )
{
color = acolor;
}
/**
* Sets the 24bit color.
*
* @see DL_Codes, dxfColors
*/
void setColor24( int acolor )
{
color24 = acolor;
}
/**
* @return Color.
*
* @see DL_Codes, dxfColors
*/
int getColor() const
{
return color;
}
/**
* @return 24 bit color or -1 if no 24bit color is defined.
*
* @see DL_Codes, dxfColors
*/
int getColor24() const
{
return color24;
}
/**
* Sets the width.
*/
void setWidth( int awidth )
{
width = awidth;
}
/**
* @return Width.
*/
int getWidth() const
{
return width;
}
/**
* Sets the line type. This can be any string and is not
* checked to be a valid line type.
*/
void setLinetype( const std::string& alinetype )
{
linetype = alinetype;
}
/**
* Sets the entity specific line type scale.
*/
void setLinetypeScale( double alinetypeScale )
{
linetypeScale = alinetypeScale;
}
double getLinetypeScale() const
{
return linetypeScale;
}
/**
* @return Line type.
*/
std::string getLinetype() const
{
if( linetype.length()==0 )
{
return "BYLAYER";
}
else
{
return linetype;
}
}
void setHandle( int h )
{
handle = h;
}
int getHandle() const
{
return handle;
}
void setInPaperSpace( bool on )
{
inPaperSpace = on;
}
bool isInPaperSpace() const
{
return inPaperSpace;
}
private:
std::string layer;
int color;
int color24;
int width;
std::string linetype;
double linetypeScale;
int handle;
// DXF code 67 (true: entity in paper space, false: entity in model space (default):
bool inPaperSpace;
};
#endif
// EOF