天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 141|回复: 0

[每日一码] 如何通过程序创建一个多线样式(AcDbMlineStyle)

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 19:38:45 | 显示全部楼层 |阅读模式
    1. // minimal error checking for code brevity
    2. void createMlineStyle()
    3. {
    4.     AcDbLinetypeTable* pTable = NULL;  
    5. AcDbObjectId id;   
    6. AcDbDatabase* pDb = curDoc()->database();
    7. // open ByLayer linetypetablerecord for use in MLineStyle later
    8. pDb->getLinetypeTable(pTable, AcDb::kForRead);
    9. if((pTable->getAt(L"ByLayer", id)) != Acad::eOk)
    10. {
    11.     acutPrintf(L"\nlinetype ByLayer not found.");   
    12.     return;   
    13. }
    14. pTable->close();
    15.     AcDbDictionary* pDict = NULL;
    16. // open MLStyleDictionary (its sored in the NOD)  
    17. Acad::ErrorStatus es = pDb->getMLStyleDictionary(pDict, AcDb::kForRead);
    18. if(es != Acad::eOk)   
    19. {     
    20.   acutPrintf(L"\nCan't open mline style dictionary for read.");  
    21.   return;   
    22. }  
    23. const ACHAR mlineStyleName[] = L"test";
    24. AcDbMlineStyle* ps = NULL;
    25. // does MLStyle "test" already exist?
    26. es = pDict->getAt(mlineStyleName, (AcDbObject*&)ps, AcDb::kForWrite);
    27. // If it doesn't exist, create it  
    28. if(es != Acad::eOk)  
    29. {      
    30.   ps = new AcDbMlineStyle;      
    31.   AcDbObjectId mId;  
    32.   ps->initMlineStyle();  
    33.   pDict->upgradeOpen();   
    34.   pDict->setAt(mlineStyleName, ps, mId);
    35. }   
    36. pDict->close();
    37.     // set MLStyle attributes and elements   
    38. es = ps->setName(mlineStyleName);
    39. AcCmColor cm;     cm.setColorIndex(256);
    40.     int a=0, b=0;   
    41. es = ps->addElement(a, -0.25, cm, id);  
    42. assert(es == Acad::eOk);  
    43. es = ps->addElement(b, 0.25, cm, id);
    44.     assert(es == Acad::eOk);  
    45. ps->close();
    46. acutPrintf(L"\nMline style: %s created.", mlineStyleName);
    47. }
    复制代码

     

     

     

     

    [每日一码] 如何通过程序创建一个多线样式(AcDbMlineStyle)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 09:31 , Processed in 0.141911 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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