[求助]:如何将VC的绘图程序改成AUTOCAD2000的程序
<FONT face=宋体,verdana,arial,helvetica><FONT size=2>我想将一段VC的绘图程序改写成可以加载到AUTOCAD2000运行的程序,可是改写后加载到AUTOCAD中,输入参数值后不能生成图形。请问图形算法部分应该怎样改动,还应添加什么代码?</FONT> 这个对我很重要,请各位高手指点迷津,最好能帮我改一下源代码,不胜感激啊!!!!!</B></FONT> ....ARX对CAD的图形操作是在数据库内添加图形实体, 这个代码是MFC CDC绘图, 完全不是一个概念哪..通过CAD数据库操作画图是ARX最基本的东西之一了, 楼上楼下那么多电子书, 楼主有心做CAD程序不如好好学习一下.. 做ARX的一个最基本的,就是要对autocad非常熟悉,如果这个不熟悉的话,很难理解的。但是一些基础的还是要看的。。。。 FLOWERDLG dlg;<BR> CAcUiDialog::OnOK();<BR> <BR> CDC*pDC=GetDC();<BR> float radio=100;<BR> long step=dlg.m_nSTEP;<BR> int n=dlg.m_nN;<BR> CPoint point1,point2;<BR> point1.x=160;<BR> point2.y=140;<BR> float a=0;
for(float i=0;i<=720/step;i++){ <BR> point1.x=290+radio*cos(2*a*pi/360);<BR> point1.y=140+radio*sin(2*a*pi/360);<BR> point2.x=290+radio*cos(n*2*a*pi/360);<BR> point2.y=140+radio*sin(n*2*a*pi/360);<BR> a+=step;<BR> pDC->MoveTo(point1);<BR> pDC->LineTo(point2);<BR> }
//这是c本身的画法,cad中有自己的命令
AcDb2dPolyline *Newline1=new AcDb2dPolyline(AcDb::k2dQuadSplinePoly/*k3dSimplePoly*/,ptAr,mheight,Adesk::kFalse,lwidth,lwidth);<BR> <BR>
//取表名<BR> AcDbBlockTable *pBTable1;<BR> acdbHostApplicationServices()->workingDatabase()<BR> ->getSymbolTable(pBTable1, AcDb::kForRead);<BR> AcDbBlockTableRecord *pBTRecord1;<BR> pBTable1->getAt(ACDB_MODEL_SPACE,pBTRecord1,AcDb::kForWrite);<BR> pBTable1->close();<BR> AcDbObjectId plId1;<BR> if(pBTRecord1->appendAcDbEntity(plId1,Newline1)!=Acad::eOk)<BR> {<BR> Newline1->close();<BR> pBTRecord1->close();
}<BR> Newline1->close();<BR> pBTRecord1->close(); 我按照您所说的修改我的代码,但是还是有问题,您再帮我看看好吗?谢谢! ACAD编程需要通过AutoCAD的开放平台利用它所提供的类库和VC或VB语言编制扩充命令,而不能只通过Windows编程来实现,需要了解ARX库的类定义和实现方法,或掌握AutoLisp专用语言,才能成功编制出你所需要的的扩充动态连接库程序或它的扩充程序块,在CAD中装载运行。上面的样例所做的对比很说明问题。 现在应可以了 重新上传一下 还是没弄明白,调试出错error C2601: 'FlowerDraw' : local function definitions are illegal<BR> fatal error C1004: unexpected end of file found,我刚刚学习OBjectARX,很多东西都不太了解,可是这个程序老板着急要,可不可以帮我改改,我实在不会了,万分感谢!! 我在网上看了几个相关的例子,倒是看明白了,可是不会举一反三,唉!愁死我了!
页:
[1]
2