乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 160|回复: 9

学习ARX,编个初组的命令,呵呵

[复制链接]

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-3-14 14:29:00 | 显示全部楼层 |阅读模式
在使用CAD中, 我们常常要把很多根头尾相连的ARC呀LINE呀连接成一根PLINE对象,我们都是常常用CAD的PEDIT来做,我以前只能在LISP中写出来, 今天把他用ARX把这个简易的动作写出来,
    还望以后大家多多指导,我将用心学好ARX, 谢谢!
// ----- BDYCommEE._EE command (do not rename)
static void BDYCommEE_EE(void)
{
  struct resbuf cmd, rb1,rb2 , *dxf;
  ads_name Ename;
  ads_point pt1 ;
  int m,n,k;
  //acedGetVar("osmode", & os);
  cmd.restype = RTREAL;
  cmd.resval.rreal = 0;
  acedSetVar("cmdecho", &cmd);//(SETVAR "CMDECHO" 0)
  if(acedEntSel("\n请选择要串接的线:",Ename,pt1) != RTNORM)
  {acutPrintf("\n没有选到对象,请再试一次。");}
  else
  {
   acedCommand(RTSTR ,"PEDIT",RTLB,RTENAME,Ename ,RTPOINT,pt1,RTLE, RTSTR, "" ,RTSTR,"J",RTSTR,"ALL",RTSTR,"",RTSTR,"",0);
   acutPrintf("\n选到对象,自动进行连接对象了。");
  }
  // Add your code for command BDYCommEE._EE here
}
回复

使用道具 举报

5

主题

37

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
57
发表于 2007-3-22 15:32:00 | 显示全部楼层
是用sendcommand的方式啊?还以为是arx的方式呢。不过也顶一下,楼主继续努力。
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-4-5 10:45:00 | 显示全部楼层

20070405
今天又学习一点点ARX, 写个中心点式画距形的小功能.呵呵,
//ads_real 可以和c++自带的double 或float 换着用
//ads_real  a,b,a2,b2;
double a,b,a2,b2;
ads_point pt1,pt2,ptc;
acedGetReal("\n请输入长度:",&a);
acedGetReal("\n请输入宽度:",&b);
acedGetPoint(NULL,"\n请输入中心点:",ptc);
a2=a*0.5;
b2=b*0.5;
pt1[X]=ptc[X]-a2;
pt1[Y]=ptc[Y]-b2;
//pt1.x=ptc.x-a2;不是类,不能这么用
//pt1.y=ptc.y-b2;
pt2[X]=ptc[X]+a2;
pt2[Y]=ptc[Y]+b2;
acedCommand(RTSTR ,"RECTANGLE",RTPOINT,pt1,RTPOINT, pt2,0);
acutPrintf("\n以中心点画出距形\n长度的一半%f ;\n宽度的一半%f 。",a2,b2);

