Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341410
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:07:19

象使用BCB操作Word\Exel一样,可使用使用BCB操作AutoCAD,但本人试过如下代码,部分成功,部分不成功,不知为何:

Variant Acad,ADoc,Layers,Circle,Utility,Point2;
Variant p1,p2,p3,p4,MSpace,PSpace;
try{
Acad=GetActiveOleObject("AutoCAD.Application");//取得已运行的AutoCAD.Application对象   ,成功
}
catch(EOleSysError &E){
Acad=CreateOleObject("AutoCAD.Application");   //创建新的AutoCAD.Application对象       ,成功
}
Acad.Exec(PropertySet("Visible")<ADoc = Acad.OlePropertyGet("ActiveDocument");
Layers = ADoc.OlePropertyGet("Layers");
p2= Layers.Exec(Function("Add")<<"Test1");//添加图层Test1,图层Test1对象存入p2                    ,成功
p2.Exec(PropertySet("color")<<1);         //设图层Test1对象的color 为1(红色)                   ,成功
MSpace = ADoc.OlePropertyGet("modelspace");
PSpace = ADoc.OlePropertyGet("paperspace");
Utility=ADoc.OlePropertyGet("Utility");

double pp1[4],pp2[4];
//创建数组,用于存放点(10,20)的坐标:
int Bounds[2] = {0,2};
Variant A = VarArrayCreate(Bounds,1, varDouble);
A.PutElement(10.0,0);
A.PutElement(20.0,1);
A.PutElement(0.00,2);

pp2[0]=A.GetElement(0);
pp2[1]=A.GetElement(1);
pp2[2]=A.GetElement(2);
//创建数组完毕;

MSpace.Exec(Function("AddPoint")<
ADoc.Exec(Function("SaveAs")<<"c:\\000.dwg");//保存图形为"c:\\000.dwg", 成功
Acad.Exec(Function("Quit"));//退出Acad;                               , 成功


不知那位大虾有此经历,有何办法?


本人以为,使用BCB操作AutoCAD,需解决的问题包括:
1、取得已运行的AutoCAD.Application对象 或 创建新的AutoCAD.Application对象;
2、创建图层并设置其颜色、可视、线形等属性;
3、在当前图层中绘制点、线、圆、文本等实体;
4、保存图件;
5、退出AutoCAD。

上述问题,有劳各位大虾们指教。
    av8740@126.com


--------------------next---------------------

阅读(1240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~