- 博客(37)
- 资源 (4)
- 收藏
- 关注
原创 AcDbTable
AcDbTable *pTab = new AcDbTable;AcGePoint3d pInsert = AcGePoint3d(0, 0, 0);AcDbDictionary *pDict = NULL;//格式设置AcDbObjectId idTblStyle;acdbHostApplicationServices()->workingDatabase()->getTab
2016-08-30 11:21:02 2305 1
原创 ACAPDocument
ObjectARX中引入了用来管理文档的应用程序范围(新建和切换文档)和文档范围(对当前文档的图形数据库进行编辑和修改)。需要注意的是,在应用程序范围内工作,如果要修改某个文档中的图形数据库,就需要通过acDocManager->unlockDocument->lockDocument(acDocManager->curDocument())和acDocManager->unlockDocum
2016-08-26 16:21:40 1953
原创 组词典
组词典将多个图形对象编组存储,存储后的效果:可以通过组来找到所需要的实体,在界面上选中一个就可以找到其他实体,(即选中的为一个组)。但是与块对比,不同的是将实体分组并不形成新的实体对象。在CAD中的的命令为group创建组词典:AcDbGroup *pGroup = new AcDbGroup;for (int i = 0; i {pGroup->append(entI
2016-08-26 13:52:27 1827
原创 CAD 选择集
CAD中构建选择集的两个函数:acedSSAdd和acedSSGet,但是都需要使用acedSSFree来释放内存空间。1. int acedSSAdd(const ads_name ename, const ads_name sname, ads_name result);若ename和sname都是空指针,则创建一个未包含任何成员的选择集。若ename指向有效的实体,而sname为
2016-08-26 10:16:57 3580
原创 读写配置文件中的数据
主要的读取函数DWORD dwCharacters = ::GetPrivateProfileString(strFieldName, //节名strKeyName, //键名strDefault, //如果键名不存在,搜索默认键strTemp.GetBuffer(bufferLength), //缓冲区指针,获取读取的字符串bufferLength,
2016-08-25 16:52:19 400
原创 修改块的方法+AcGeMatrix3d+AcGeScale3d+两点之间的距离
开发过程中,当从外部获取了一个,需要修改块中的实体时,有以下几种方法。1.第一个通过explode函数炸开AcDbBlockReference,获取块参照中的实体对象,然后遍历对象,找到修改的实体,完成修改后将所有的实体插入到模型空间。注意的是:炸开块参照并不是将已经插入到模型空间中的参照分解,而是在内存中创造一个分解后的对象。其对象并没有存在于数据库中。所以第一种方法一般用于将块参照
2016-08-23 11:03:52 2809
原创 CAD 4种反应器
CAD中4种反应器:按照执行的先后顺序分别为 文档反应器、编辑器反应器、数据库反应器。文档反应器当用户输入命令和命令结束之时,文档反应器函数documentLockModeChanged(XXXXX, const char* pGlobalCmdName)函数将会被调用。命令输入完成之后,pGlobalCmdName的值为该命令,命令结束之时pGlobalCmdName的值为#+该命令
2016-08-17 15:12:08 6656
原创 CAD+开发小结+交互+选择集+深度拷贝AcDbObjectId中指向的实体集+读取其他DWG文件
深度拷贝将数组中的实体ID指向的实体拷贝至blockId为ID的块中AcDbIdMapping adimIdMap;AcApDocument* pDoc = acDocManager->curDocument();acDocManager->lockDocument(pDoc, AcAp::kWrite);//锁定当前文档acdbHostApplicationSer
2016-08-16 17:35:42 5111
原创 设置显示实体的颜色 byLayer/byBlock
在CAD界面上显示时,其颜色属性可以设置为byLayer或者byBlock。byLayer:实体的颜色和实体所在的图层保持一致。byBlock:实体的颜色和实体所在的块保持一致。但是,块中的实体都是一个个独立的对象,相互之间并没有直接的联系。所以仅仅讲一个对象设置为byBlock,并不能使它与整体保持一致。byBlock的真正含义在于将一些列对象以一个块的形式显示出来,然后调整块的
2016-08-16 17:33:21 8192
原创 AcDbBlockTableRecord+AcDbBlockReference AcDbAttribute+AcDbAttributeDefination 项目总结
AcDbBlockTableRecord:块表记录或块定义 AcDbBlockReference:块引用 意味着这个变量指向的是一个真正的块。概念辨析:在CAD中,块和块表记录是不同的概念。类比于类与对象。而块中的实体又类似于对象中的成员变量。所以,AcDbBlockTableRecord为块表记录,类似于一个模板,所有的块都是仿照这个模板构造的。需要显示的实体都需要添加到AcDb_M
2016-08-15 16:13:03 5191
转载 MFC + 自定义类的序列化与反序列化
使类可序列化需要五个主要步骤。从 CObject 派生类(或从 CObject 派生的某个类中派生)。重写 Serialize 成员函数。使用 DECLARE_SERIAL 宏(在类声明中)。定义不带参数的构造函数。为类在实现文件中使用 IMPLEMENT_SERIAL 宏。如果直接调用 Serialize 而不是通过 CArchive 的“>>”和“从 CObject 派
2016-08-10 17:08:29 2341
转载 MFC 中切换资源的两种方式
方法一:AFX_MANAGE_STATE(AfxGetAppModuleState());// MFC扩展dll或AFX_MANAGE_STATE( AfxGetStaticModuleState());//常规Regular dll方法二:HMODULE hDLL=GetModuleHandle("SourceChange.dll"); HINSTANCE hEXE=AfxGe
2016-08-10 13:44:28 2519
转载 SVN中tag branch trunk用法详解
http://developer.51cto.com/art/201005/201718.htm本节主要讲解一下SVN中tag branch trunk的用法,在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆。这里就向大家简单介绍一下,欢迎大家能和我一起学习SVN中tag branch trunk的用法。在实现上,branch和tag,对于svn都是使用copy实
2016-08-10 10:19:37 663
转载 WChar_t 字符集的操作函数
函数介绍:wcslen() 类似与char*类型作参数的strlen()函数 用来获取wchar_t*变量的长度(不包含终结符)wcscpy() 类似与char*类型作参数的strcpy()函数 用来进行wchar_t*变量之间的复制同样的还有 wcsncpy()wcscmp() 类似与char*类型的strcmp()函数 用
2016-08-10 08:43:20 6568
转载 MFC + 线程访问窗口资源的问题(规则DLL)
我们在设计平台类应用程序时,常常会受到一些特殊UI的影响,例如,在一个算法平台中,要加入一个特殊算法的配置对话框,这时,平台维护工程师,肯定不想把这个对话框放在平台中,一是当前的对话框压根和当前模块的业务没有任何关系,另外,平台工程师也不想陷入无尽的UI编写中。 这时,我们可以把这些特殊的UI放在不同的模块中,平台只要调用就可以了。 想法固然是好,但在实践中因为对线程状态
2016-08-09 16:45:28 1105
转载 DLL+资源模块切换
MFC程序中存在一个模块状态(Module State)的问题,也就是资源重复的问题。(此处的术语模块是指一个可执行程序,或指其操作不依赖于应用程序的其余部分但使用MFC运行库的共享副本的一个DLL(或一组DLL)。我们所创建的MFC DLL就是这种模块的一个典型实例。) 在每个模块(EXE或DLL)中,都存在一种全局的状态数据,MFC依靠这种全局的状态数据来区分不同的模块
2016-08-09 15:15:51 1450
转载 MFC CFileDialog + 对文件的读写操作
CFileDialog(Bool bOpenFileDialog, 为True时为打开对话框,为False时为另存为对话框LPCTSTR lpszDefExt = NULL, 默认的文件扩展名LPCTSTR lpszFileName = NULL, 初始文件名 DWORD dwFlags = OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, 对话
2016-08-08 10:18:28 823
转载 MFC CMenu类
CMenu类的主要成员函数 MFC为菜单的操作提供了CMenu类,下面鸡啄米就常用的几个成员函数进行简单的介绍。 BOOL LoadMenu(UINT nIDResource); 加载菜单资源,并将其附加到CMenu对象上。参数nIDResource指定了要加载的菜单资源的ID。如果菜单加载成功则返回TRUE,否则返回FALSE。
2016-08-05 10:30:48 1988
转载 MFC 基于对话框程序添加菜单项
VS2010的MFC对话框程序中添加菜单栏的过程,我大致分了这五步。 一、将Menu加入Resource视图中在WorkSpace中的Resource视图下,在任意一个文件夹图标上,右击选择Insert(插入)选项,在弹出的对话框中选择Menu以后,再点击,new按钮,菜单就会添加成功了,但是现在还没有完成,还不能进行编译,因为现在的菜单时空的,在编译的时候会被清除的。
2016-08-05 10:14:37 1328
转载 MFC 单文档、多文档和对话框程序
基于MFC的单文档,多文档,对话框应用程序基于对话框(3个类):CAboutDlg程序名App程序名Dlg单文档(5个类):CAboutDlgCMainFrame程序名App程序名Doc程序名View多文档(6个类):CAboutDlgCMainFrame程序名App程序名Doc程序名ViewCChildFra
2016-08-05 09:20:55 6314
转载 MFC CPropertySheet控件
步骤一:新建一个对话框。步骤二:新建三个属性页对话框资源(IDD_PROPPAGE_LARGE)。并对新建的三个属性页对话框生成三个类,基类为CPropertyPage。步骤三:插入一个新的类,用于创建属性表单,基类为CPropertySheet。步骤四:在属性表单的构造函数中调用AddPage,将属性页加入到属性表单中。先在属性表单中定义三个属性页的对象,代码如下:
2016-08-05 09:07:24 2106
转载 MFC Extend CcomboBox
Extended Combo Box的功能比Combo Box更多一点.其中有个功能就是可以在选项前加个图标. 先添加一个Extended Combo Box控件.并给它添加一个变量cbBoxE. CImageList* pImageList; //相当于一个特殊数组,但是它保存的是图片 p
2016-08-04 15:47:28 1179
转载 MFC CcomboBox控件
组合框控件简介 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直显示的,效果如下图: 下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框,列表
2016-08-04 15:14:46 1409
转载 MFC RichEdit控件
在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者 AfxInitRichEdit2 否则的话 程序会起不来.也没有任何错误信息.这俩函数 是加载 Riched20.dll(Riched32.dll )的.1.设置edit只读属性 方法一: m_edit1.SetR
2016-08-04 14:50:09 675
转载 List Control总结
1.新建对话框MFC,在对话框上放一个ListCtrlID:IDC_PATHView:Report2.为ListCtrl添加变量右击->添加变量m_wndPath3.找到OnInitDialog()函数添加如下代码:[cpp] view plain copy [cpp] view pl
2016-08-04 13:32:20 413
转载 MFC ListControl
1.ListControl的基本创建。// 基本设置m_ListCtrl.DeleteAllItems();m_ListCtrl.InsertColumn(0, _T("NBA"));m_ListCtrl.InsertColumn(1, _T("Final Champion"));m_ListCtrl.SetRedraw(FALSE);//创建行int m_inde
2016-08-04 11:38:36 405
转载 MFC TreeViewControl
树形控件的创建 MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。下面主要讲后者。 CTreeCtrl类的Create成员函数的原型如下: v
2016-08-04 10:37:43 1799
转载 MFC ListBox Control用法
1添加数据声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.m_ListBox_Content.AddString(_T("123"));m_ListBox_Content.AddString(_T("汉字"));m_ListBox_Content.AddString(_T("English"));m_ListBox
2016-08-04 09:04:23 4340
转载 MFC模式对话框与非模式对话框 消息处理顺序 与非模式对话框的焦点问题、显示、关闭以及交互问题
对话框有两种创建方式:DoModal和Creat。 其中DoModal创建的是模态的对话框,而Creat创建的是非模态的对话框下面总结下他们的不同。对于模态的对话框,在该对话框被关闭前,用户将不能在同一应用程序的其他地方进行工作(例如open file对话框),而对于非模态的对话框,在它留在屏幕上的同时可以在其他的地方进行工作,(例如find file对话框)Create的Di
2016-08-02 15:35:05 1582
转载 控件关联变量
控件是对话框的重要组成部分,控件的访问可以通过关联变量实现,包括关联数据变量和控制变量。DDX_Text:将控件与成员变量关联,放在DoDataExchange中,管理对话框、表格视或控件视对象中的编辑控件与对话框、表格视或控件视对象的CString型数据成员之间的int,UINT,long,DWORD,CString,float或double型数据交换。当我们为控件关联变量时,会自动添加
2016-08-02 14:45:49 1706
转载 HWnd和CWnd的获取函数
顺便记录一下有关窗口对象指针和窗口句柄相关的函数。Win32 API函数对窗口的操作总是需要一个窗口句柄(hWnd)来指向需要操作的对象;比如::SetWindowPos(hWnd,...)而MFC内,窗口句柄已经包含在对象成员内,需要的是指向窗口对象的指针(pWnd),这样就可以对此对象的成员函数操作了。比如pWnd->SetWindowPos(...)常用获得函数:
2016-08-02 14:41:07 1424
转载 CWND和HWND之间的关系和转换 和获取方法
CWnd与HWND的区别 (2014-04-02 15:08:40)转载▼标签: cwnd hwnd mfc fromhandle getsafehandle() it分类: StudyNotes一、区别HWND是句柄,CWnd是MFC窗体类,CWnd
2016-08-02 14:35:16 12626
原创 运用扩展实体构建链表
//由于句柄在应用程序中可以唯一标示一个实体,因为它是由数据库决定的,不会由于实体的变动而导致变化。对象ID可能由于多次重复打开而改变。//但是不同的实体可能有相同的一个句柄AcDbHandle AdsNameToHandler(ads_nameen){ AcDbObject*pObj; AcDbObjectIdpObjId;
2016-08-02 09:22:01 632
原创 扩展实体
扩展实体对象Xrecord,它是AcDbxrecord的对象实例扩展实体对象实际上是结果缓冲区列表,存储一个数据组列表,每一个节点都有一个DXF码来标示实体的类型设置和获取结果缓冲区链表Acad::ErrorStatusAcDbXrecord::setFromRbChain(resbuf& pRb, AcDbDatabase* auxDb = NULL);Acad::Error
2016-08-01 15:42:12 1402
转载 图块引用、属性块引用、创建新层表、ObjectArx开发中静态变量和全局变量要点
一.图块设计技术: 在AutoCAD数据库中,以各图块实际上市存储在块表记录里的实体集合。每个图块从一格AcDbBlockBegin对象开始,紧接着是一个或多个AcDbEntity对象,最后以AcDbBolckEnd对象结束,按其所属关系得层次结构分为三层:第一层为块表,是属于数据库管理的根对象;第二层为块表记录,是属于块表管理的对象;第三层为组成图块的实体对象,是属于块表记录管理
2016-08-01 15:03:24 4209
原创 词典
符号表中都有一个迭代器。可以由一下函数生成。Acad::ErrorStatus ACDBXXXTable::newIterator(AcDbXXXTableIterator*& pIterator,Adesk::Boolean atBeginning =Adesk::Ktrue, ktrue代表从第一个开始,kFalse为从末尾开始Adesk::BooleanSkipErased = A
2016-08-01 14:37:58 942
原创 符号表
符号表:每一个符号表对象都提供getAt函数来获取指定名称记录。Acad::ErrorStatus getAt(const char*pEntryName, 需要获取对象的名称AcDb::OpenMode mode, 打开方式XXXTableRecord* &pRecord, 获取的表记录对象Ade
2016-08-01 10:18:42 2592
UML面向对象建模基础
2016-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人