




已阅读5页,还剩82页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ObjectARX Training 华中科技大学CAD中心 武汉天喻软件有限责任公司 2010年2月 Object ARX1T i a n y u S o f t ObjectARX应用的介绍 ObjectARX是一个仅在AutoCAD上进行二 次开发的一套开发环境,通俗点讲就是一 系列的API ObjectARX的应用举例: 扩展AutoCAD功能 为各种工程设计开发便利的工具 Object ARX2T i a n y u S o f t ObjectARX概述 ARXAutoCAD Runtime eXtension DBX DataBase eXtension ARX = .DLL + 2 exported functions acrxEntryPoint AcDbDatabase * pDb = acdbHostApplicationServices()-workingDatabase(); AcDbBlockTable *pBlockTable; eRet = pDb-getBlockTable(pBlockTable, AcDb:kForRead); if ( eRet != Acad:eOk) return eRet; AcDbBlockTableRecord *pBlockTableRecord; eRet = pBlockTable-getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb:kForWrite); if ( eRet != Acad:eOk) pBlockTable-close(); return eRet; pBlockTable-close(); eRet = pBlockTableRecord-appendAcDbEntity(EntId, pEnt); if ( eRet != Acad:eOk) pBlockTableRecord-close(); return eRet; pBlockTableRecord-close(); return Acad:eOk; Object ARX13T i a n y u S o f t 怎样遍历AutoCAD图形数据库? void FindObjectId(AcDbObjectId AcDbBlockTable *pBlockTable; pDb-getBlockTable(pBlockTable, AcDb:kForRead); AcDbBlockTableRecord *pBlockTableRecord; pBlockTable-getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb: kForRead); pBlockTable-close(); AcDbBlockTableRecordIterator *pIter; pBlockTableRecord- newIterator(pIter); / Create an iterator for (pIter-start(); !pIter-done(); pIter-step() . AcDbEntity *pEntity; if (pIter-getEntity(pEntity, AcDb:kForRead) != Acad:eOk) continue; If(pEntity-isKindOf(AcDbCircle:desc() objId = pEntity- ObjectId(); pBlockTableRecord- close(); Object ARX14T i a n y u S o f t 怎样创建和使用已有的AutoCAD图 形数据库? 要使用AcDbDatabase数据库,与使用其它数据库一样,首先要声明一个数据库对象。 AcDbDatabase类的声明,调用类的构造函数: AcDbDatabase :AcDbDatabase(bool buildDefaultDrawing = true, bool noDocument = false); 其中,buildDefaultDrawing参数控制是否创建一个包括所有默认数据记录的数据库。 该参数的默认值为true,这样在AcDbDatabase数据库创建时,将在新建的数据库中包含一个 AutoCAD图形数据库必须包含的基本数据要素,这些要素包括九个符号表及其初始记录(比如0 层、STANDARD文字样式等),命名对象词典(组词典和多线样式词典)以及必要的系统变量设置 。这样就可以向新建的数据库中添加各种实体和对象。如:AcDbDatabase *pDb= new AcDbDatabase(true); 若指定该参数为false,AutoCAD将创建一个完全空的AcDbDatabase数据库。这样的 AcDbDatabase数据库不能直接向其中添加实体或对象,需读入一个图形文件来拓展该图形数 据库,然后再逐步添加或修改数据库中的实体或对象。 读入图形数据库使用函数:AcadErrorStatus AcDbDatabase:readDwgFile(const char* fileName ); 若要使用已有的图形,比如“test.dwg”文件,则使用下列代码: AcDbDatabase *pDb= new AcDbDatabase(false); pDb-readDwgFile(“test.dwg”); AcDbDatabase构造函数的noDocument参数控制打开的数据库是否与当前文档关联,此参数用 于“多文档处理”中。 注意:在这种情况下,AcDbdatabase()的参数必须指定为false(当然,0或者Adesk:kFalse都可 以)。因为使用pDb-readDwgFile()函数时,pDb必须是一个完全空白的数据库,也就是说,哪 怕使用了AcDbDatabase(false);新建数据库后,只要对数据库进行了操作,就不能再使用 readDwgFile()函数,否则会导致严重的内存错误。 Object ARX15T i a n y u S o f t 数据库对象AcDbObject概述 每一个数据库对象具有以下三种表示方法 : 句柄AcDbHandle 对象idAcDbObjectId 指针AcDbObect * Object ARX16T i a n y u S o f t 三者之间的相互关系 注意: Handle不变 ,ObjectId变化 Object ARX17T i a n y u S o f t 之间相互关系和转换 1. AcDbHandle - AcDbObjectId AcDbDatabase :getAcDbObjectId( 2. AcDbObjectId - AcDbHandle AcDbHandle = AcDbObjectId:handle (); 3.AcDbObjectId - AcDbObject * acdbOpenObject(AcDbObject * 4.AcDbObject * - AcDbHandle AcDbHandle = AcDbObject:getAcDbHandle(); 5.ads_name 和 AcDbObjcetId 一个ads_name 是 一个包含两个long型元素的数组 这个数组的第一个元素就是AcDbObjcetId 6. ads_name 和 AcDbObjcetId相互转换 acdbGetAdsName(ads_name, objId); acdbGetObjectId(objId, ads_name); Object ARX18T i a n y u S o f t 怎样访问数据库对象? 打开对象的方法: acdbOpenObject()该函数为模板函数,能打开任意对象 acdbOpenAcDbObject() acdbOpenAcDbEntity() 打开对象的模式: AcDb:kForRead /只读 AcDb:kForWrite /可写 AcDb:kForNotify /通知 升级和降级访问: AcDbObject:upgradeOpen(); /升级为写 AcDbObject:downgradeOpen(); /降级为读 删除对象 AcDbObject:erase() Object ARX19T i a n y u S o f t 用事务方式访问 事务 AcTransaction * AcTransactionManager:startTransaction AcTransactionManager:endTransaction() AcTransactionManager:abortTransaction(), virtual Acad:ErrorStatus getObject(AcDbObject* if (curEntity-isKindOf(AcDbEllipse:desc() If(curEntity-isA() = AcDbEllipse:desc() AcDbLine * pLine = AcDbLine :cast(curEntity ) Object ARX22T i a n y u S o f t AutoCAD里的交互 AcEd 全局函数 String, number acquisition acedGetInt used to get an integer value acedGetReal used to get a real value acedGetString used to get a string acedGetDist used to get the distance between two points Point, angle acquisition acedGetAngle used to get a angle value acedGetPoint used to pick a point acedGetCorner Entity selection acedEntSel used to select a single entity acedNEntSel used to select a single, nested entity acedNEntSelP used to select a single, nested entity acedSSGet used to select multiple entities Others acedGetKword used to get a key word acedInitGet used to initialize acedGetXXXX functions acedGetFileD used to retrieve file selection from a file dialog Object ARX23T i a n y u S o f t 向ACAD发送命令 acedCommand:立即执行 acedCommand(RTSTR, “zoom“, RTSTR, “e“, 0); sendStringToExecute:作为下一个命令执行 CString strCmd; strCmd.Format(“_HNBMReservedAreaModified %d %d “, (long)ReservedAreaHandle, nType); acDocManager- sendStringToExecute(acDocManager- curDocument(), strCmd, false, true, false); 共同点:都不能执行有用户交互的命令 Object ARX24T i a n y u S o f t WCS,UCS,OCS(ECS) 规则:数据库中对象保存的点坐标是WCS坐标(建议); 而一些acedXX函数(如acedGetPoint,acedEntSel等) 、list命令一般是UCS坐标。 WCS与UCS相互转换 /UCS坐标系 fromrb.restype = RTSHORT; fromrb.resval.rint = 1; /WCS坐标系 torb.restype = RTSHORT; torb.resval.rint = 0; acedTrans(pt_ucs, acdbUcs2Wcs acdbWcs2Ucs AcDbEntity:getEcs Object ARX25T i a n y u S o f t UCS常用函数及类 函数:Acad:ErrorStatus acedGetCurrentUCS(AcGeMatrix3d (以下函数和类可看作符号表的操作模式) 函数:Acad:ErrorStatus getSymbolTable(AcDbUCSTable* 类:AcDbUCSTable 类:AcDbUCSTableRecord Object ARX26T i a n y u S o f t ARX应用向导 应用向导:ObjectARX 2006的在 ObjectARX 2006utilsObjARXWiz目录 下。 功能:与MFC应用向导类似 产生工程 产生特定类及函数 Object ARX27T i a n y u S o f t ARX,DBX加载/卸载 加载 ap(appload) arx 其它方式(lisp文件,注册表等) 卸载 ap arx Object ARX28T i a n y u S o f t ARX软件结构 加载:On_kInitAppMsg 卸载:On_kUnloadAppMsg 命令映射(arx2006或以上): static void INTECAD_INTESelect(void) ACED_ARXCOMMAND_ENTRY_AUTO(CINTECA DApp, INTECAD, _INTESelect, INTESelect, ACRX_CMD_TRANSPARENT, NULL) Object ARX29T i a n y u S o f t ARX Object ARX30T i a n y u S o f t 对话框 资源转换,多个ARX时可能需要 CAcModuleResourceOverride resOverride; 或 AfxSetResourceHandle (_hdllInstance) ; AfxSetResourceHandle (acedGetAcadResourceInstance () ; Object ARX31T i a n y u S o f t 菜单与工具条 通过菜单文件 COM方式添加 Object ARX32T i a n y u S o f t 例1:基本操作 建立应用程序 建立命令 实现功能:选中一实体,然后输出其信息 Object ARX33T i a n y u S o f t 例2:重复产生同半径的圆 对话框输入半径 用鼠标指定圆心 Object ARX34T i a n y u S o f t 数据库结构查看工具 ARXDBG工具的使用 位置:ObjectARX 2006samplesdatabaseARXDBG 文档:ArxDbg.doc Object ARX35T i a n y u S o f t 本节结束 下节将介绍自定义实体的内容 Object ARX36T i a n y u S o f t 自定义对象类 一般从 AcDbObject 或AcDbEntity派生 AcDbObject:不须显示,如字典对象 AcDbEntity:可显示/操作的实体 从其他(如AcDbLine等实体类)派生:根据需要 自定义类可继续从另一个自定义继承,从 而继承体系成树状结构 编写时遵守一定的规则 放在DBX工程中 Object ARX37T i a n y u S o f t 自定义类特点 头文件 ACRX_DECLARE_MEMBERS ACDB_REGISTER_OBJECT_ENTRY_AUTO 版本 CPP文件 ACRX_DXF_DEFINE_MEMBERS AcDbProxyEntity:kNoOperation assertReadEnabled ()与assertWriteEnabled () ; 读写控制 显示刷新 UNO/REDO Object ARX38T i a n y u S o f t DBX加载/卸载 在ARX中调用 acrxLoadModule/acrxUnloadModule ARX在使用DBX的LIB库时,可能会出现诸如 :acrxGetApiVersion找不到或ARX加载失败的问 题.解决方法: 在ARX和DBX工程中都增加def文件,文件内容如 下: EXPORTS acrxEntryPointPRIVATE acrxGetApiVersion PRIVATE Object ARX39T i a n y u S o f t 自定义对象-读入/写出 作用 文件(DWG,DXF)读写 UNDO/REDO CLONE 函数 virtual Acad:ErrorStatus dwgInFields(AcDbDwgFiler* filer); virtual Acad:ErrorStatus dwgOutFields(AcDbDwgFiler* filer) const; virtual Acad:ErrorStatus dxfInFields(AcDbDxfFiler* filer); virtual Acad:ErrorStatus dxfOutFields(AcDbDxfFiler* filer) const; Object ARX40T i a n y u S o f t AcDbDwgFiler 类中常用函数 virtual Acad:ErrorStatus readInt32(Adesk:Int32*) virtual Acad:ErrorStatus writeInt32(Adesk:Int32) virtual Acad:ErrorStatus readString(char*) virtual Acad:ErrorStatus writeString(const char*) virtual Acad:ErrorStatus readPoint3d(AcGePoint3d*) virtual Acad:ErrorStatus writePoint3d(const AcGePoint3d pFiler-readString( m_strPanelType=str; acutDelString(str); Object ARX41T i a n y u S o f t 自定义对象-显示 函数: virtual Adesk:Boolean worldDraw( AcGiWorldDraw* mode); virtual void viewportDraw(AcGiViewportDraw* mode); 区别 worldDraw函数用来生成跟视图无关的几何图形,它只生成一组几何 图形,其他的因为视图的变化而导致的几何图形变化都由AutoCAD来 自动调整,举个例子,你生成一个立方体,这个立方体从不同的角度 看所看到的外形是不一样的,但是worldDraw只生成一个角度的几何 图形,其他的都由AutoCAD来自动的调整了。 viewportDraw则不同,它可以根据不同的视图生成不同的几何图形, 当你的视图改变的时候,它自动将几何图形调整到正确的状态。有时 候这两个函数需要配合使用,例如,如果你画圆,那就可以用 worldDraw,因为无论你怎么变换视图圆还是圆。但是如果你生成一 些表示立体的几何图形有时候就需要借助于viewportDraw了,因为对 于立体图形来说不同的视图看到的是不一样的。 举个例子来说明其区别就是worldDraw画出来的立体图形,你改变了 角度(也算viewport改变)后看到的有可能就不是立体图形了,但是 你用viewportDraw画出来的就不会出现这样的问题。 Object ARX42T i a n y u S o f t AcGiWorldDraw与 AcGiViewportDraw 类似,但AcGiViewportDraw有视口相关的 矩阵和方向函数 通过geometry得到绘图类 AcGiWorldGeometry 的对象 通过subEntityTraits得到环境设置类 AcGiSubEntityTraits 对象 Object ARX43T i a n y u S o f t AcGiWorldGeometry与 AcGiGeometry circle circularArc Polyline(多段线) polygon text pline(多义线,类似于AcDbPolyline) Object ARX44T i a n y u S o f t AcGiSubEntityTraits 常用函数 virtual void setColor(const Adesk:UInt16 color) = 0; virtual void setTrueColor(const AcCmEntityColor virtual void setLayer(const AcDbObjectId layerId) = 0; virtual void setLineType(const AcDbObjectId linetypeId) = 0; virtual void setFillType(const AcGiFillType) = 0; virtual void setLineWeight(const AcDb:LineWeight lw) = 0; virtual void setLineTypeScale(double dScale = 1.0) = 0; 注意 一个自定义对象的不同部分可分属不同层 是否填充只针对circle,polygon等封闭图形 Object ARX45T i a n y u S o f t 例1 自定义实体-读写/显示 生成一等边三角形的自定义实体 中心 外接圆半径 方位角 Object ARX46T i a n y u S o f t 自定义对象-夹点 virtual Acad:ErrorStatus getGripPoints(AcGePoint3dArray virtual Acad:ErrorStatus moveGripPointsAt( const AcDbIntArray Object ARX47T i a n y u S o f t 自定义对象-移动 virtual Acad:ErrorStatus transformBy( const AcGeMatrix3d Object ARX48T i a n y u S o f t 自定义对象-拷贝 virtual Acad:ErrorStatus deepClone(AcDbObject* pOwnerObject, AcDbObject* virtual Acad:ErrorStatus wblockClone(AcRxObject* pOwnerObject, AcDbObject* Object ARX49T i a n y u S o f t 自定义对象-炸开 virtual Acad:ErrorStatus explode(AcDbVoidPtrArray Object ARX50T i a n y u S o f t 自定义对象-捕捉点 virtual Acad:ErrorStatus getOsnapPoints( AcDb:OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d Object ARX51T i a n y u S o f t 自定义对象-范围 virtual Acad:ErrorStatus getGeomExtents(AcDbExtents Object ARX52T i a n y u S o f t 自定义对象-list 作用:调试检查用. virtual void list() const; Object ARX53T i a n y u S o f t 自定义对象-相交点 virtual Acad:ErrorStatus intersectWith(const AcDbEntity* pEnt,AcDb:Intersect intType,AcGePoint3dArray Object ARX54T i a n y u S o f t 自定义对象- sub事件 virtual Acad:ErrorStatus subErase(Adesk:Boolean erasing); virtual Acad:ErrorStatus subOpen(AcDb:OpenMode mode); virtual Acad:ErrorStatus subClose(); Object ARX55T i a n y u S o f t 理解拖动夹点与平移实体的工作方式 在拖动夹点时,ACAD调用自定义对象重载的 moveGripPointsAt函数。但这时你要注意:此时的this 指针指向的自定义对象A并非数据库中待修改的对象B ,A只是ACAD复制的一个用于操作的临时对象,它的 所有持久性(即保存到文件中的)参数与B相同,非持 久性参数保持构造函数时的值。A并没有被加入到数据 库中,所以在moveGripPointsAt不能通过database()函 数获取数据库指针;A中的参数没有累积性,即在 moveGripPointsAt中更改了一个类成员变量m的值,下 一次调用moveGripPointsAt时,m的值与B中m值相同, 而不是修改过的值。 transformBy与moveGripPointsAt类似。 Object ARX56T i a n y u S o f t 本节结束 下节将介绍自定义对象生成与编缉 双击修改 动态生成(Jig) 属性页 Object ARX57T i a n y u S o f t 实体的双击修改 在ARX工程中:从AcDbDoubleClickEdit派生并重载函数: virtual void startEdit(AcDbEntity *pEnt, AcGePoint3d pt); virtual void finishEdit(void); 在On_kInitAppMsg中: if(!acrxDynamicLinker- loadModule(/*MSG0*/“ACDBLCLKEDITPE.ARX“,Adesk:kFalse) AfxMessageBox(“ACDBLCLKEDITPE.ARX Load Failed“); / Initialize Double Click Editing AcDbDoubleClickEdit:rxInit(); acrxBuildClassHierarchy(); TYTriangleDoubleClickEdit *pTriangleDoubleClickEdit=new TYTriangleDoubleClickEdit; TYTriangle:desc()- addX(AcDbDoubleClickEdit:desc(),pTriangleDoubleClickEdit); Object ARX58T i a n y u S o f t 实体的双击修改 On_kUnloadAppMsg函数中: TYTriangle:desc()- delX(AcDbDoubleClickEdit:desc(); startEdit函数 文档加锁 设置资源 显示对话框 修改实体 文档解锁 Object ARX59T i a n y u S o f t 例1:自定义实体的双击修改 可改: 外接圆半径 填充 Object ARX60T i a n y u S o f t 动态创建 AcEdJig virtual DragStatus sampler () ; virtual Adesk:Boolean update () ; virtual AcDbEntity *entity () const ; DragStatus drag(); Object ARX61T i a n y u S o f t Object ARX62T i a n y u S o f t AcEdJIg中的用户输入函数 DragStatus acquireString(char *str); DragStatus acquireAngle(double DragStatus acquireAngle(double DragStatus acquireDist(double DragStatus acquireDist(double DragStatus acquirePoint(AcGePoint3d DragStatus acquirePoint(AcGePoint3d 注意:不能使用acedXXX函数 Object ARX63T i a n y u S o f t AcEdJig:其它函数 const char* keywordList(); void setKeywordList(const char*); const char* dispPrompt(); void setDispPrompt(const char*, .); AcEdJig:CursorType specialCursorType(); void setSpecialCursorType(CursorType); AcEdJig:UserInputControls userInputControls(); void setUserInputControls(AcEdJig:UserInputControls); Object ARX64T i a n y u S o f t 例2:动态生成自定义实体 用向导生成或手工书写 向导生成的AcEdJig派生类有错: 头文件中除去ACRX_DECLARE_MEMBERS CPP文件中除去 ACRX_CONS_DEFINE_MEMBERS Object ARX65T i a n y u S o f t 练习 自定义实体 具有N条边的多边形 画出多边形及外接圆 可输入边数N和外接圆半径 动态创建 在创建过程中显示图形 在创建过程中显示并可修改尺寸(选作) 双击修改 Object ARX66T i a n y u S o f t 属性页 优点: 可批量修改多个实体的属性 操作步骤少 与ACAD的已有操作更加一致 缺点: 实现有点复杂 用户操作习惯问题 Object ARX67T i a n y u S o f t 生成工程 标准ATL工程 Object ARX68T i a n y u S o f t 生成ATL类 派生 接口 IDL DBX中实体类中: 头文件: static bool s_bHasClsid; static CLSID s_clsid; 实现: initCLSID() getClassID Object ARX69T i a n y u S o f t 属性名称及分组 GetDisplayName GetCategoryName ShowProperty Object ARX70T i a n y u S o f t 预定义值 GetPredefinedStrings GetPredefinedValue Object ARX71T i a n y u S o f t 显示对话框 MapPropertyToPage IOPMPropertyDialog Object ARX72T i a n y u S o f t 字典 字典内可保存多个从AcDbObject派生的 对象 可用于保存全局变量,选项设置 Object ARX73T i a n y u S o f t AcDbDictionary *pNameDict; AcDbDictionary *pNameList; pDb-getNamedObjectsDictionary(pNameDict,AcDb:kForWrite); if (pNameDict-getAt(“TYSOFTHNBMCAD_DICT“,(AcDbObject* AcDbObjectId DictId; pNameDict-setAt(“TYSOFTHNBMCAD_DICT“, pNameList, DictId); pNameDict-close(); /打开或创建控制信息对象 AcDbObjectId objId; HNBMDictItem *pDictItem; if(pNameList-getAt(“TYSOFTHNBMCAD_DICT_ITEM“, objId) = Acad:eKeyNotFound) pDictItem = new HNBMDictItem; Acad:ErrorStatus err=pNameList-setAt(“TYSOFTHNBMCAD_DICT_ITEM“, pDictItem, objId); if(err!=Acad:eOk) acutPrintf(“nerror in set archinfo!“); delete pDictItem; pNameList-close(); return; pDictItem-close(); pNameList-close(); Object ARX74T i a n y u S o f t AcDbDictionary *pNameDict; AcDbDictionary *pNameList; pDb-getNamedObjectsDictionary(pNameDict,AcDb:kForRead); if (pNameDict-getAt(“TYSOFTHNBMCAD_DICT“,(AcDbObject* return NULL; pNameDict-close(); AcDbObjectId objId; HNBMDictItem *pDictItem; if(pNameList-getAt(“TYSOFTHNBMCAD_DICT_ITEM“, objId)= Acad:eKeyNotFound) pNameList-close(); return NULL; pNameList-close(); if (acdbOpenObject(AcDbObject* Object ARX75T i a n y u S o f t 层 AcDbLayerTable *pLayerTable; es=pDB-getSymbolTable(pLayerTable, AcDb:kForWrite); if(es!=Acad:eOk) pLinetypeTable-close(); return; if(!pLayerTable-has(“木作线(RoomLine)“) pLayerTableRecord =new AcDbLayerTableRecord; pLayerTableRecord-setName(“木作线(RoomLine)“); pLayerTableRecord-setIsFrozen(false); pLayerTableRecord-setIsOff(false); pLayerTableRecord-setIsLocked(false); pLayerTableRecord-setVPDFLT(false); color.setColorIndex(3); pLayerTableRecord-setColor(color); pLinetypeTable-getAt(“Continuous“, LinetypeId); pLayerTableRecord-setLinetypeObjectId(LinetypeId); pLayerTableRecord-setLineWeight(AcDb:kLnWtByLwDefault); pLayerTable-add(pLayerTableRecord); pLayerTableRecord-close(); pLayerTable-close(); Object ARX76T i a n y u S o f t 线型 pDB-loadLineTypeFile(“DASHED“, “acad.lin“);/虚线 pDB-loadLineTypeFile(“CENTER”, “acad.lin”);/中心线 AcDbLinetypeTable *pLinetypeTable=NULL; Acad:ErrorStatus es=pDB-getSymbolTable(pLinetypeTable, AcDb:kForRead); if(es!=Acad:eOk) return; AcDbLayerTable *pLayerTable; es=pDB-getSymbolTable(pLayerTable, AcDb:kForRead); if(es!=Acad:eOk) pLinetypeTable-close(); return; AcDbObjectId LinetypeId; pLinetypeTable-getAt(“CENTER“, LinetypeId); pLineTypeTable-close(); Object ARX77T i a n y u S o f t 文字样式 AcDbTextStyleTable *pTextStyleTable=NULL; Acad:ErrorStatus es=pDB-getSymbolTable(pTextStyleTable, AcDb:kForWrite); if(es=Acad:eOk) if(!pTextStyleTable-has(“宋体-35“) AcDbTextStyleTableRecord *pTextStyleTableRecord=new AcDbTextStyleTableRecord; pTextStyleTableRecord-setName(“宋体-35“); pTextStyleTableRecord-setFont(“宋体“, FALSE, FALSE, GB2312_CHARSET, DEFAULT_PITCH|FF_ROMAN); pTextStyleTableRecord-setTextSize(3.5); pTextStyleTableRecord-setXScale(0.8); pTextStyleTable-add(pTextStyleTableRecord); pTextStyleTableRecord-close(); if(!pTextStyleTable-has(“HZ-35“) AcDbTextStyleTableRecord *pTextStyleTableRecord=new AcDbTextStyleTableRecord; pTextStyleTableRecord-setName(“HZ-35“); pTextStyleTableRecord-setFileName(“txt.shx“); pTextStyleTableRecord-setBigFontFileName(“hztxt.shx“); pTextStyleTableRecord-setTextSize(3.5); pTextStyleTableRecord-setXScale(0.8); Acad:ErrorStatus es=pTextStyleTable-add(pTextStyleTableRecord); pTextStyleTableRecord-close(); pTextStyleTable-close(); Object ARX78T i a n y u S o f t 扩展数据 XData容量受限制,只能存储xData(“architech_3d_code“;); if (pRb != NULL) / If xdata is present, then walk to the end of the list. for (pTemp = pRb; pTemp-rbnext != NULL; pTemp = pTemp-rbnext) ; else /以调用过a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购买手镯合同(标准版)
- 常见委托合同(标准版)
- 2025年学历类自考中国文化概论-大学语文参考题库含答案解析(5卷)
- 押题宝典教师招聘之《幼儿教师招聘》模考模拟试题含答案详解【满分必刷】
- 教师招聘之《小学教师招聘》考前自测高频考点模拟试题【夺冠】附答案详解
- 全球绿色制造产业绿色制造技术应用与绿色供应链管理白皮书
- 2025-2030中国天然气期货行业现状调研及竞争格局展望报告
- 个人用房借款合同(标准版)
- 2025年教师招聘之《小学教师招聘》题库高频难、易错点100题模拟试题附答案详解【模拟题】
- 2025-2030中国地铁屏蔽门系统市场深度调研及发展态势展望报告
- 2025-2030中国海水利用行业经营形势分析与投资方向建议报告
- 体验单元 《分类与打包》课件 2025-2026学年大象版科学二年级上册
- 公司成立后追认合同范本
- QC/T 262-2025汽车渗碳齿轮金相检验
- 2025年交通安全问答试题及答案
- 电子厂安全考试题库及答案大全
- 导管相关性血流感染预防策略
- 《管理学基础与实务》 课件 曾宪达 第1-5章 管理与管理者- 目标与计划
- 茶艺知识讲座课件
- 合成氨设备管理培训课件
- 浙江工贸职业技术学院《高等数学Ⅱ》2025-2026学年期末试卷(A卷)
评论
0/150
提交评论