// MyArxFirst.cpp : 定义 DLL 应用程序的导出函数。 //ObjectArx开发对txt文本文件的操作一例 #include "stdafx.h" #include <aced.h> #include <rxregsvc.h> #include <tchar.h> #include <fstream> #include <iostream> // #include <comdef.h> using namespace std; //定义两个函数 void initApp(); void unloadApp(); //定义命令函数 //------------------------------------------ //打印"Hello world!"在AutoCAD Command上 的命令 void hello(); //打印文件内容 的命令 void pfvalue(); //ado连接数据库的方法 的命令 void pdbvalue(); //定义一般函数 //------------------------------------------ ACHAR* ConvertCharPtrToAcharPtr(const char* src); ACHAR* ConvertCharPtrToAcharPtr2(const char* src); // char* ConvertAcharPtrToCharPtr(const ACHAR* src); char* ConvertAcharPtrToCharPtr2(const ACHAR* src); //通用转换函数 _bstr_t Get_bstr_t(char* src); _bstr_t Get_bstr_t_W(wchar_t* src); char* GetCharPtr(_bstr_t bstrt); wchar_t* GetWchar_t(_bstr_t bstrt); //打印函数 void pfvalue_default(const ACHAR* filepath); //打印文件内容2 函数 void pfvalue2(const ACHAR* filepath); //ado连接数据库的方法 函数 void pdbvalue(const ACHAR *filepath); //------------------------------------------ extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) //void acrxEntryPoint(void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); initApp(); break; case AcRx::kUnloadAppMsg: unloadApp(); break; default: break; } return AcRx::kRetOK; } void initApp() { //register a command with the AutoCAD command mechanism //string macro 用法: //_T("helloworld") or __T("helloworld") or ACRX_T("helloworld") acedRegCmds->addCommand(ACRX_T("HELLOWORLD_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("Hello"), ACRX_CMD_TRANSPARENT, hello); acedRegCmds->addCommand(ACRX_T("PFVALUE_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("pfvalue"), ACRX_CMD_TRANSPARENT, pfvalue); acedRegCmds->addCommand(ACRX_T("PDBVALUE_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("pdbvalue"), ACRX_CMD_TRANSPARENT, pdbvalue); // } void unloadApp() { acedRegCmds->removeGroup(ACRX_T("HELLOWORLD_COMMANDS")); acedRegCmds->removeGroup(ACRX_T("PFVALUE_COMMANDS")); acedRegCmds->removeGroup(ACRX_T("PDBVALUE_COMMANDS")); } //---------------------------------------------------- //hello命令 void hello() { acutPrintf(ACRX_T("\n第一个Arx程序Hello World!")); } //打印文件内容 命令 void pfvalue() { acutPrintf(_T("开始输出文件内信息:\n")); const ACHAR* filepath=ACRX_T("d:\\test.txt"); //OK acutPrintf(filepath); //OK pfvalue_default(filepath); //OK pfvalue2(filepath); //OK } //输出数据库表内记录的命令 void pdbvalue() { acutPrintf(_T("开始输出数据库表内记录:\n")); //... } //---------------------------------------------------- ACHAR* ConvertCharPtrToAcharPtr(const char* src) { ACHAR* tmp; _bstr_t AStr = src; LPWSTR AstrW = LPTSTR(AStr); tmp=(ACHAR *)AstrW; return tmp; } ACHAR* ConvertCharPtrToAcharPtr2(const char* src) { // Convert to a wchar_t* size_t srcsize = strlen(src) + 1; size_t newsize = srcsize; size_t convertedChars = 0; wchar_t *wcstring; wcstring=new wchar_t[newsize]; mbstowcs_s(&convertedChars, wcstring, srcsize, src, _TRUNCATE); //wcscat_s(wcstring, L" (wchar_t *)"); //wcout << wcstring << endl; return wcstring; } char* ConvertAcharPtrToCharPtr(const ACHAR* src) // { char* tmp; _bstr_t bstrt(src); tmp=GetCharPtr(bstrt); return tmp; } char* ConvertAcharPtrToCharPtr2(const ACHAR* src) { // Convert to a char* size_t srcsize = wcslen(src) + 1; size_t newsize = srcsize; size_t convertedChars = 0; char *nstring; nstring=new char[newsize]; wcstombs_s(&convertedChars, nstring, srcsize, src, _TRUNCATE); return nstring; } // _bstr_t Get_bstr_t(char* src) { _bstr_t bstrt(src); return bstrt; } _bstr_t Get_bstr_t_W(wchar_t* src) { // Convert to a _bstr_t _bstr_t bstrt(src); //bstrt += " (_bstr_t)"; //cout << bstrt << endl; return bstrt; } char* GetCharPtr(_bstr_t bstrt) { // Convert to a char* size_t newsize = bstrt.length()+1; char *nstring;nstring=new char[newsize]; strcpy_s(nstring,newsize,(char *)bstrt); //strcat_s(nstring, " (char *)"); //cout << nstring << endl; return nstring; } wchar_t* GetWchar_t(_bstr_t bstrt) { // Convert to a wchar_t* int srcsize=bstrt.length()+1; wchar_t *wcstring;wcstring=new wchar_t[srcsize]; wcscpy_s(wcstring,srcsize,(wchar_t *)bstrt); //wcscat_s(wcstring, L" (wchar_t *)"); //wcout << wcstring << endl; return wcstring; } //CComBSTR GetCComBSTR(char* src) //{ // // Convert to a CComBSTR // CComBSTR ccombstr(src); // /*if (ccombstr.Append(L" (CComBSTR)") == S_OK) // { // CW2A printstr(ccombstr); // cout << printstr << endl; // }*/ // return ccombstr; //} //---------------------------------------------------- //打印文件内容1 C文件操作函数 OK void pfvalue_default(const ACHAR* filepath) { acutPrintf(_T("\n-----下面是c文件操作函数打开的内容-----\n")); acutPrintf(filepath);acutPrintf(_T("\n")); FILE *fp; int linesize=4000; char *line;line=new char[linesize]; const char* path=ConvertAcharPtrToCharPtr(filepath); ACHAR* wtmp=ConvertCharPtrToAcharPtr(path); acutPrintf(wtmp);acutPrintf(_T("\n")); if((fp=fopen(path,"r"))==NULL) { acutPrintf(_T("\nfile cannot be opened\n")); } else { const ACHAR* tmp; while(!feof(fp)) { if(fgets(line,linesize,fp)!=NULL) { tmp=ConvertCharPtrToAcharPtr(line); acutPrintf(tmp); } } fclose(fp); } } //打印文件内容2 ifstream类 OK void pfvalue2(const ACHAR* filepath) { //--file2 open //filepath="d:\\test.txt"; acutPrintf(ACRX_T("\n")); acutPrintf(filepath); ifstream r(filepath,ifstream.in); if(!r) { acutPrintf(ACRX_T("打开文件出错!")); } else { const ACHAR* tmpAchar; //char line[4000]; //[100]2000 int linesize=4000; char* line;line=new char[linesize]; while(r>>line) { tmpAchar=ConvertCharPtrToAcharPtr(line); acutPrintf(tmpAchar); acutPrintf(ACRX_T("\n")); } r.close(); acutPrintf(ACRX_T("输出文件内容完毕!")); } } //ObjectARX offers the following input functions. //Refer to the ObjectARX Online Help for a complete description of //how to use these functions. //acedGetInt used to get an integer value //acedGetReal used to get a real value //acedGetString used to get a string //acedGetAngle used to get a angle value //acedGetKword used to get a key word //acedInitGet used to initialize acedGetXXXX functions //acedGetFileD used to retrieve file selection from a file dialog //acedGetPoint used to pick a point //acedGetDist used to get the distance between two points //acedGetCorner see Online Help for a complete description // //ObjectARX offers the following functions for selection of AutoCAD entities. //(Again refer to the ObjectARX Online Help for a complete description of //how to use these functions). // //acedEntSel used to select a single entity //acedNEntSel used to select a single, nested entity //acedNEntSelP used to select a single, nested entity //acutSSGet used to select multiple entities //--the---end---

