明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8611|回复: 13

[原创]ARX坐标展点原码

  [复制链接]
发表于 2003-12-30 20:22:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2005-9-14 22:10:52 编辑

  1. AcGePoint3d d3pt1;//***定位点***//
  2. char zf[80];      //***高程***//
  3. char layer_tc[20];//***图层***//
  4. double VW;       //***文高***//  
  5. //****************************************************************//
  6. //************************    坐标展点    ****************************//
  7. //***************************************************************//
  8. void hzzcyfyzbzd()
  9. {
  10. CString m_path;
  11. struct resbuf blc;
  12. FILE *FP;
  13. double bl;//比例
  14. double r;
  15. int newcolor,i,rc;
  16. ads_point pt1;
  17. blc.restype=RTREAL;//控制主单位值中零的显示方式
  18. blc.resval.rreal=0;
  19. acedSetVar("DIMZIN",&blc);
  20. blc.restype=RTSHORT;//控制命令回显
  21. blc.resval.rint=0;
  22. acedSetVar("CMDECHO",&blc);
  23. blc.restype=RTSHORT;//关闭对象捕捉
  24. blc.resval.rint=0;
  25. acedSetVar("OSMODE",&blc);
  26. CFileDialog chfileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.TXT)|*.TXT|数据文件(*.DAT)|*.DAT|所有文件(*.*)|*.*||");
  27. chfileDlg.m_ofn.lpstrTitle="输入文件";
  28. if(chfileDlg.DoModal()!=IDOK)return;
  29. m_path=chfileDlg.GetPathName();
  30. bl=500.0;
  31. if(acedGetReal("\n绘图比例 1:<500> ",&bl)==RTCAN)return;
  32. for(i=1;i<4;i++){
  33.   if(i==1){
  34.    strcpy(layer_tc,"高程层");
  35.    newcolor=1;
  36.   }else if(i==2){
  37.    strcpy(layer_tc,"点号层");
  38.    newcolor=3;
  39.   }else if(i==3){
  40.    strcpy(layer_tc,"点位层");
  41.    newcolor=7;
  42.   }
  43.   AcDbLayerTable *pLayerTble;
  44.   acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTble, AcDb::kForWrite);
  45.   if (!pLayerTble->has(layer_tc)){
  46.    AcDbLayerTableRecord *pLayerTblRcd=new AcDbLayerTableRecord;
  47.    pLayerTblRcd->setName(layer_tc);
  48.    AcCmColor color;
  49.    color.setColorIndex(newcolor);
  50.    pLayerTblRcd->setColor(color);   
  51.    pLayerTble->add(pLayerTblRcd);
  52.    pLayerTblRcd->close();
  53.    pLayerTble->close();
  54.   } else {
  55.    pLayerTble->close();
  56.   }
  57. }
  58. blc.restype=RTSTR;//设置点号层为当前图层
  59. blc.resval.rstring=layer_tc;
  60. acedSetVar("CLAYER",&blc);
  61. FP=fopen(m_path,"r");//以只读形式打开文件
  62. do{   //...读原始数据...//   
  63.   fscanf(FP,"%d,%lf,%lf,%lf",&i,&pt1[X],&pt1[Y],&pt1[Z]);
  64.   strcpy(zf,"gc200.dwg");//块名
  65.   VW=bl/1000;
  66.   //这里我直接调用CAD命令插入块,不使用ARX来插入块。主要是觉得麻烦!
  67.   //可以添加使用ARX插入的代码,展点一定更快!
  68.   acedCommand(RTSTR,"INSERT",
  69.    RTSTR,zf,//块文件
  70.    RT3DPOINT,pt1,//插入块的位置
  71.    RTREAL,VW,//缩放比例
  72.    RTSTR,"",
  73.    RTSTR,"",
  74.    0);
  75.   r=double(i);
  76.   acdbRToS(r,2,0,zf);
  77.   VW=bl*0.002;
  78.   d3pt1[0]=pt1[X]+bl*0.001;
  79.   d3pt1[1]=pt1[Y]-VW/2.0;
  80.   strcpy(layer_tc,"点号层");
  81.   Com_Text();//展点号
  82.   r=pt1[Z];
  83.   acdbRToS(r,2,2,zf);
  84.   strcpy(layer_tc,"高程层");
  85.   Com_Text();//展高程
  86.   rc=feof(FP);
  87. }while(rc==0);
  88. fclose(FP);//关闭文件
  89. acedCommand(RTSTR,"ZOOM",RTSTR,"E",0);
  90. }
  91. //****************************************************************//
  92. //************************    写入文字    ****************************//
  93. //****************************************************************//
  94. void Com_Text(){
  95. AcDbText *ptext=new AcDbText(d3pt1,zf,0,VW,0);
  96. ptext->setLayer(layer_tc);
  97. AcDbBlockTable *pblocKTable;
  98. acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pblocKTable,AcDb::kForRead);
  99. AcDbBlockTableRecord *pblocKTableRecord;
  100. pblocKTable->getAt(ACDB_MODEL_SPACE,pblocKTableRecord,AcDb::kForWrite);
  101. AcDbObjectId plineObjId;
  102. pblocKTableRecord->appendAcDbEntity(plineObjId,ptext);
  103. pblocKTable->close();
  104.     pblocKTableRecord->close();
  105. ptext->close();
  106. }
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-1-19 22:23:00 | 显示全部楼层
好东东!
发表于 2005-5-7 09:42:00 | 显示全部楼层
好!谢谢共享!
发表于 2005-9-7 16:49:00 | 显示全部楼层
你的操作大部分都是c++代码 如果选择 MFC会更好一点 我会尝试 用MFC改写一下 谢谢分享
发表于 2005-9-12 11:31:00 | 显示全部楼层
不能解压啊!奇怪?谁能给我!  qq:58412171
 楼主| 发表于 2005-9-14 22:06:00 | 显示全部楼层
fazi发表于2005-9-7 16:49:00你的操作大部分都是c++代码 如果选择 MFC会更好一点 我会尝试 用MFC改写一下 谢谢分享


选择MFC也可以啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-11-30 08:45:00 | 显示全部楼层
为什么我的运行不成功呢?
发表于 2005-12-12 08:45:00 | 显示全部楼层

楼主,为什么不行呢???

想学学都学不了了!!!!!

能给一个完整的么?  shiming81@163.com

发表于 2006-5-14 23:55:00 | 显示全部楼层
我都不知道怎么运行,太衰了。。。。
发表于 2008-12-14 16:45:00 | 显示全部楼层

谢谢共享

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-23 12:00 , Processed in 0.199030 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表