int bounds[2]={0,1};
Variant Arr =VarArrayCreate(bounds,1,varVariant);
Arr.PutElement(Arc,0);
Arr.PutElement(Line,1);
ModelSpace.OleFunction("AddRegion",Arr);
Кто работает или работал с Autocad отзовитесь
Изучать ObjectARX для VisualStudio принципиально не хочется.
Все получается, пока не дошел до функции AddRegion.
Из справки автокада:
RetVal = object.AddRegion(ObjectList) - это на VisualBasic.
Как сформировать этот самый ObjectList на С++?
Пробовал по разному и так тоже:
Код:
Кто работал с Autocad, отзовитесь, please
Как вариант or concept code, но думаю не прокатит .
Нужно импортировать N-DLL
~Выбрать "import type library" из меню Project , потом select "AutoCAD... Type Library" , потом install...
теперь, типа такого
Код:
#include "AutoCAD_TLB.h"
IAcadApplicationDisp IAcad;
IAcad.BindDefault();
IAcad.Visible=True;
IAcadApplicationDisp IAcad;
IAcad.BindDefault();
IAcad.Visible=True;
Код:
Variant vCAD,vObj1,vObj2;
int bounds[2]={0,1};
Variant Arr =VarArrayCreate(bounds,1,varVariant);
Arr.PutElement(Arc,0);
Arr.PutElement(Line,1);
vCAD=GetActiveOleObject("AutoCAD.Application");
vObj1=vCAD.OleFunction("ActiveDocument");
vObj2=vObj1.OleFunction("ModelSpace");
vObj2.OleFunction("AddRegion",Arr);
// or
vObj2.OleProcedure("AddRegion",Arr);
int bounds[2]={0,1};
Variant Arr =VarArrayCreate(bounds,1,varVariant);
Arr.PutElement(Arc,0);
Arr.PutElement(Line,1);
vCAD=GetActiveOleObject("AutoCAD.Application");
vObj1=vCAD.OleFunction("ActiveDocument");
vObj2=vObj1.OleFunction("ModelSpace");
vObj2.OleFunction("AddRegion",Arr);
// or
vObj2.OleProcedure("AddRegion",Arr);
Code error много может сказать т.ч нужно их печатать.
Код:
int bounds[] = {0,1};
Arr = VarArrayCreate(bounds,1,varDispatch);
Arr.PutElement(Arc,0);
Arr.PutElement(Line,1);
Variant Region = ModelSpace.OleFunction("AddRegion",Arr);
Arr = VarArrayCreate(bounds,1,varDispatch);
Arr.PutElement(Arc,0);
Arr.PutElement(Line,1);
Variant Region = ModelSpace.OleFunction("AddRegion",Arr);
функции:
Код:
Variant Region = ModelSpace.OleFunction("AddRegion",Arr);
//Создаем массив типа Variant из N 3D точек
int BoundsA[2]={0,N-1};//массив с индексами 0,1,2 ... N-1
A = VarArrayCreate(BoundsA,1,varDouble);
double dAngle = 4*3*2*M_PI/N;//шаг по углу поворота
dZ =H/N;//шаг по Z
for(int i =0;i<(N-2);i=i+3)
{
X=cos(Angle)*Radius;
Y=sin(Angle)*Radius;
A.PutElement(X,i);
A.PutElement(Y,i+1);
A.PutElement(Z,i+2);
Z=Z+dZ;
Angle+=dAngle;
}
//рисуем полилинию, как основу для будущей пружины
PolyLine3d = ModelSpace.OleFunction("Add3Dpoly",A);
//здесь выскакивает ошибка - "Несоответствие типов!"
ModelSpace.OleFunction("AddExtrudedSolidAlongPath",Region,PolyLine3d);
//Создаем массив типа Variant из N 3D точек
int BoundsA[2]={0,N-1};//массив с индексами 0,1,2 ... N-1
A = VarArrayCreate(BoundsA,1,varDouble);
double dAngle = 4*3*2*M_PI/N;//шаг по углу поворота
dZ =H/N;//шаг по Z
for(int i =0;i<(N-2);i=i+3)
{
X=cos(Angle)*Radius;
Y=sin(Angle)*Radius;
A.PutElement(X,i);
A.PutElement(Y,i+1);
A.PutElement(Z,i+2);
Z=Z+dZ;
Angle+=dAngle;
}
//рисуем полилинию, как основу для будущей пружины
PolyLine3d = ModelSpace.OleFunction("Add3Dpoly",A);
//здесь выскакивает ошибка - "Несоответствие типов!"
ModelSpace.OleFunction("AddExtrudedSolidAlongPath",Region,PolyLine3d);