找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1276|回复: 9

[求助]:关于块的属性操作(有图片和代码)

[复制链接]
发表于 2003-6-19 10:25:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
C:\Documents and Settings\Administrator\My Documents\My Pictures

我本来是想把钢筋编号放大的 ,但效果却是仅仅放大了圆圈,里面的文字没有变化。
C:\Documents and Settings\Administrator\My Documents\My Pictures

相关代码如下:
    ads_name en;
        ads_point pt;
        ads_entsel("\n选取要缩放的钢筋编号(点选方式):",en,pt);


        //由实体名来获取对象标志符并取得块表记录
     AcDbObjectId objId;
         acdbGetObjectId(objId,en);
                       
        AcDbEntity *pEnt;
        acdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite);

        //设置比例
    AcDbBlockReference   *pBlockReference=AcDbBlockReference::cast(pEnt);
         Acad::ErrorStatus es=pBlockReference->setScaleFactors(AcGeScale3d(200,200,200));

         pBlockReference->close();

请高手看看我哪里弄错了,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2003-6-19 10:27:52 | 显示全部楼层
哎,怎么图片出不来呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 11:55:27 | 显示全部楼层
我想把一个属性块放大(属性块中有一个圆,圆内有文字),但现在只能把圆放大,里面的文字没有变化

相关代码如下:
void Zoom()
{
ads_name en;
ads_point pt;
ads_entsel("\n选取要缩放的钢筋编号(点选方式):",en,pt);


//由实体名来获取对象标志符
AcDbObjectId objId;
acdbGetObjectId(objId,en);

AcDbEntity *pEnt;
acdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite);

//设置比例
AcDbBlockReference *pBlockReference=AcDbBlockReference::cast(pEnt);
Acad::ErrorStatus es=pBlockReference->setScaleFactors(AcGeScale3d(200,200,200));

pBlockReference->close();
}

请高手看看我哪里弄错了,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 21:48:19 | 显示全部楼层
唉,看的人多,回复的人少,郁闷!
如果觉得这个问题太过简单,那鄙视抑或嘲笑下也好;
倘若觉得初学者还有需要指点的地方,那请高手帮帮忙告诉我在哪里弄错了好吗?非常感谢了。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 21:51:11 | 显示全部楼层
lihongyu2467 朋友你好
在吗?
有个问题想请教下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 21:53:17 | 显示全部楼层
kable 朋友在吗?
有个问题想请教下好吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 21:59:22 | 显示全部楼层
Galand 朋友在吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-20 14:12:01 | 显示全部楼层
这个帖子写的不清楚,请大家看“请大家帮帮忙,有源代码和图片”的帖子,谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-23 11:11:22 | 显示全部楼层
你的程序没问题!!!肯定不能放大!
是你好好看一下块属性有关的材料:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-25 08:45:59 | 显示全部楼层
谢谢 xu02118019  朋友
我这个问题已经解决了,呵呵
代码如下,
//缩放钢筋编号
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;
    }

}
        以上是把插入的属性块当作一个实体来处理的,如果哪位朋友有更好的方法请指点下新人,谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 16:03 , Processed in 0.204142 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表