明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2380|回复: 4

[求助]在ARX中,如何在绘图开始设置绘图比例?

[复制链接]
发表于 2003-9-4 16:38:00 | 显示全部楼层 |阅读模式
在ARX中,如何在绘图开始设置绘图比例?如果不能,那要怎么做?
发表于 2003-9-5 09:50:00 | 显示全部楼层
这不是编程技术问题,
 楼主| 发表于 2003-9-5 10:34:00 | 显示全部楼层
怎么设置?因为我画图需要的坐标是从一个文件读入的,而且数据很大,画出来的图的坐标还要和实际一样,不设置比例怎么可以啊?是1:125,毕竟标题栏就那么大啊(A1),还有,请您看看我昨天发表的帖子好吗?如果你用空的话,帮我回答一下几个问题好吗?我很急,当然,我也很笨。:)
1.我要在load的时候读入一张图纸,而且要把这张图纸根据要求,以图纸中心(我可以计算出来)为基点把里头的所有东西(线条还有文字等,其实就是一个标准图框)都平移到指定点(x,y,z)。如何做?我还不会用transformby和旋转平移。
2.在画好的图中我要旋转一个视角,就是把WCS坐标轴转动一个角度(比如绕z轴旋转一个角度。也可能是三维的),期间所有对象对WCS的坐标都不能便。如何?
3.还有一个不好意思问的问题,就是我怎么设置绘图比例?设置好后绘图就自动按这个比例去画?
以上问题都是ARX的,还有,如果你有时间的话,能不能给我写出代码?我先谢谢你了!

(不好意思,我太着急了,就写了这么多)
发表于 2003-9-5 11:41:00 | 显示全部楼层
1.设比例只是设一个变量而已,如My_Scale=1/125, 然后画图时乘以这个变量
2.你不能急,要一个个问题搞清楚,transformby 之类的操作是基本技能,不会怎可?
 楼主| 发表于 2003-9-5 12:07:00 | 显示全部楼层
谢谢goldenshin,关于变量,我是乘以Scale变量的。
而对于第二点,不怕你笑话,我是不会ARX,但又要用,所以还每来得急从基本和系统学,而又是急用,即急待解决问题!
下面有一段代码,你看看,是为了解决“我要在load的时候读入一张图纸,而且要把这张图纸根据要求,以图纸中心(我可以计算出来)为基点把里头的所有东西(线条还有文字等,其实就是一个标准图框)都平移到指定点(x,y,z)。如何做?我还不会用transformby和旋转平移”的。
Acad::ErrorStatus moveEntries(double x,double y,double z)
{       
        AcGeVector3d transVec(-0.1, 0.1, 0.0);
        transVec.set(x,y,z);
        AcGeMatrix3d Mat;
        Mat.setTranslation(transVec);
        AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);
        Acad::ErrorStatus es=pNewDb->readDwgFile(DWGFILEDIRECTORY , _SH_DENYNO,false);
        if (es!=Acad::eOk)
        {
                acutPrintf("\nThe file %s cannot be opend",DWGFILEDIRECTORY);
                delete pNewDb;
                return es;
        }
        AcDbDatabase *pDb;
        pDb =acdbHostApplicationServices ()->workingDatabase () ;
        pDb->insert(Mat, pNewDb ); //这句是做什么用的?
       
        AcDbBlockTable *pBlkTbl;
        pNewDb->getSymbolTable(pBlkTbl,AcDb::kForRead);
        AcDbBlockTableRecord *pBlkTblRcd;
        pBlkTbl->getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForRead);
        pBlkTbl->close;
        //创建矢代器,用于遍历包含在块表记录中的实体
        AcDbBlockTableRecordIterator *pBlkTblRceItr;
        pBlkTblRcd->newIterator(pBlkTblRceItr);
        AcDbEntity *pEnt;
        //历包含在块表记录中的实体,把它们全部平移

        AcGePoint3d ptMax,ptMin;
        ptMax = pNewDb->extmax();
        ptMin = pNewDb->extmin();
        for(pBlkTblRceItr->start();!pBlkTblRceItr->done();pBlkTblRceItr->step())
        {
                pBlkTblRceItr->getEntity(pEnt,AcDb::kForRead);
                pEnt->transformBy(Mat);//这里运行的时候提示:
//Unhandled exception at 0x77e4d756 in acad.exe: 0xE0000001: 0xe0000001.
                pEnt->close;
        }

        pBlkTblRcd->close;

        delete pBlkTblRceItr;
        delete pDb;
        delete pNewDb;
        return es;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 07:32 , Processed in 0.191580 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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