找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 788|回复: 7

[ARX程序]:讨论一下字典中的问题

[复制链接]
发表于 2004-7-20 17:22:31 | 显示全部楼层 |阅读模式

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

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

×
我自己新建了一个类,生成了许多对象,我想把它们都加到字典中去,但是好像        pDict->setAt("OBJ2", pObj2, rId2);  我不想输入他们的searchkey,字典能自动生成么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-7-20 20:49:15 | 显示全部楼层
没有searchkey,怎么成“字典”?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-21 08:58:59 | 显示全部楼层
我不想为每个对象命名啊,太多了,我只是想把他们组织到一起,然后从中间选择出符合条件的对象,返回ID就可以了啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-21 18:49:48 | 显示全部楼层

  1. char    name[12];
  2. int       n=0;

  3. name[0]  =  'A';

  4. //.............loop
  5.     itoa( ++n, name+1, 16);
  6.     pDict->setAt(name, pObj2, rId2);
  7. //.............
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-24 09:36:15 | 显示全部楼层
#include "StdAfx.h"
#include "StdArx.h"
//#include ".\pmtDBX\PFGpmtinit.h"
#include <dbsymtb.h>
#include <math.h>

#include "CommonUtils.h"


//&Atilde;ü&Atilde;&ucirc;&para;&Ocirc;&Iuml;ó&acute;&Ecirc;&micro;&auml;&Ouml;&ETH;&Icirc;&THORN;&Euml;ù&ETH;è&Eacute;ú&sup3;&Eacute;&micro;&Auml;&acute;&Ecirc;&micro;&auml;&pound;¨dictName&pound;&copy;&Ecirc;±&Eacute;ú&sup3;&Eacute;&acute;&Ecirc;&micro;&auml;&pound;&not;&micro;±DdictName&acute;&aelig;&Ocirc;&Uacute;&Ecirc;±&Ouml;±&frac12;&Oacute;·&micro;&raquo;&Oslash;
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();
}

//&frac12;&laquo;×&Ocirc;&para;¨&Ograve;&aring;&para;&Ocirc;&Iuml;ópObj&frac14;&Oacute;&Egrave;&euml;&acute;&Ecirc;&micro;&auml;dictName&pound;&not;&para;&Ocirc;&Iuml;ó&Atilde;&ucirc;&Icirc;&ordf;objectName&iexcl;&pound;&acute;&Ecirc;&micro;&auml;dictName&sup2;&raquo;&acute;&aelig;&Ocirc;&Uacute;&Ecirc;±&pound;&not;&micro;÷&Oacute;&Atilde;creatDictionary()&Eacute;ú&sup3;&Eacute;&iexcl;&pound;
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)     //&Ecirc;&sup1;&Oacute;&Atilde;if(pDict)&sup2;&raquo;&Auml;&Uuml;&AElig;&eth;&micro;&frac12;&Aring;&ETH;&para;&Iuml;&micro;&Auml;×÷&Oacute;&Atilde;&iexcl;&pound;
        {
        // add new objects to the dictionary,
        // then close them.
        AcDbObjectId rId1;
        pDict->setAt(objectName, pObj, rId1);
        pDict->close();    //&sup2;&raquo;&Auml;&Uuml;·&Aring;&Ocirc;&Uacute;&cedil;&Atilde;&acute;&brvbar;{}&Ouml;&reg;&Iacute;&acirc;&pound;&not;&frac14;&acute;&Icirc;&acute;&Auml;&Uuml;&Otilde;&yacute;&sup3;&pound;&raquo;&ntilde;&Egrave;&iexcl;&pound;&not;&frac34;&Iacute;&Icirc;&THORN;&Euml;ù&Icirc;&frac12;&sup1;&Oslash;±&Otilde;&pound;&not;·&ntilde;&Ocirc;ò&sup3;&ouml;&acute;í&iexcl;&pound;
        }
//  pDict->close();  

}

