找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: rave

[日积月累]:Arx函数集,网友自制

 火... [复制链接]
发表于 2004-4-9 17:26:58 | 显示全部楼层
我认为至少有两个地方要处理
1.pt0要是在区域内可能会一个交点都没有
2.如果交点正好在区域的端点上也会出错,一个交点会被计算2次!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-14 11:09:38 | 显示全部楼层
//添加扩展数据
//实体添加扩展数据(字符串)
bool AddXData(CString appName, AcDbObjectId entId,CString data)
{
        //open entity for read
        AcDbEntity*pEnt;
        Acad::ErrorStatus es=acdbOpenAcDbEntity(pEnt,entId,AcDb::kForRead);
        if(es!=Acad::eOk)
        {
                ads_printf("error in open entity\n");
                return false;
        }
        //get XData buffer
        struct resbuf*pRb,*pTemp;
        pRb=pEnt->xData(appName);
        if(pRb!=NULL)//have XData
        {
                //pTemp移到表尾
                pTemp=pRb;
                for(pTemp=pRb;pTemp->rbnext!=NULL;pTemp=pTemp->rbnext){;}
        }
        else//NOT have XData
        {
                //create new xData
                ads_regapp(appName);
                pRb=ads_newrb(AcDb::kDxfRegAppName);
                pRb->resval.rstring=(char*)malloc(appName.GetLength()+1);
                strcpy(pRb->resval.rstring,appName);
                pTemp=pRb;
        }
        //fill xData string
        pTemp->rbnext=ads_newrb(AcDb::kDxfXdAsciiString);
        pTemp=pTemp->rbnext;
        pTemp->resval.rstring=(char*)malloc(data.GetLength()+1);
        strcpy(pTemp->resval.rstring,data);
        //add xData
        es=pEnt->upgradeOpen();
        if(es!=Acad::eOk)
        {
                ads_printf("\nError occur in updateOpen.");
                pEnt->close();
                ads_relrb(pRb);
                return false;
        }
        es=pEnt->setXData(pRb);
        if(es!=Acad::eOk)
        {
                ads_printf("\nError occur in setXData.");
                pEnt->close();
                ads_relrb(pRb);
                return false;
        }
        //
        pEnt->close();
        ads_relrb(pRb);
        return true;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-6-12 18:33:10 | 显示全部楼层
//发命令前加按了两个ESCAPE
void SendCommand(char *cmd)
{
    HWND wnd;
    char cp[3];

    wnd = adsw_acadMainWnd();
    if(!wnd) return;

    COPYDATASTRUCT cmddata;
    cp[0] = VK_ESCAPE;
    cp[1] = VK_ESCAPE;
    cp[2] = NULL;
    cmddata.dwData = (DWORD)1;
    cmddata.cbData = (DWORD)strlen(cp)+1;       
    cmddata.lpData = cp;                                          
    SendMessage(wnd,WM_COPYDATA,(WPARAM)cp,(LPARAM)&cmddata);

    cmddata.dwData = (DWORD)1;
    cmddata.cbData = (DWORD)strlen(cmd)+1;       
   cmddata.lpData = cmd;                                         
  SendMessage(wnd,WM_COPYDATA,(WPARAM)wnd,(LPARAM)&cmddata);
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-17 20:56:39 | 显示全部楼层
//函数功能:根据用户指定的两点,自动创建破断线
void CAD_EXTBreakLine()
{       
        acutPrintf("指定两点,自动创建折线破断线\n");
       
        ads_point StartPoint,EndPoint;
        if(acedGetPoint(NULL,"\n请指定破断线的起点:",StartPoint)!=RTNORM)                return;
        if(acedGetPoint(StartPoint,"\n请指定破断线的终点:",EndPoint)!=RTNORM)                return;
        AcGePoint3d Start,End;
        End        =        AcGePoint3d(EndPoint[X],EndPoint[Y],0);
        Start                =        AcGePoint3d(StartPoint[X],StartPoint[Y],0);
        float        Length = Start.distanceTo(End);

        AcGeVector3d        Normal = End-Start;
        Normal        =        Normal.normal(AcGeContext::gTol);
       
        AcGePoint3d Point1(Start-Length*Normal*0.15);
        AcGePoint3d Point2(Start+Length*Normal*0.45);
        AcGePoint3d Point5(End-Length*Normal*0.45);
        AcGePoint3d Point6(End+Length*Normal*0.15);

        AcGeVector3d Normal2(-Normal.y,Normal.x,0);
        AcGePoint3d Point3(Start+Length*Normal*0.5+Length*Normal2*0.10);
        AcGePoint3d Point4(Start+Length*Normal*0.5-Length*Normal2*0.10);

        AcGePoint3dArray vertices;
        vertices.append(Point1);
        vertices.append(Point2);
        vertices.append(Point3);
        vertices.append(Point4);
        vertices.append(Point5);
        vertices.append(Point6);
        AddNewLayer("COMMANTARY");
        AcDb2dPolyline* pBreakLine = new AcDb2dPolyline(AcDb::k2dSimplePoly,vertices,0,Adesk::kTrue,0,0,NULL);
        pBreakLine->setLayer("COMMANTARY",TRUE);

        AcGeMatrix3d        mat;
        acdbUcsMatrix(mat,acdbHostApplicationServices()->workingDatabase());
        pBreakLine->transformBy(mat);
       
        pBreakLine->makeOpen();
        AddEntityToDb(pBreakLine);

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

使用道具 举报

发表于 2004-6-18 17:02:03 | 显示全部楼层
//******************生成回转体**********************
/*        pt -- 旋转基点
        ver -- 旋转轴
        angle -- 旋转角度(角度制)
        注意: 旋转轴不能垂直于面域平面、不能穿过面域*/
//**************************************************
void CreatRevolve(AcDbObjectId entid,
                                                                AcGeVector3d normal,
                                                                AcGePoint3d pt,
                                                                AcGeVector3d ver,
                                                                double angle)
{
        Acad::ErrorStatus es;       
        AcDbCurve    *curve;
        AcDbObjectId     tm;
        if (acdbOpenObject(curve,entid,AcDb::kForWrite)!=Acad::eOk)
        {
                acutPrintf("打开实体失败!");
                return ;               
        }
        AcDbVoidPtrArray  lines,regions1;
        lines.append((void*)curve);
        curve->close();
        es = AcDbRegion::createFromCurves(lines,regions1);
        if(es != Acad::eOk)
        {
                acutPrintf("获得面域失败!");
                return ;
        }
        angle = angle*PI/180;
        AcDbRegion *pregion1=AcDbRegion::cast((AcRxObject*)regions1[0]);
        AcDb3dSolid *p3dobj = new AcDb3dSolid;
        es = p3dobj->revolve(pregion1,pt,ver,angle);
        if (es != Acad::eOk)
        {
                acutPrintf("建立回转体失败!请检查回转轴和基准点是否正确!");               
        }
        pBlockTableRecord->appendAcDbEntity(tm,p3dobj);
        p3dobj->close();
        delete pregion1;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 12:40:08 | 显示全部楼层
在ObjectARX 实现 Command 的 *Cancel* [/COLOR]功能:  (类似 AutoLISP 中的 ^C)
acedCommand(0); [/COLOR]  // 就可以了
例如:
acedCommand (RTSTR, "dim1",  RTSTR, "leader",  RTSTR, "0,0", RTSTR, "10,10", 0);
acedCommand (0);

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

使用道具 举报

发表于 2004-6-21 22:41:48 | 显示全部楼层
//复制对象
void cloneSameOwnerObjects()
{
    // Step 1:  Obtain the set of objects to be cloned.
    ads_name sset;

    if (acedSSGet(NULL, NULL, NULL, NULL, sset) != RTNORM) {
        acutPrintf("\nNothing selected");
        return;
    }

    // Step 2: Add obtained object IDs to list of objects
    // to be cloned.
    long length;
    acedSSLength(sset, &length);
    AcDbObjectIdArray  objList;
    AcDbObjectId ownerId = AcDbObjectId::kNull;

    for (int i = 0; i < length; i++) {
        ads_name ent;
        acedSSName(sset, i, ent);
        AcDbObjectId objId;
        acdbGetObjectId(objId, ent);

        // Check to be sure this has the same owner as the first
        // object.
        //
        AcDbObject *pObj;
        acdbOpenObject(pObj, objId, AcDb::kForRead);

        if (pObj->ownerId() == ownerId)
            objList.append(objId);
        else if (i == 0) {
            ownerId = pObj->ownerId();
            objList.append(objId);
        }
        pObj->close();
    }

    acedSSFree(sset);

    // Step 3: Get the object ID of the desired owner for
    // the cloned objects.  We'll use model space for
    // this example.
    //
    AcDbBlockTable *pBlockTable;
    acdbHostApplicationServices()->workingDatabase()
        ->getSymbolTable(pBlockTable, AcDb::kForRead);

    AcDbObjectId  modelSpaceId;
    pBlockTable->getAt(ACDB_MODEL_SPACE, modelSpaceId);
    pBlockTable->close();

    // Step 4:  Create a new ID map.
    //
    AcDbIdMapping idMap;

    // Step 5: Call deepCloneObjects().
    //
    acdbHostApplicationServices()->workingDatabase()
        ->deepCloneObjects(objList, modelSpaceId, idMap);

    // Now we can go through the ID map and do whatever we'd
    // like to the original and/or clone objects.
    //
    // For this example, we'll print out the object IDs of
    // the new objects resulting from the cloning process.
    //
    AcDbIdMappingIter iter(idMap);
    for (iter.start(); !iter.done(); iter.next()) {
        AcDbIdPair idPair;
        iter.getMap(idPair);
        if (!idPair.isCloned())
            continue;
        acutPrintf("\nObjectId is: %Ld",

            idPair.value().asOldId());
    }

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

使用道具 举报

发表于 2004-7-2 14:27:24 | 显示全部楼层
void selObj()
{
#ifdef OARXWIZDEBUG
        acutPrintf ("\nOARXWIZDEBUG - caditdellayObjdellayObj() called.");
#endif // OARXWIZDEBUG
ads_name ents;
        struct resbuf *rb;
        AcDbEntity * pEnt;
        AcDbText *sText;
        AcDbObjectId  objId;
        ads_name      ent;
         rb=acutNewRb(AcDb::kDxfLayerName);         
         rb->rbnext=acutNewRb(AcDb::kDxfRegAppName);         
         rb->restype=8;
         rb->resval.rstring="001";
         rb=rb->rbnext;
         rb->restype=1001;
     rb->resval.rstring ="ll";
         rb->rbnext=NULL;
         acedSSGet("X",NULL,NULL,rb,ents);
         long entNums=0;
         
         acedSSLength(ents,&entNums);
         if (entNums!= 0)
                {  
               
         
                  for (long a = 0; a < entNums ; a ++)
                  {

                           acedSSName(ents,a,ent);

                //           ads_entdel(ent);
                           acdbGetObjectId(objId, ent);
                           acdbOpenObject(pEnt, objId,AcDb::kForRead);
                           if(pEnt->isKindOf(AcDbText::desc()))
                           {
                                        pEnt->close();
                                        acdbOpenObject(sText, objId,AcDb::kForWrite);
                                        ads_printf(sText->textString());
                                        if (strcmp(sText->textString(),"text")==0)
                                        {       
                                                sText->setHeight(100);
                                                sText->setTextString("HELLO");
                                                sText->setColorIndex(5);
                                        }
                                    sText->close();                          
                                }
                           else
                                   {
                                                pEnt->close();
                                   }
                  }
         }
         
         acedSSFree(ents);
         acutRelRb(rb);
        // TODO: Implement the command

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

使用道具 举报

发表于 2004-7-4 16:35:22 | 显示全部楼层
线和面求交,线和三角形交.

bool InterSection(XRay& ray,XPlan& plan,XPoint& point,float & t)
{
t = 0;

/***

-D - P0 * N(A,B,C)
t = --------------------
d * N(A,B,C)

其中D 为平面方程中的D,
P0为射线的起点。而 d 为射线的方向

**/
t= -(plan.D  + ray.m_Point.x * plan.A + ray.m_Point.y * plan.B + ray.m_Point.z * plan.C);
float t2 = (ray.m_Dir.x * plan.A + ray.m_Dir.y * plan.B + ray.m_Dir.z * plan.C) ;

if(t2 == 0.00)
return false;

t /= t2;


//求出交点
point  = ray.m_Point + ray.m_Dir * t;

if( t < 0)
return false;

return true;
}


bool    InterSection(XRay& ray,XTriangle& tri,XPoint& point,float & t)
{

XVector3D v1 = tri.m_points[1] - tri.m_points[0];
XVector3D v2 = tri.m_points[2] - tri.m_points[0];

XVector3D n = v1.cp(v2);
/**********************************************************************
ray = p0 + D * t
Tri : p1 - p3

(P2-P1) X (P3-P1) = N

N * (P - P1) = 0  ===>
N * (P0 + D * t - P1)  = 0

==>

N * (P0 - P1) + N * D * t = 0;
(P1-P0) * N
t = ----------------------
D * N
******************************************************************/
t = n.dp(tri.m_points[0] - ray.m_Point);
t /= (ray.m_Dir.dp(n));
if( t < 0)
return false;

//求出交点
point  = ray.m_Point + ray.m_Dir * t;

//判断点是不是在三角内部
v1 = point - tri.m_points[0];
v2 = point - tri.m_points[1];
XVector3D v3 = point - tri.m_points[2];

n = v1.cp(v2);
XVector3D n1 = v2.cp(v3);

if(n.isZero())
return true;
if(n1.isZero())
return true;

if( n.x * n1.x <= 0 )
return false;
if( n.y * n1.y <= 0 )
return false;
if( n.z * n1.z <= 0 )
return false;

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

使用道具 举报

发表于 2004-7-7 20:56:46 | 显示全部楼层
最初由 little_stone (46楼楼主) 发布
[B]void selObj()
{
#ifdef OARXWIZDEBUG
        acutPrintf ("\nOARXWIZDEBUG - caditdellayObjdellayObj() called.");
#endif // OARXWIZDEBUG
ads_name ents;
        struct resbuf *rb;
        AcDbEntity * pEnt;
        AcDbText ... [/B]




............................
rb=acutNewRb(AcDb::kDxfLayerName);   // ?1 [/COLOR]
rb->rbnext=acutNewRb(AcDb::kDxfRegAppName);  // ?2[/COLOR]
rb->restype=8;   // ?1 [/COLOR]
rb->resval.rstring="001";     //Serious Error !!! [/COLOR]
rb=rb->rbnext;                     //Serious Error !!! [/COLOR]
rb->restype=1001;    // ?2[/COLOR]
rb->resval.rstring ="ll";        //Serious Error !!! [/COLOR]
rb->rbnext=NULL;
..........................
acutRelRb(rb);
[/COLOR]
====>> may cause  AutoCAD  collapsed !!![/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-24 09:21:07 | 显示全部楼层
第一页顶函数中AcDbLayerTableRecordPointer是何类?是否应为AcDbLayerTableRecord  *  

贴上开发项目中的部分代码

#include "StdAfx.h"
#include "StdArx.h"
//#include ".\pmtDBX\PFGpmtinit.h"
#include <dbsymtb.h>
#include <math.h>

#include "CommonUtils.h"


//命名对象词典中无所需生成的词典(dictName)时生成词典,当DdictName存在时直接返回
void createDictionary(char *dictName)
{
    AcDbDictionary *pNameDict;
    acdbHostApplicationServices()->workingDatabase()->
        getNamedObjectsDictionary(pNameDict, AcDb::kForWrite);


    AcDbDictionary *pDict;
    if (pNameDict->getAt(dictName, (AcDbObject*&) pDict,
        AcDb::kForWrite) == Acad::eKeyNotFound)
    {
        pDict = new AcDbDictionary;
        AcDbObjectId DictId;
        pNameDict->setAt(dictName, pDict, DictId);
    }
    pNameDict->close();
    pDict->close();
}

//将自定义对象pObj加入词典dictName,对象名为objectName。词典dictName不存在时,调用creatDictionary()生成。
void addObjectToDict(AcDbObject *pObj,char *objectName,char *dictName)
{
        createDictionary(dictName);

    AcDbDictionary *pNamedobj;
    acdbHostApplicationServices()->workingDatabase()
        ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);

        Acad::ErrorStatus es;
    AcDbDictionary *pDict;
    es=pNamedobj->getAt(dictName, (AcDbObject*&)pDict,
        AcDb::kForWrite);

    pNamedobj->close();

    if (es==Acad::eOk)     //使用if(pDict)不能起到判断的作用。
        {
        // add new objects to the dictionary,
        // then close them.
        AcDbObjectId rId1;
        pDict->setAt(objectName, pObj, rId1);
        pDict->close();    //不能放在该处{}之外,即未能正常获取,就无所谓关闭,否则出错。
        }
//  pDict->close();  

}

//根据CAD两点坐标及对应的大地坐标(经纬距)计算两坐标系的夹角angle及比例转换系数K
//计算大地坐标系原点在CAD世界坐标系中的原点坐标earthorg
//函数return夹角,其单位为弧度
float EonAndXoyAngle(ads_point cadPt1,ads_point cadPt2,ads_point earthPt1,ads_point earthPt2,double &k,ads_point &earthOrg)
{
        float angle;
        double n,e,x,y;
        float ax,ae;

               
        n=(earthPt2[Y]-earthPt1[Y]);
        e=(earthPt2[X]-earthPt1[X]);
        x=(cadPt2[X]-cadPt1[X]);
        y=(cadPt2[Y]-cadPt1[Y]);

    k=sqrt((n*n+e*e)/(x*x+y*y));

        ax=atan2(y,x);  //线段与X轴的夹角
        ae=atan2(n,e);  //线段与E轴的夹角

        angle=(ax-ae);

    earthOrg[X]=cadPt1[X]-(cos(angle)*earthPt1[X]-sin(angle)*earthPt1[Y])/k;
    earthOrg[Y]=cadPt1[Y]-(cos(angle)*earthPt1[Y]+sin(angle)*earthPt1[X])/k;
        return angle;
}
//将CAD坐标转换为大地坐标
void xyToEn(ads_point cadPt,ads_point& earthPt,ads_point earthOrg,float angle, double k)
{
    earthPt[X]=k*(cos(angle)*(cadPt[X]-earthOrg[X])+sin(angle)*(cadPt[Y]-earthOrg[Y]));
    earthPt[Y]=k*(-sin(angle)*(cadPt[X]-earthOrg[X])+cos(angle)*(cadPt[Y]-earthOrg[Y]));
}
//将大地坐标转换为CAD坐标
void enToXY(ads_point earthPt,ads_point& cadPt,ads_point earthOrg,float angle, double k)
{
    cadPt[X]=earthOrg[X]+(cos(angle)*earthPt[X]-sin(angle)*earthPt[Y])/k;
    cadPt[Y]=earthOrg[Y]+(cos(angle)*earthPt[Y]+sin(angle)*earthPt[X])/k;
}
// 判定当前图形中有无给定块名的块表记录,有返回true、同时返回其id,
//否则返回flase
bool existBlock(char* pBlockName,AcDbObjectId &blockId)
{
        AcDbBlockTable* pBlockTable;

        acdbHostApplicationServices()->workingDatabase()
                ->getSymbolTable(pBlockTable,AcDb::kForRead);
        if(pBlockTable->has(pBlockName))
        {
                pBlockTable->getAt(pBlockName,blockId);
        pBlockTable->close();
                return true;
        }
        else
        {
        pBlockTable->close();
                return false;
        }
}
// 把一图形文件dwg插入当前图形作为一块,并给予块名。若有同名块就不再插入。
bool insertDwgToCurDwg(char* pFullPathFile,char* pBlockName,AcDbObjectId &blockId)
{
        AcDbDatabase *pNewDb,*pCurDb;
        Acad::ErrorStatus es;
       
        if(existBlock(pBlockName,blockId))
        {
                return true;
        }


        pNewDb=new AcDbDatabase(Adesk::kFalse);
        es=pNewDb->readDwgFile(pFullPathFile, _SH_DENYNO,false);
    if (es!=Acad::eOk)
        {
        acutPrintf("读文件错");
                delete pNewDb;
        return false;  
        }
       
    pCurDb =acdbHostApplicationServices()->workingDatabase();
    if((es=pCurDb->insert(blockId, pBlockName,pNewDb, true))==Acad::eOk)
        {
  
                delete pNewDb;
                return true;
        }
    else
        {
        delete pNewDb;
        return false;
        }

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

使用道具 举报

发表于 2004-9-9 19:46:37 | 显示全部楼层
是啊是啊,经常来学习学习,对自己对大家都有好处,热切
期盼成长中,,,,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-11 10:45:09 | 显示全部楼层
那超级简单的东本就不要列上来了哦,随便找书就有,又不进行错误处理,小心暴了

没意思

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:51 , Processed in 0.442952 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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