找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1292|回复: 2

[ARX函数]:清高手看一下我的程序错在那里!

[复制链接]
发表于 2002-5-23 03:13:34 | 显示全部楼层 |阅读模式

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

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

×
void set_list_item(int no)
{
        AcDbDatabase *extDb=new AcDbDatabase(Adesk::kFalse);
        if(extDb->readDwgFile(dwgFile) !=Acad::eOk)
        {
                ads_printf("\nSorry,that draing is probably already open.");
                return;
        }
        int i=0;
        //获得块表指针
        AcDbBlockTable *pBTable;
        extDb->getBlockTable(pBTable,AcDb::kForRead);
        //获得指向该块表的块表记录指针
        AcDbBlockTableRecord *pBTRecord;
        //定义遍历块表的浏览器,获得指向块表浏览器指针
        AcDbBlockTableIterator *pBIterator;
        pBTable->newIterator(pBIterator);
        //遍历块表
        for(pBIterator->start();!pBIterator->done();pBIterator->step())
        {
                pBIterator->getRecord(pBTRecord,AcDb::kForRead,Adesk::kFalse);
        pBTRecord->getName(blockname);//得到块名
        char block_name[2];
        block_name[0]=*blockname;
        if(block_name[0]=' ')  ads_printf("\n块名错误!");
        int err;
        if(block_name[0]!='*')
        {   
        if(no==-1) err=ads_add_list(blockname);
        if(err=RTNORM) ads_printf("\n不能够编辑列表框");
                if(no>=0&&i==no)
                {
                ads_set_tile(hdlg,"block_name",blockname);
                //得到图块的基点
                AcGePoint3d basePoint=pBTRecord->origin();
                char str_x[10],str_y[10],str_z[10];
                ads_rtos(basePoint.x,2,2,str_x);
                ads_rtos(basePoint.y,2,2,str_y);
                                          ads_rtos(basePoint.z,2,2,str_z);
                ds_set_tile(hdlg,"x_value",str_x);
                ads_set_tile(hdlg,"y_value",str_y);
                ads_set_tile(hdlg,"z_value",str_z);
                //幻灯片显示
                short x,y;
                ads_dimensions_tile(hdlg,"show_slide0",&x,&y);
                ads_start_image(hdlg,"show_slide0");
                ads_fill_image(0,0,x,y,-2);
                ads_slide_image(0,0,x,y-12,blockname);
                ads_end_image();
                break;
                        }
                        i++;
                }
        }
        delete pBIterator;
        pBTRecord->close();
        pBTable->close();
        delete extDb;
}
为什么程序运行时在列表框中无法显示块名,添加图块显示"块名错误!","不能够编辑列表框"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-5-23 03:19:03 | 显示全部楼层

Re: [ARX函数]:清高手看一下我的程序错在那里!

最初由 tank37 发布
[B]void set_list_item(int no)
{
        AcDbDatabase *extDb=new AcDbDatabase(Adesk::kFalse);
        if(extDb->readDwgFile(dwgFile) !=Acad::eOk)
        {
                ads_printf("\nSorry,that draing is probably already open.");
... [/B]


if(block_name[0]=' ') ads_printf("\n块名错误!");

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

使用道具 举报

 楼主| 发表于 2002-5-24 04:55:56 | 显示全部楼层

谢谢了,

谢谢了,对了,还有一个问题,帮忙看一下
void block_manager()
{
getFile(dwgFile);//选择图形文件
//变量类型声明
char fp_file[_MAX_FNAME],dcl_name[15];
int index,dbstatus=5,dbstatus1;//对话框的标识字及状态
strcpy(fp_file,"g:\\managerment\\dcl_block");
//装入对话框
if(ads_load_dialog(fp_file,&index)==RTNORM)
{
        strcpy(dcl_name,"main_dcl");
        while(dbstatus>=2)
        {
        /*显示对话框*/
if(ads_new_dialog(dcl_name,index,NULLCB,&hdlg)!=RTNORM)
        ads_printf("\ncreat dialog wrong!");
        /*以下为控件的初始化*/
        //设置初始化不可选按钮
        ads_mode_tile(hdlg,"insert_block",1);
        ads_mode_tile(hdlg,"save_block",1);
        ads_mode_tile(hdlg,"make_slide",1);
        //设置列表框的值
        int err=ads_start_list(hdlg,"block_list",LIST_NEW,0);
         if(err!=RTNORM)
          ads_printf("\n列表框不能初始化!");
        set_list_item(-1);//调用块名检索函数
        ads_end_list();
        //显示图库文件名
        ads_set_tile(hdlg,"file_text",dwgFile);
        /*以下为设定控件与回调函数相关联*/
        ads_action_tile(hdlg,"block_list",main_dialog);
        ads_action_tile(hdlg,"x_value",main_dialog);
        ads_action_tile(hdlg,"y_value",main_dialog);
        ads_action_tile(hdlg,"z_value",main_dialog);
        ads_action_tile(hdlg,"insert_block",main_dialog);
        ads_action_tile(hdlg,"make_slide",main_dialog);
        ads_action_tile(hdlg,"define_block",main_dialog);
        ads_action_tile(hdlg,"file_block",main_dialog);
        ads_action_tile(hdlg,"save_block",main_dialog);
                //激活对话框
                ads_start_dialog(hdlg,&dbstatus);
                //调用相关函数
                        ....................................
运行提示:列表框不能初始化!
请问是什么原因,谢谢!!!!!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 02:01 , Processed in 0.405867 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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