环形阵列函数问题
环形阵列函数问题
各位大侠帮帮忙,此代码为画一圆,然后将其环形阵列,调试没有错,却在cad执行时cad中断,估计还是代码有问题,一下为我的代码
lpdispatch pappdisp;
pappdisp = acedgetacadwinapp()->getidispatch(true);
variant parrayobjs;
variantinit(&parrayobjs);
v_vt(&parrayobjs) = vt_array | vt_dispatch;
double val[3] = {0,0,0};
variant basepoint ;
ctransutil

intstovariant (val,&basepoint);//将double型数组转换为variant型
acgepoint3d ptcenter(100, 100, 0);
acdbobjectid objid=ctransutil::createcircle(ptcenter, 20);//创建一个以100,100为圆心以20为半径的圆
if (succeeded(acaxarraypolar(objid,pappdisp,4,2*(ctransutil:i()),basepoint,&parrayobjs)))acutprintf("\nsucceeded");
//将double转换为variant型函数原型
void ctransutil

intstovariant (double* pt,variant *a)
{safearraybound rgsabound;
rgsabound.llbound=0l;
rgsabound.celements=3;
safearray* psa=null;
psa=safearraycreate(vt_r8,1,&rgsabound);
for(long i=0;i<3;i++)
{if( failed(safearrayputelement(psa,&i,&pt[i])))
acutprintf("\nputelement failed");
}
v_vt(a)=vt_array | vt_r8;
v_array(a)=psa;}
basepoint 有问题,因为它的parray所指的数组psa生命期已经结束了,parray所指的内容是不确定的。
truetable: cad和excel表格转换