回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-4-11 17:23:00 | 显示全部楼层
改一个选集里面所有对象的颜色的ARX代码
//编写BDYCAD
//时间:2007-04-11
static void bdy_chdxf62(ads_name en)
{
struct resbuf *pArgs =acedGetArgs () ,*ed,*cb,*cd;
int a=0;
ed= acdbEntGet(en);
for(cb=ed;cb!=NULL;cb=cb->rbnext)
{
  if(cb->restype== 62)
  {
   cb->resval.rint=1;//我想把对象改为红色
   if(acdbEntMod(ed)!=RTNORM)
   {
    acutRelRb(ed);
    //return 0;
   }
   a=1;
   break;//处理好就跳出循环,节省时间。
  }
}
if(a==0)
{
for(cd=ed;cd->rbnext!=NULL;cd=cd->rbnext);//在链表尾部添加节点
struct resbuf *rb=NULL;
if((rb=(struct resbuf*)malloc(sizeof(struct resbuf)))!=NULL)
{
  rb->rbnext=NULL;
  rb->restype=62;
  rb->resval.rint=1;
  cd->rbnext=rb;
  if(acdbEntMod(ed)!=RTNORM) acutPrintf("\nERR");
}
a=1;
}
// 释放内存
if(ed!=NULL) acutRelRb(ed);
ed=NULL;
acutRelRb(ed);
}
static int ads_sstest(void)
{
//----- Remove the following line if you do not expect any argument for this ADS function
struct resbuf *pArgs =acedGetArgs (),*dxf ;
// TODO: add your code here
ads_name ss;
if ((acedSSGet(NULL,NULL,NULL,NULL,ss))!=RTNORM)
{
  acutPrintf("\n对不起,选不到对象");
}
else
{
  int i=0;
  long sslen;
  acedSSLength(ss,&sslen);
  acutPrintf("\n选到了%d个对象",sslen);
  ads_name en1;
  for(i;sslen>i;i++)
  {
   acedSSName(ss,i,en1);
   bdy_chdxf62(en1);
  }
}
// TODO: Replace the following line by your returned value if any
acedRetVoid () ;
return (RSRSLT) ;
}
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-4-12 16:13:00 | 显示全部楼层
学习一下WHILE在ARX里面的用法
//2007-01-12
static int ads_pointlistdraw(void)
{
//----- Remove the following line if you do not expect any argument for this ADS function
struct resbuf *pArgs =acedGetArgs (),*entlist;
// TODO: add your code here
ads_point pt1;
ads_real rad=2.0;
int a,b;
a=acedGetPoint(NULL,"\n输入一个点:",pt1);
b=0;
while(a== RTNORM)//((acedGetPoint(NULL,"\n输入一个点:",pt1))==RTNORM);
{
  //acedCommand(RTSTR ,"CIRCLE",RTPOINT,pt1,RTREAL,rad,0);
  entlist=NULL;
  entlist=acutBuildList(RTDXF0,"CIRCLE",8,"0",10,pt1,40,rad,62,1,0);
  acdbEntMake(entlist);
  b++;
  a=acedGetPoint(NULL,"\r输入一个点:",pt1);
}
acutPrintf("\n报告:在0层画了%d个红色的小圆圆,\n谢谢使用!",b);
// TODO: Replace the following line by your returned value if any
acedRetVoid () ;
return (RSRSLT) ;
}
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-4-24 21:41:00 | 显示全部楼层
要使用VS2005 + ARX2007 的一些要做的设置如下:
1  ,先按ADMIN说的:
将.NET2002中的如下文件mfc70.lib        mfc70d.lib mfc70u.lib mfc70ud.lib mfcs70.li mfcs70.pdb        mfcs70d.lib mfcs70d.pdb mfcs70u.lib        mfcs70u.pdbnmfc70ud.lib mfc70ud.pdb
复制到\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib。
2  新建ARX程序:
3   设计程序属性如下:
  a、在配置下拉框中选择“所有配置”;
   b、找到左端树结构中“配置属性->C/C++->常规”,在其右端“附加包含目录”项中填入Object
ARX2007下的inc文件夹路径和自己的附加文件夹的路径;警告等级选择1级(/w1)
   c、找到左端树结构中“配置属性->链接器->常规”,在其右端“附加库目录”项中填入
ObjectARX2007下的lib文件夹路径;
   d、找到左端树结构中“配置属性->链接器->输入”,在其右端“附加依赖项”项中填入
“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”;
回复

使用道具 举报

10

主题

131

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2007-4-30 10:12:00 | 显示全部楼层
基础倒是学得挺扎实的.
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2007-5-5 00:26:00 | 显示全部楼层
厚街男孩 版主:
你好,我需要.NET2002中的
mfc70.lib mfc70d.lib mfc70u.lib mfc70ud.lib mfcs70.li mfcs70.pdb  
mfcs70d.lib mfcs70d.pdb mfcs70u.lib  mfcs70u.pdbnmfc70ud.lib mfc70ud.pdb
等12个文件
你能帮帮我么?
我的信箱是jiaoxufei2005@163.com
把这12个文件发给我吧!谢谢!
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-5-6 09:30:00 | 显示全部楼层
以发到你的E-MAIL了,请查收.
回复

使用道具 举报

1

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
9
发表于 2007-5-15 17:30:00 | 显示全部楼层
这个帖子真不错
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-6 01:55 , Processed in 0.199448 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表