找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1103|回复: 8

[求助]:请帮我写一段插入块的程序

[复制链接]
发表于 2002-6-9 11:26:54 | 显示全部楼层 |阅读模式

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

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

×
请帮我写一段插入块的程序:
读取一个dwg文件,将它插到MODEL_SPACE中,
我用VB写成功了,VC怎么写?我写的总不成功。
请斑竹和各位高手帮我

Dim blk As AcadBlockReference
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
file = "c:\78.dwg"
'
Call startacad
Set blk = acadapp.ActiveDocument.ModelSpace.InsertBlock(insertionPnt, file, 1#, 1#, 1#, 0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-6-9 22:15:55 | 显示全部楼层
说说思路也好!是不是大家都去看世界杯了,忘了我们这些菜鸟了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2002-6-9 23:06:36 | 显示全部楼层
AcDbObjectId insBK(char *file,char *kname)//含路径的文件名和插入后块名
{
AcDbObjectId id;
AcDbBlockTable *pTb;
acdbCurDwg()->getBlockTable(pTb,AcDb::kForRead);
if(pTb->getAt(kname,id)==Acad::eOk){
   pTb->close();
   //ads_printf("\n%s 已存在",kname);
   return id;
   }
pTb->close();
AcDbDatabase *pDb=new AcDbDatabase(Adesk::kFalse);
if(pDb->readDwgFile(file)!=Acad::eOk){
  delete pDb;
  return NULL;
  }
acdbCurDwg()->insert(id,kname,pDb);
delete pDb;
return id;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2002-6-9 23:15:27 | 显示全部楼层
void insBK0(AcDbObjectId id,ads_point p0,double s)
{
double a;
a=p0[Z]*3.141592654/180;
p0[Z]=0;
if(id!=NULL){
AcDbBlockReference *pbr=new AcDbBlockReference(AcGePoint3d(p0[X],p0[Y],0.0),id);
pbr->setRotation(a);
AcDbBlockTable *pBlockTable;
acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForWrite);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
pBlockTable->close();
AcGeScale3d sc(s,s,1);
pbr->setScaleFactors(sc);
pBlockTableRecord->appendAcDbEntity(pbr);
pbr->close();
pBlockTableRecord->close();
}
}
注:insBK返回图块ID,若图块不存在,插入文件并返回ID
       insBK0将ID图块插入图形,相当于插入图块命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-6-10 20:56:57 | 显示全部楼层
我用了,很好用,太感谢了,我又学会了一个函数insert(id,kname,pDb); 手册上说id是输入的,看来不太对劲。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-19 16:47:02 | 显示全部楼层
//我用此函数把一个图形拷入另外一个当前图形中,为何得不到显示的图形,只有图层被拷贝过来了请教各位
AcDbObjectId insBK(char *file,char *kname)//含路径的文件名和插入后块名
{
        AcDbObjectId id;
    AcDbBlockTable *pTb;
        AcDbDatabase *pCurDb;
        pCurDb = acdbHostApplicationServices()->workingDatabase();
    pCurDb->getBlockTable(pTb,AcDb::kForRead);
//acdbCurDwg()->getBlockTable(pTb,AcDb::kForRead);
    if(pTb->getAt(kname,id)==Acad::eOk)
        {
                pTb->close();
                //ads_printf("\n%s 已存在",kname);
        return id;
        }
        pTb->close();

        AcDbDatabase* pDb;
        char fname[100];
        if (acedFindFile(file, fname) != RTNORM)
        {
                acutPrintf("Could not find file %s.\n", file);
        return NULL;
        }
        pDb = new AcDbDatabase(Adesk::kFalse);
        if(pDb->readDwgFile(fname)!=Acad::eOk)
        {
                ads_printf("\n%s 不存在",file);
                delete pDb;
        return NULL;
        }
        ads_printf("\n%s 已存在",file);
    pCurDb->insert(id,kname,pDb,true);
//        acdbHostApplicationServices()->workingDatabase()->save();
    delete pDb;
    return id;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-19 15:00:31 | 显示全部楼层
void insertblock(AcGePoint3d pt,int layer)//插入带一个属性的块
{
        char zf[255];
        ads_point p1;
        p1[X]=pt.x;
        p1[Y]=pt.y;
        p1[Z]=pt.z;
        CString str;
        str.Format("%.2f",pt.z);
        strcpy(zf,str);//块名
        acedCommand(RTSTR,"INSERT",
                        RTSTR,"g:\\exam07\\SYMBOLS\\0208.dwg",//块文件
                        RT3DPOINT,p1,//插入块的位置
                        RTREAL,1.0,//缩放比例
                        RTREAL,1.0,//缩放比例
                        RTREAL,1.0,//缩放比例
                        RTSTR,zf,
                        0);
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 03:18 , Processed in 0.390237 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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