转载于:https://www.cnblogs.com/sqlite3/archive/2011/10/31/2566798.html

ObjectArx开发对txt文本文件的操作一例相关推荐

  1. python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...

  2. python对txt文本文件进行读写操作

    对txt文本文件进行操作是Python与外部进行交流的一种方式,可以将计算过程生成的数据存放到txt文本文件中进行保存,也可以读取文本文件中的内容进行操作. 文件的读写需用到open函数. open函 ...

  3. python读取txt文件写入-Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python! hello world! ...

  4. python操作sqlite3 导入csv文件_[转载]SQLite 3导入导出成txt或csv操作

    平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到. 进入管理: sqlite3.exe d:\\test.db //假设数据是 d:\\test.db > ...

  5. A.PHP读取txt文本文件并分页显示的方法

    PHP读取txt文本文件并分页显示的方法 作者:TomRobert 字体:[增加 减小] 类型:转载 时间:2015-03-11 我要评论 这篇文章主要介绍了PHP读取txt文本文件并分页显示的方法, ...

  6. xdf文件改word_真正Txt 文本文件和Doc Word文件批量互转工具

    电近经常上网下载小说文本,电脑里一大堆,虽然文本文件简洁方便,可是用记事本打开阅读,眼睛看起来却很累,还是觉得保存为WORD文件,阅读起来更舒服,也许一个两个TXT文本,转换成WORD,我们直接打开复 ...

  7. 【转】vb OPen文本文件的操作

    Dim uid$ Open App.Path & "\close_id.txt" For Input As #1 '记事本close_id.txt上每行一个你要关闭的程序名 ...

  8. python分割压缩_Python读取分割压缩TXT文本文件实例

    废话不多说,上代码看吧! ''' 为了避免截断中文字符 文件要求是 unicode 编码 txt文件另存为对话框下面有下拉框,可选存 储编码格式 ''' import os import struct ...

  9. C语言文件读写(1)-文本文件读操作

    C语言文件读写--文本文件读操作 最近和几个初学C语言的朋友讨论文件读写,发现他们在使用C语言文件读写功能的时候遇到了不少问题,不是文件打开方式有问题,就是文件读写有问题,总是得不到自己想要的结果. ...

