BDYCAD
发表于 2007-3-14 14:29:00
学习ARX,编个初组的命令,呵呵
<p>在使用CAD中, 我们常常要把很多根头尾相连的ARC呀LINE呀连接成一根PLINE对象,我们都是常常用CAD的PEDIT来做,我以前只能在LISP中写出来, 今天把他用ARX把这个简易的动作写出来, </p><p> 还望以后大家多多指导,我将用心学好ARX, 谢谢!</p><p> // ----- BDYCommEE._EE command (do not rename)<br/> static void BDYCommEE_EE(void)<br/> {<br/> struct resbuf cmd, rb1,rb2 , *dxf;<br/> ads_name Ename;<br/> ads_point pt1 ;<br/> int m,n,k;<br/> //acedGetVar("osmode", & os);<br/> cmd.restype = RTREAL;<br/> cmd.resval.rreal = 0;<br/> acedSetVar("cmdecho", &cmd);//(SETVAR "CMDECHO" 0)<br/> if(acedEntSel("\n请选择要串接的线:",Ename,pt1) != RTNORM)<br/> {acutPrintf("\n没有选到对象,请再试一次。");}<br/> else<br/> {<br/> acedCommand(RTSTR ,"PEDIT",RTLB,RTENAME,Ename ,RTPOINT,pt1,RTLE, RTSTR, "" ,RTSTR,"J",RTSTR,"ALL",RTSTR,"",RTSTR,"",0);<br/> acutPrintf("\n选到对象,自动进行连接对象了。");<br/> }<br/> // Add your code for command BDYCommEE._EE here<br/> }</p>
ganok
发表于 2007-3-22 15:32:00
<p>是用sendcommand的方式啊?还以为是arx的方式呢。不过也顶一下,楼主继续努力。</p>
BDYCAD
发表于 2007-4-5 10:45:00
本帖最后由 作者 于 2007-4-5 10:49:31 编辑 <br /><br /> <p>20070405</p><p>今天又学习一点点ARX, 写个中心点式画距形的小功能.呵呵,</p><p>//ads_real 可以和c++自带的double 或float 换着用<br/>//ads_real a,b,a2,b2;<br/>double a,b,a2,b2;<br/> ads_point pt1,pt2,ptc;<br/> acedGetReal("\n请输入长度:",&a);<br/> acedGetReal("\n请输入宽度:",&b);<br/> acedGetPoint(NULL,"\n请输入中心点:",ptc);<br/> a2=a*0.5;<br/> b2=b*0.5;<br/> pt1=ptc-a2;<br/> pt1=ptc-b2;<br/> //pt1.x=ptc.x-a2;不是类,不能这么用<br/> //pt1.y=ptc.y-b2;<br/> pt2=ptc+a2;<br/> pt2=ptc+b2;<br/> acedCommand(RTSTR ,"RECTANGLE",RTPOINT,pt1,RTPOINT, pt2,0);<br/> acutPrintf("\n以中心点画出距形\n长度的一半%f ;\n宽度的一半%f 。",a2,b2);</p><p></p><p><br/></p>
BDYCAD
发表于 2007-4-11 17:23:00
<p>改一个选集里面所有对象的颜色的ARX代码</p><p>//编写BDYCAD<br/>//时间:2007-04-11</p><p>static void bdy_chdxf62(ads_name en)<br/>{<br/> struct resbuf *pArgs =acedGetArgs () ,*ed,*cb,*cd;<br/> int a=0;<br/> ed= acdbEntGet(en);<br/> for(cb=ed;cb!=NULL;cb=cb->rbnext)<br/> {<br/> if(cb->restype== 62)<br/> {<br/> cb->resval.rint=1;//我想把对象改为红色<br/> if(acdbEntMod(ed)!=RTNORM)<br/> {<br/> acutRelRb(ed);<br/> //return 0;<br/> }<br/> a=1;<br/> break;//处理好就跳出循环,节省时间。<br/> }<br/> }<br/> if(a==0)<br/>{<br/> for(cd=ed;cd->rbnext!=NULL;cd=cd->rbnext);//在链表尾部添加节点<br/> struct resbuf *rb=NULL;<br/> if((rb=(struct resbuf*)malloc(sizeof(struct resbuf)))!=NULL)<br/> {<br/> rb->rbnext=NULL;<br/> rb->restype=62;<br/> rb->resval.rint=1;<br/> cd->rbnext=rb;<br/> if(acdbEntMod(ed)!=RTNORM) acutPrintf("\nERR");<br/> }<br/> a=1;<br/>}<br/>// 释放内存<br/>if(ed!=NULL) acutRelRb(ed);<br/>ed=NULL;<br/>acutRelRb(ed);<br/>}<br/>static int ads_sstest(void)<br/>{<br/> //----- Remove the following line if you do not expect any argument for this ADS function<br/> struct resbuf *pArgs =acedGetArgs (),*dxf ;</p><p> // TODO: add your code here<br/> ads_name ss;<br/> if ((acedSSGet(NULL,NULL,NULL,NULL,ss))!=RTNORM)<br/> {<br/> acutPrintf("\n对不起,选不到对象");<br/> }<br/> else<br/> {<br/> int i=0;<br/> long sslen;<br/> acedSSLength(ss,&sslen);<br/> acutPrintf("\n选到了%d个对象",sslen);<br/> ads_name en1;<br/> for(i;sslen>i;i++)<br/> {<br/> acedSSName(ss,i,en1);<br/> bdy_chdxf62(en1);</p><p> }<br/> }<br/> // TODO: Replace the following line by your returned value if any<br/> acedRetVoid () ;<br/> return (RSRSLT) ;<br/>}</p>
BDYCAD
发表于 2007-4-12 16:13:00
<p>学习一下WHILE在ARX里面的用法</p><p></p><p>//2007-01-12<br/>static int ads_pointlistdraw(void)<br/>{<br/> //----- Remove the following line if you do not expect any argument for this ADS function<br/> struct resbuf *pArgs =acedGetArgs (),*entlist;</p><p> // TODO: add your code here<br/> ads_point pt1;<br/> ads_real rad=2.0;<br/> int a,b;<br/> a=acedGetPoint(NULL,"\n输入一个点:",pt1);<br/> b=0;<br/> while(a== RTNORM)//((acedGetPoint(NULL,"\n输入一个点:",pt1))==RTNORM);<br/> {<br/> //acedCommand(RTSTR ,"CIRCLE",RTPOINT,pt1,RTREAL,rad,0);<br/> entlist=NULL;<br/> entlist=acutBuildList(RTDXF0,"CIRCLE",8,"0",10,pt1,40,rad,62,1,0);<br/> acdbEntMake(entlist);<br/> b++;<br/> a=acedGetPoint(NULL,"\r输入一个点:",pt1);</p><p> }<br/> acutPrintf("\n报告:在0层画了%d个红色的小圆圆,\n谢谢使用!",b);<br/> // TODO: Replace the following line by your returned value if any<br/> acedRetVoid () ;</p><p> return (RSRSLT) ;<br/>}</p>
BDYCAD
发表于 2007-4-24 21:41:00
<div class="t_msgfont" id="message2030">要使用VS2005 + ARX2007 的一些要做的设置如下:<br/>1 ,先按ADMIN说的: <br/>将.NET2002中的如下文件mfc70.lib mfc70d.lib mfc70u.lib mfc70ud.lib mfcs70.li mfcs70.pdb mfcs70d.lib mfcs70d.pdb mfcs70u.lib mfcs70u.pdbnmfc70ud.lib mfc70ud.pdb<br/>复制到\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib。<br/>2 新建ARX程序:<br/>3 设计程序属性如下:<br/> a、在配置下拉框中选择“所有配置”;<br/> b、找到左端树结构中“配置属性->C/C++->常规”,在其右端“附加包含目录”项中填入Object <br/><br/>ARX2007下的inc文件夹路径和自己的附加文件夹的路径;警告等级选择1级(/w1)<br/> c、找到左端树结构中“配置属性->链接器->常规”,在其右端“附加库目录”项中填入<br/><br/>ObjectARX2007下的lib文件夹路径;<br/> d、找到左端树结构中“配置属性->链接器->输入”,在其右端“附加依赖项”项中填入<br/><br/>“acad.lib AcCamera.lib acdb17.lib AcDblClkEditPE.lib acdbmgd.lib AcDbMPolygon17.lib acedapi.lib AcFdEval.lib AcFdUi.lib acge17.lib acgiapi.lib achapi17.lib acismobj17.lib AcSceneOE.lib AcTc.lib AcTcUi.lib acui17.lib adui17.lib aNav.lib aseapi17.lib asiapi17.lib axdb.lib oleaprot.lib rxapi.lib”;</div>
zhang007
发表于 2007-4-30 10:12:00
基础倒是学得挺扎实的.
yuze1980
发表于 2007-5-5 00:26:00
<p>厚街男孩 版主:</p><p>你好,我需要.NET2002中的</p><p>mfc70.lib mfc70d.lib mfc70u.lib mfc70ud.lib mfcs70.li mfcs70.pdb </p><p>mfcs70d.lib mfcs70d.pdb mfcs70u.lib mfcs70u.pdbnmfc70ud.lib mfc70ud.pdb</p><p>等12个文件</p><p>你能帮帮我么?</p><p>我的信箱是<a href="mailto:jiaoxufei2005@163.com">jiaoxufei2005@163.com</a></p><p>把这12个文件发给我吧!谢谢!<br/></p>
BDYCAD
发表于 2007-5-6 09:30:00
以发到你的E-MAIL了,请查收.
guojiang
发表于 2007-5-15 17:30:00
<p>这个帖子真不错</p>