几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】[求助]在arx中如何使用trim和break (http://www.dimcax.com/hust/showthread.php?t=6752)

yang686526 2009-04-16 03:26 PM

【转帖】[求助]在arx中如何使用trim和break
 
[求助]在arx中如何使用trim和break
[求助]在arx中如何使用trim和break
我想在arx中使用trim和break函数,并能捕捉到图元对象的交点,不知该如何操作。望各位高手不惜赐教,最好能上传一个简单的例子,谢谢啦。
好掺,至今仍没有人回答,各位高手拜托了,想想办法帮帮忙吧
哪位兄弟知道实现方法,请不吝赐教
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42acdbblocktablerecord *getmodelspace(acdb::openmode mode){
acdbdatabase *pdwg = acdbhostapplicationservices()->workingdatabase();
acdbblocktable *pblocktable;
acdbblocktablerecord *pmodelspace;
pdwg->getsymboltable(pblocktable, acdb::kforread);
pblocktable->getat(acdb_model_space, pmodelspace, mode);
pblocktable->close();
return pmodelspace;
}
acdbobjectidarray breakentity(acdbobjectid objid,acgepoint3d spt,acgepoint3d ept){
double param1,param2;
acgepoint3d p11,p21;
acdbentity *pent;
acdbcurve *pcurve;
acdbobjectid nobjid;
acgedoublearray params;
acdbobjectidarray breaknewobjid=null;
acdbopenobject(pcurve,objid,acdb::kforwrite);
pcurve->getclosestpointto(spt,p11);
pcurve->getclosestpointto(ept,p21);
pcurve->getparamatpoint(p11,param1);
pcurve->getparamatpoint(p21,param2);
if (param1<param2){
params.append(param1);
params.append(param2);
}else{
params.append(param2);
params.append(param1);
}
acdbvoidptrarray curvesegments;
pcurve->getsplitcurves(params, curvesegments);
acdbblocktablerecord *pmodelspace=getmodelspace(acdb::kforwrite);
for (int i=0;curvesegments.length()>i;i++) {
pent=(acdbentity*)curvesegments.at(i);
pmodelspace->appendacdbentity(nobjid,pent);
breaknewobjid.append(nobjid);
pent->close();
}
pmodelspace->close();
pcurve->close();
return breaknewobjid;
}


所有的时间均为北京时间。 现在的时间是 03:33 AM.