- UID
- 59465
- 积分
- 267
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-6-18
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2003-6-25 08:48:07
|
显示全部楼层
我这个问题已经解决了,呵呵
代码如下,
//缩放钢筋编号
void Zoom()
{
//输入钢筋直径
int ss;
double dD=0;
ads_getreal("\n输入新的钢筋编号直径:",&dD);
while (true)
{
if(dD!=0)
{
ads_name en;
ads_point pt;
ss=ads_entsel("\n请选择要缩放的钢筋编号",en,pt);
if(ss!=RTNORM)
break;
//由实体名来获取对象标志符
AcDbObjectId objId;
acdbGetObjectId(objId,en);
AcDbEntity *pEnt;
acdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite);
//gCyz和gConfig为自己写的函数,GetLayerInfo是取得层名
char str[50];
gCyz_ArxBegin();
gConfig.GetLayerInfo(LBIAOZHU,NULL,str,NULL,NULL);
gCyz_ArxEnd();
//判断所选实体是否钢筋编号
if(strcmp(pEnt->layer(),str)==0)
{
AcGePoint3d InsertPnt;
InsertPnt.x = pt[X];
InsertPnt.y = pt[Y];
InsertPnt.z = 0;
AcGeMatrix3d scaler;
//5.0为*.DWG中圆的实际直径
double scale = dD/5.0;
scaler.setToScaling(scale,InsertPnt);
pEnt->transformBy(scaler);
pEnt->close();
}
else
{
ads_printf("\n没有选择或选择了不匹配实体");
}
}
else return;
}
}
以上是把插入的属性块当作一个实体来处理的,如果哪位朋友有更好的方法请指点下新人,谢谢了。 |
|