//&cedil;ù&frac34;&Yacute;CAD&Aacute;&frac12;&micro;&atilde;×&oslash;±ê&frac14;°&para;&Ocirc;&Oacute;&brvbar;&micro;&Auml;&acute;ó&micro;&Oslash;×&oslash;±ê&pound;¨&frac34;&shy;&Icirc;&sup3;&frac34;à&pound;&copy;&frac14;&AElig;&Euml;&atilde;&Aacute;&frac12;×&oslash;±ê&Iuml;&micro;&micro;&Auml;&frac14;&ETH;&frac12;&Ccedil;angle&frac14;°±&Egrave;&Agrave;&yacute;×&ordf;&raquo;&raquo;&Iuml;&micro;&Ecirc;&yacute;K
//&frac14;&AElig;&Euml;&atilde;&acute;ó&micro;&Oslash;×&oslash;±ê&Iuml;&micro;&Ocirc;&shy;&micro;&atilde;&Ocirc;&Uacute;CAD&Ecirc;&Agrave;&frac12;&ccedil;×&oslash;±ê&Iuml;&micro;&Ouml;&ETH;&micro;&Auml;&Ocirc;&shy;&micro;&atilde;×&oslash;±êearthorg
//&ordm;&macr;&Ecirc;&yacute;return&frac14;&ETH;&frac12;&Ccedil;&pound;&not;&AElig;&auml;&micro;&yen;&Icirc;&raquo;&Icirc;&ordf;&raquo;&iexcl;&para;&Egrave;
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);  //&Iuml;&szlig;&para;&Icirc;&Oacute;&euml;X&Ouml;á&micro;&Auml;&frac14;&ETH;&frac12;&Ccedil;
        ae=atan2(n,e);  //&Iuml;&szlig;&para;&Icirc;&Oacute;&euml;E&Ouml;á&micro;&Auml;&frac14;&ETH;&frac12;&Ccedil;

        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;
}
//&frac12;&laquo;CAD×&oslash;±ê×&ordf;&raquo;&raquo;&Icirc;&ordf;&acute;ó&micro;&Oslash;×&oslash;±ê
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]));
}
//&frac12;&laquo;&acute;ó&micro;&Oslash;×&oslash;±ê×&ordf;&raquo;&raquo;&Icirc;&ordf;CAD×&oslash;±ê
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;
}
// &Aring;&ETH;&para;¨&micro;±&Ccedil;°&Iacute;&frac14;&ETH;&Icirc;&Ouml;&ETH;&Oacute;&ETH;&Icirc;&THORN;&cedil;&oslash;&para;¨&iquest;é&Atilde;&ucirc;&micro;&Auml;&iquest;é±í&frac14;&Ccedil;&Acirc;&frac14;&pound;&not;&Oacute;&ETH;·&micro;&raquo;&Oslash;true&iexcl;&cent;&Iacute;&not;&Ecirc;±·&micro;&raquo;&Oslash;&AElig;&auml;id&pound;&not;
//·&ntilde;&Ocirc;ò·&micro;&raquo;&Oslash;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;
        }
}
// °&Ntilde;&Ograve;&raquo;&Iacute;&frac14;&ETH;&Icirc;&Icirc;&Auml;&frac14;&thorn;dwg&sup2;&aring;&Egrave;&euml;&micro;±&Ccedil;°&Iacute;&frac14;&ETH;&Icirc;×÷&Icirc;&ordf;&Ograve;&raquo;&iquest;é&pound;&not;&sup2;&cent;&cedil;&oslash;&Oacute;è&iquest;é&Atilde;&ucirc;&iexcl;&pound;&Egrave;&ocirc;&Oacute;&ETH;&Iacute;&not;&Atilde;&ucirc;&iquest;é&frac34;&Iacute;&sup2;&raquo;&Ocirc;&Ugrave;&sup2;&aring;&Egrave;&euml;&iexcl;&pound;
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("&para;&Aacute;&Icirc;&Auml;&frac14;&thorn;&acute;í");
                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;
        }

}

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

使用道具 举报

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

使用道具 举报

发表于 2004-7-31 22:33:19 | 显示全部楼层
看到ARX的源代码,我的反映就是不管是什么内容先下了再说。
因为我在学习……
学习中……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-5 14:43:13 | 显示全部楼层
中文不能显示,这个问题我也碰到过,只是后来莫名其妙地好了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 22:16 , Processed in 0.404973 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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