说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

菜鸟正在学习BCB5控制CAD,问题颇多,苦于缺乏资料,请大虾指点明径

编辑:说三道四文库 发布时间:2018-05-26 07:00
HTML文档下载 WORD文档下载 PDF文档下载
代码如下:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant cad,obj1,obj2,obj3;
Variant pt1,pt2,pt3,pt4;
double tmp;
pt1=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble);
tmp=150.0;
pt1.PutElement(&tmp,0);
 tmp=150.0;
pt1.PutElement(&tmp,1);
tmp=0.0;
pt1.PutElement(&tmp,2);
 pt2=pt1;
 tmp=150.0-30.0;
  pt2.PutElement(&tmp,0);
tmp=150.0-15.0;
pt2.PutElement(&tmp,1);
   pt3=pt2;
   tmp=150.0+30.0;
  pt3.PutElement(&tmp,0);
     pt4=pt1;


  tmp=150.0-20.0;
   pt4.PutElement(&tmp,1);

    cad=GetActiveOleObject("AutoCAD.Application");
    obj1=cad.OleFunction("ActiveDocument");
    obj2=obj1.OleFunction("ModelSpace");
    obj2.OleProcedure("AddBox",VarArrayRef(pt1),60.0,30.0,15.0);
    obj3=obj2.OleFunction("AddDimAligned",VarArrayRef(pt2),VarArrayRef(pt3),VarArrayRef(pt4));
      obj3.OlePropertySet("Color",3);


}

整个代码编译没问题,运行中出现:
   vt == rhs.vt @ VARIANT.CPP/421
  Press [Y]es to termianate,[N]o to continue and [C]ancel to Debug
按下“否”三次时,CAD中可以看到完整结果,按下“是”后进入VARIANT.CPP文件,如何解决此问题
另:如何更改标注中字体高度(CAD帮助中提到TextString有\H方法改动字体高度,没有成功)
呵呵,你的问题在于不要使用VarArrayRef,
改成
    cad=GetActiveOleObject("AutoCAD.Application");
    obj1=cad.OleFunction("ActiveDocument");
    obj2=obj1.OleFunction("ModelSpace");
    obj2.OleProcedure("AddBox",pt1,60.0,30.0,15.0);
    obj3=obj2.OleFunction("AddDimAligned",pt2,pt3,pt4);
    obj3.OlePropertySet("Color",3);

标注字高,我查查看..
可不可以多加点分...:)
给100分吧。
你用R14吧。
字高修改方法如下:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
//OLE命令缩写
#define  PG  OlePropertyGet
#define  PS  OlePropertySet
#define  FN  OleFunction
#define  PR  OleProcedure

Variant CadApp,ThisDrawing,ModelSpace,TextStyle,DimObj;
Variant pt1,pt2,pt3,pt4;

double tmp;
pt1=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble);
pt2=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble);
pt3=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble);
pt4=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble);


tmp=150.0;
pt1.PutElement(&tmp,0);
tmp=150.0;
pt1.PutElement(&tmp,1);
tmp=0.0;
pt1.PutElement(&tmp,2);

tmp=150.0-30.0;
pt2.PutElement(&tmp,0);
tmp=150.0-15.0;
pt2.PutElement(&tmp,1);
tmp=0.0;
pt2.PutElement(&tmp,2);


tmp=150.0+30.0;
pt3.PutElement(&tmp,0);
tmp=150.0-15.0;
pt3.PutElement(&tmp,1);
tmp=0.0;
pt3.PutElement(&tmp,2);

tmp=150.0+30.0;
pt4.PutElement(&tmp,0);
tmp=150.0-20.0;
pt4.PutElement(&tmp,1);
tmp=150.0-15.0;
pt4.PutElement(&tmp,2);



    CadApp=GetActiveOleObject("AutoCAD.Application");
    ThisDrawing=CadApp.PG("ActiveDocument");
    ModelSpace=ThisDrawing.PG("ModelSpace");



    ModelSpace.PR("AddBox",pt1,60.0,30.0,15.0);

    TextStyle=ThisDrawing.PG("ActiveTextStyle");
    TextStyle.PS("FontFile","Romans.shx");
    TextStyle.PS("Height",3);

    DimObj=ModelSpace.FN("AddDimAligned",pt2,pt3,pt4);
    DimObj.PS("Color",3);
    
    ThisDrawing.PG("ActiveViewport").PR("ZoomExtents");

}
cker(有空就玩票...甭活得忒累...)你真是高人,请问你有此类有关资料吗?
请给我一些资料,免得我三天两头提问,又要麻烦您老人家,
只要拿到有用资料,
100分-----------没问题!!!!!!!!!!!!!!!!!
(最好能告诉您的学习经验及方法)
厉害呀
高手?。。。。

CKER摔倒在键盘上 。。。。
资料就在CAD14的VBA帮助里面呀。
打开cad的帮助,什么都有。可惜都是关于VB的。
但动动脑子,问题都是可以解决的。:-)
好像您的问题,我也是打开14的帮助,然后在
AutoCAD的Automation Reference里面狂看了一通。
就找到解决之道了。

当然CKER是单位的首席CAD绘图高手。
又懂一点点BCB.....
我真的没有任何书籍在手.
CKER能不能告诉我你在那里工作
http://www.csdn.net/author/cker/
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