ObjectARX_控件(线型、颜色、线宽、字体)

2023-10-19 02:20

本文主要是介绍ObjectARX_控件(线型、颜色、线宽、字体),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.线型控件:CAcUiLineTypeComboBox

在其他中添加需要的线型

class CLineTypeComboBox : public CAcUiLineTypeComboBox
{
public:CLineTypeComboBox ();virtual ~CLineTypeComboBox ();virtual BOOL OnSelectOther (BOOL isOther2, int curSel, int& newSel);virtual void OnComboBoxInit ();    
}; 
#include "StdAfx.h"
#include "LineTypeComboBox.h"CLineTypeComboBox::CLineTypeComboBox()
{
}CLineTypeComboBox::~CLineTypeComboBox()
{
}void CLineTypeComboBox::OnComboBoxInit ()
{	Acad::ErrorStatus es;//用父类初始化CAcUiLineTypeComboBox::OnComboBoxInit();	std::vector<CString> arrstrLtName;//如果需要添加新线型,只需定义好新的宏名,在此加入即可...arrstrLtName.push_back(HH_NEWLINETYPE_001);arrstrLtName.push_back(HH_NEWLINETYPE_002);//新建线型,使用户在界面上能够选择到新增的线型AcDbDatabase *pCurDb=acdbHostApplicationServices()->workingDatabase();AcDbLinetypeTable  *pLinetypeTable;	es = pCurDb->getSymbolTable(pLinetypeTable, AcDb::kForWrite);if (es != Acad::eOk){return;}int i=0;for (i=0; i<(int)arrstrLtName.size(); i++){CString strLtName = arrstrLtName.at(i);if (!pLinetypeTable->has(strLtName)){AcDbLinetypeTableRecord  *pLinetypeRecord = new AcDbLinetypeTableRecord;pLinetypeRecord->setName(strLtName);if (i == 0){pLinetypeRecord->setComments(_T("新增线型")+strLtName+_T("—>————<—"));	}else if (i == 1){pLinetypeRecord->setComments(_T("新增线型")+strLtName+_T("—>>———<<—"));	}AcDbObjectId idLT = AcDbObjectId::kNull;es =  pLinetypeTable->add(idLT,pLinetypeRecord);CString LtName = strLtName;CAcUiLTypeRecord* pLTypeRecord = CreateLTRecord(LtName, idLT);CAcUiLineTypeComboBox::AddLTypeToControl(pLTypeRecord);pLinetypeRecord->close();}}pLinetypeTable->close();	
};	BOOL CLineTypeComboBox::OnSelectOther(BOOL isOther2, int curSel, int& newSel)
{return __super::OnSelectOther(isOther2, curSel, newSel);
}

加载线型文件

TCHAR sLineTypeFile[256];if (ads_findfile( _T("HHCAD.LIN"),sLineTypeFile)==RTNORM){acdbLoadLineTypeFile(_T("continuousx"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO02W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO02W100x"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO07W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO10W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO10W100x"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("DASHED2"),sLineTypeFile,NULL);}

2.颜色控件:CAcUiColorComboBox

int nColor = 1;//黑色
nIndex = m_cmbColor.FindItemByColorIndex(nColor);
if (nIndex > -1)m_cmbColor.SetCurSel(nIndex);

3.线宽控件:CAcUiLineWeightComboBox

4.字体控件:

//====================================
// 函数名称	: GetDirFiles
// 函数介绍	: 取得某目录下所有指定属性的文件名
// 返 回 值	: 选择的文件夹全路径
//
//====================================
bool CAppUtility::GetDirFiles( LPCTSTR lpDir,//目录					  std::vector<CAppUtility::_FileStru_>&arr,// 返回文件
LPCTSTR lpExt/*="*.*"*/,// 寻找的文件类型
bool bIsIncludeSub/* = true*/// 是否包含子目录)
{CString szPath = lpDir;if ( szPath.IsEmpty() )return false;if ( szPath.Right(1) != _T('\\') )szPath += _T("\\");// 进入路径if ( _tchdir(szPath) != 0 )return false;_FileStru_ aFile;_tcscpy(aFile.szPath, szPath);// 路径intptr_t hHand = _tfindfirst(lpExt, &aFile);if ( -1 == hHand )return false;for (int nRet=0; nRet!=-1; nRet=_tfindnext(hHand, &aFile)){// 判断如果是.或..则继续循环if ( 0 == _tcscmp(aFile.name, _T(".")) ||0 == _tcscmp(aFile.name, _T("..")) )continue;// 如果是目录,则进入if ( aFile.IsDir() ){if ( !bIsIncludeSub )continue;CString szSub = szPath + aFile.name+_T("\\");GetDirFiles(szSub, arr, lpExt, bIsIncludeSub);}else{_stprintf(aFile.szPath, _T("%s%s"), szPath, aFile.name);// 分解文件名与后缀 CString strTemp(aFile.name);// 从后向前分离出文件名、格式名(以.为分界符) int nPos = strTemp.ReverseFind(_T('.'));if ( -1 != nPos ){_tcscpy(aFile.strExtOnly, strTemp.Mid(nPos+1,strTemp.GetLength()-nPos));strTemp = strTemp.Mid(0,nPos);}			elseaFile.strExtOnly[0] = _T('');_tcscpy(aFile.strNameOnly, strTemp);arr.push_back(aFile);}}_findclose(hHand);return true;
}extern "C" __declspec(dllexport) int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
{CComboBox *pComb = (CComboBox *) ((void*)lparam);pComb->AddString(lpelf->elfLogFont.lfFaceName);	//Stylereturn 1;
}void InitFontCmb()
{LOGFONT lf;CClientDC dc (this);lf.lfCharSet =  ANSI_CHARSET; //中国标准字体_tcscpy(lf.lfFaceName,_T("")); //设置Style::EnumFontFamiliesEx((HDC) dc,&lf,(FONTENUMPROC)EnumFontFamProc,(LPARAM) (&m_cmbFont),0);// 寻找字体std::vector<CAppUtility::_FileStru_>arrSHX;CAppUtility::GetDirFiles(CAppUtility::GetCADPath()+_T("Font"), arrSHX, _T("*.shx"), true);CAppUtility::GetDirFiles(CAppUtility::GetPathFont(), arrSHX, _T("*.shx"), true);for (int i=0; i<(int)arrSHX.size(); ++i){if ( m_cmbFont.FindString(-1, arrSHX[i].strNameOnly) != -1 )continue;m_cmbFont.AddString(arrSHX[i].strNameOnly);}
}

 

 

转载于:https://my.oschina.net/u/2930533/blog/1575940

这篇关于ObjectARX_控件(线型、颜色、线宽、字体)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236646

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