找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 670|回复: 8

[ARX程序]:一个小程序,就是通不过,大虾进来看一看

[复制链接]
发表于 2003-3-24 20:54:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我编了一个很简单的,浏览一条PLINE线的所有端点的程序

#include "StdAfx.h"
#include "StdArx.h"
#include "stdio.h"

//-----------------------------------------------------------------------------
// This is command 'XXL, by  [三月/24/2003], ,
void fangchanxxlxxl()
{
#ifdef OARXWIZDEBUG
        acutPrintf ("\nOARXWIZDEBUG - fangchanxxlxxl() called.");
#endif // OARXWIZDEBUG

        // TODO: Implement the command
        ads_name en1;
        ads_point pt1;
        if (ads_entsel("\n选择对象线:",en1,pt1)!=RTNORM)
        {
                ads_printf("Nothing selected.\n");
                return;
        }
        AcDbObjectId plineId1;
        acdbGetObjectId(plineId1,en1);

        FILE *fp;
        if ((fp=fopen("c:\\point.txt","w+"))==NULL)
        {
                ads_printf("cannot open txt-file");
                return;
        }
       
        AcDb2dPolyline *pPline;
    acdbOpenObject(pPline,plineId1,AcDb::kForRead);
    ads_printf("1");
        AcDbObjectIterator *pVertIter = pPline->vertexIterator();
        ads_printf("2");
        pPline->close();
        AcDb2dVertex *pVertex;
        AcGePoint3d pt;
        AcDbObjectId vertexObjId;
        for (int Number = 0; !pVertIter->done(); Number++, pVertIter->step())
        {
                vertexObjId = pVertIter->objectId();
                acdbOpenObject(pVertex,vertexObjId,AcDb::kForRead);
                pt = pVertex->position();
                pVertex->close();
                fprintf(fp,"\n%d,%0.3f,%0.3f,%0.3f",Number,pt[X],pt[Y],pt[Z]);
        }
        delete pVertIter;
}

VC编译通过,但在CAD2000下出错
1、屏幕只显示1,没有显示出2,是否可以认为AcDbObjectIterator *pVertIter = pPline->vertexIterator();  这句话出错?
2、ARX程序应当是怎么调试的呀?
3、出错的提示为Unhandled Exception C0000005 (Access Violation Reading 0xffffffff) at address 671FC490h  ,请问我错在哪里?
请各位大虾指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-3-24 21:42:31 | 显示全部楼层

Re: [ARX程序]:一个小程序,就是通不过,大虾进来看一看

最初由 xiaowa 发布
[B]我编了一个很简单的,浏览一条PLINE线的所有端点的程序

#include "StdAfx.h"
#include "StdArx.h"
#include "stdio.h"

//-----------------------------------------------------------------------------
... [/B]


你应该测试下:

acdbOpenObject(pPline,plineId1,AcDb::kForRead);

这句是否返回 eOk,试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-25 17:13:31 | 显示全部楼层
不知该问题解决了没有?
AcDb2dPolyline *pPline;我觉得应该定义为AcDbPolyline *pPline;
AcDbPolyline指的是LWPOLYLINE。若你选择的实体是POLYLINE的话,可以考虑用AcDb2dPolyline。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-25 20:09:02 | 显示全部楼层
xiaowa:    2、ARX程序应当是怎么调试的呀?
我觉得这个是一个只得讨论的 问题,
我调试主要通过在ACAD里加载ARX的 觉得很麻烦
却找不到好的方法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-26 09:56:18 | 显示全部楼层
最初由 fylinwater 发布
[B]xiaowa:    2、ARX程序应当是怎么调试的呀?
我觉得这个是一个只得讨论的 问题,
我调试主要通过在ACAD里加载ARX的 觉得很麻烦
却找不到好的方法 [/B]



1、设置断点,将光标置于某一行上,按F9键,该行前出现一标记。
2、设置调试路径progect->setting...出现于下对话框

C:\Documents and Settings\SSChen\My Documents\My Pictures\未命名.bmp

在红线框内设置CAD的执行路径。
3、设置完后,编译程序,未处错时,按F5键,出现CAD界面,然后加载程序,自动执行到标记处停止,执行到标记用F5,单步执行用F11。将光标置于变量旁,便会在旁边显示出变量值。多动手,就会积累经验的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-26 16:36:07 | 显示全部楼层
出现内存错误的原因是由于这一个函数:pPline->vertexIterator();
原因是你的上一个打开实体的操作没有成功,这个指针现在是无效的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-3-26 21:08:41 | 显示全部楼层
我选取的是封闭的PLINE,那是否应当用AcDb2dPolyline *pPline;

cssanhui,  谢谢你关于调试的内容,但是否能够将图贴出来呢,你贴的不对,显示不出
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-27 09:35:59 | 显示全部楼层
对于PLINE线,早期版本用的是POLYLINE,现在基本都是LWPOLYLINE,而LWPOLYLINE用AcDb2dPolyline是无效的。可用LIST函数在CAD命令行中测试先一下,看到底是那种。
至于调试问题,上图已经贴出,你觉得那儿不对或不明白了?大框红线内的内容是要自己输的,或用右边的按钮浏览。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-3-27 20:47:50 | 显示全部楼层
你的图贴出来的路径不对,请E-mail给我好吗?
E-mail:newspaper13@163.net
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-20 20:36 , Processed in 0.349026 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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