iumike 发表于 2009-7-23 08:22:11

加载行类型问题

你好!
我尝试使用以下代码在Bricscad中加载特定的行类型:
OdDbLinetypeTablePtr pLTPtr =(OdDbLinetypeTablePtr)pDb-> getLinetypeTableId()。safeOpenObject(OdDb::kForWrite);
如果(!pLTPtr-> has(_ T(" DIVIDE "))
{
//此处如果不指明default.lin的完整路径我会得到一个错误
//pDb-> loadline typefile(_ T(" DIVIDE "),_ T(" default . Lin "));
//工作正常
pDb-> loadline typefile(_ T(" DIVIDE "),_ T(" C:\ \ Documents and Settings \ \ MIKE \ \ Application Data \ \ Bricsys \ \ Bricscad \ \ v 9 \ \ en _ US \ \ support \ \ default . Lin "));
}
如何在一般情况下使用loadLineTypeFile(..) ?
我试图在注册表中找到一些对我有帮助的信息,但是我没有找到关于线型文件的其他信息。
有什么想法吗?
迈克
**** Hidden Message *****

Keith™ 发表于 2009-7-23 08:35:06

如果您知道支持文件夹名称或它是否存储在注册表中,您可以获取它并附加文件名。为了增加错误检查,您还可以在调用函数加载线型之前验证文件是否存在。
您可以使用这个简单的函数来验证文件是否存在,然后继续使用您的函数:
#include
bool FileExists(string strFilename)
{
    struct stat stFileInfo;
    bool blnReturn;
    int intStat;
    // Attempt to get the file attributes
    intStat = stat(strFilename.c_str(),&stFileInfo);
    if(intStat == 0)
    // We were able to get the file attributes so the file obviously exists.
    {
      blnReturn = true;
    }
    else
    // We were not able to get the file attributes.
    {
      blnReturn = false;
    }
return(blnReturn);
}

iumike 发表于 2009-7-23 08:46:58

我可能会尝试使用sds_findfile

iumike 发表于 2009-7-23 08:55:10

大家好!
我不确定哪种方法最快,但我会同时尝试这两种方法和另一种使用Bricscad注册表中SRCHPATH变量的方法。看起来第一价值数据正是我正在寻找的支持途径。
非常感谢您!
迈克

iumike 发表于 2009-7-23 08:58:33

它位于搜索路径中,您可以在promt
(findfile“default.lin”)
中使用lisp进行尝试

iumike 发表于 2009-7-23 09:33:22

sds_findfile()非常完美!
谢谢!
迈克

iumike 发表于 2009-7-23 09:48:30

我用这个,当我知道。它位于支持的路径之一。-
以防他们侵入该函数:acdbLoadLineTypeFile
if (acdbLoadLineTypeFile(_T("OCULTA1"), _T("civilcad.lin"), acdbHostApplicationServices()->workingDatabase()) == Acad::eOk)
        acutPrintf(_T("\nLinetype loaded. \n"));
else
        acutPrintf(_T("\nLinetype not loaded. \n"));
页: [1]
查看完整版本: 加载行类型问题