最新文章

  1. Android Retrofit实现原理分析
  2. 15行用Python实现仿百度搜索引擎
  3. oracle进城有哪些,oracle主要进程详解
  4. 智能指针weak_ptr
  5. 控制面板的cpl程序列表
  6. html 字幕飘动效果,html 滚动字幕 制作滚动字幕效果 参数
  7. P8U8 最中听的话,不要做每件事都考虑太多。
  8. 广西大学计算机英语复试的内容,广西大学计算机专业的研究生复试时
  9. bzoj 1677: [Usaco2005 Jan]Sumsets 求和(DP)
  10. python的property用法_Python的@property使用方法详解
  11. CS224N笔记——RNN和语言模型
  12. 循环问题2012蓝桥杯省赛第四题 奇怪的比赛(暴力解决)
  13. 黑盒、白盒和灰盒测试的区别
  14. 麻省理工学院计算机科学与工程博士,2020美国麻省理工大学计算机科学博士专排...
  15. 全国气象预报业务产品grib2数据格式解析
  16. Ubuntu 9.10 如何安装rais环境
  17. ifft java_在Matlab中的fft / ifft反卷积
  18. PoseCNN(A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes)复现记录
  19. 【算法导论06】递归算法-perm算法
  20. table表格五星好评的实现

热门文章

  1. eclipse中Android模拟器常见的问题解决方法汇总
  2. python安装方法3.8.2_Linux安装Python3.8.1的教程详解
  3. 【HDU 1276】士兵队列训练问题(两个队列模拟)
  4. docker zookeeper kafka kafka-manager 本地hbase hadoop
  5. java(5)——数据类型中的字符型和布尔类型
  6. 防火墙(11)——防止爬虫过多访问(ping)我们的服务器
  7. 将 app 打包成 deb 发布安装
  8. 微机原理汇编之部分重要知识整合包括:判断解释程序运行(新手有利)并画存储结构,字节变量,寻址方式
  9. javaweb利用servlet与struts2实现可点击刷新的基础图片验证码
  10. 不要做一个浮躁的程序员