明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2084|回复: 5

各位大虾帮帮我,小弟跪谢了(arx编程画多条直线与圆弧的问题)

[复制链接]
发表于 2007-5-11 12:09:00 | 显示全部楼层 |阅读模式

各位大虾帮帮我,小弟跪谢了(arx编程画多条直线与圆弧的问题)我是个新新新手,刚接触arx一个星期,毕业设计做这个,以前从没接触过,我感觉好复杂,可是这个任务还是要完成的,请各位大哥帮帮我,我现在这个搞不懂:

我现在在c:盘下有这个文件:(因为我不知道arx中圆弧怎么画需要什么信息所以用省略号代替了,我不太懂)

linexs=0,ys=0,xe=20,ye=80)
arcxs=20,ys=80,xe=40,ye=20.....)
linexs=0,ys=0,xe=20,ye=80)
linexs=0,ys=0,xe=20,ye=80)
arcxs=5,ys=404,xe=40,ye=20.....)
arcxs=20,ys=80,xe=40,ye=20.....)

..........................................

现在我想在arx中编程(我用的是arx2000与AutoCAD2000 )实现这个功能:让autocad加载了我这个arx程序后能自动画出这些首尾相接的直线和圆弧的图形,其实就是数控机床中的图形预览功能(就是输入坐标点能在autocad中看到相应的图形。图中坐标点我没有正确的给出,因为我对圆弧怎么命令还不怎么懂),是不是只要把环境编译好了后在command.cpp中修改下就可以啦?我在command.cpp中编了个这样的可是没有用:

/////////////////////////////////////////////
// ObjectARX defined commands

#include "StdAfx.h"
#include <dbents.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


// This is command 'ZDPOINT'
void hemaarxzdpoint()
{
        int x1,y1,x2,y2,x3,y3,x4,y4;
  char str[4];
        FILE *fp;
        fp=fopen("c:/zuobiao.txt", "r");
       
  while(!feof(fp))
  {
   fgets(str,4,fp);

  switch (str);
   case 'line';
   {
    fscanf(fp, "linexs=%d,ys=%d,xe=%d,ye=%d)\n", &x1, &y1, &x2, &y2);
                AcGePoint3d startPt(x1,y1,0.0);
             AcGePoint3d endPt(x2,y2,0.0);
             AcDbLine *pLine = new AcDbLine(startPt,endPt);
    
                AcDbDatabase *pCurDb;
             pCurDb = acdbHostApplicationServices()->workingDatabase();


             AcDbBlockTable *pBlockTable;
             pCurDb->getBlockTable(pBlockTable,AcDb::kForRead);
             AcDbBlockTableRecord *pBlockTableRecord;
             pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
             pBlockTable->close();

             AcDbObjectId lineId;
             pBlockTableRecord->appendAcDbEntity(lineId,pLine);
              pBlockTableRecord->close();
               pLine->close();
               //return lineId;
   
   }
   break;
  
  case 'arc';
  { 
     
        fscanf(fp, "arcxs=%d,ys=%d,xe=%d,ye=%d.........)\n", &x3, &y3, &x4, &y4);
              //  AcGePoint3d startPt(x3,y3,0.0);
          //   AcGePoint3d endPt(x4,y4,0.0);
             ///AcDbLine *pLine = new AcDbLine(startPt,endPt);
    
                AcDbDatabase *pCurDb;
             pCurDb = acdbHostApplicationServices()->workingDatabase();


             AcDbBlockTable *pBlockTable;
             pCurDb->getBlockTable(pBlockTable,AcDb::kForRead);
             AcDbBlockTableRecord *pBlockTableRecord;
             pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
             pBlockTable->close();

             AcDbObjectId lineId;
             pBlockTableRecord->appendAcDbEntity(lineId,pLine);
              pBlockTableRecord->close();
               pLine->close();
               //return lineId;
    
   }
          break;
    default
    {
         printf ("读取错误,请重新输入加工指令!");
    }
  
  }
  fclose(fp);


}

程序有许多问题,我只是给出我的框架,说实话,连c语言和c++我也是做这个毕业设计时刚刚自学的,请各位大哥教教我,真心谢谢各位了!

 楼主| 发表于 2007-5-11 12:21:00 | 显示全部楼层
如果直线与圆弧首尾相接比较麻烦的话,那就用直线吧,用画直线指令画一个矩形或多边形也可以啊,我跟后面学习学习啊,谢谢各位
发表于 2007-5-11 20:53:00 | 显示全部楼层

哈哈,我现成的源代码,如果需要可以联系

 楼主| 发表于 2007-5-12 00:31:00 | 显示全部楼层

大哥,你好啊,我很需要啊,尽管能不能看懂还是个问题,这个对你们这些高手来说肯定是很简单的问题,但对于我这个菜菜菜菜鸟来说很是个问题,希望您能教教我,谢谢您我加你qq了

 楼主| 发表于 2007-5-12 02:27:00 | 显示全部楼层
我看了以前明经上面的帖子,好像有好几个人遇到这样的问题,其实就是 直线与圆弧连接问题,还请大虾们指教我,谢谢各位
 楼主| 发表于 2007-6-4 14:52:00 | 显示全部楼层
难道没有人会?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:47 , Processed in 0.285443 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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