天气与日历 切换到窄版

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

[每日一码] ARX 选择集获得所有图形然后遍历

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

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 20:06:28 | 显示全部楼层 |阅读模式
    1. ////给图形实体,返回与当前图形中,直线实体相交的交点数组、直线方向向量  
    2. ////参数:曲线实体,2dpoint数组,三维向量  
    3. static void GetLineNum(AcDbCurve* pLine,AcGePoint3dArray& ptArr,AcGeVector3d& v)  
    4. {  
    5.         ////遍历所有实体  
    6.         ads采用name ssName;////选择集名称  
    7.         acedSSGet(采用T("X"),NULL,NULL,NULL,ssName);  
    8.         long len = 0;  
    9.         acedSSLength(ssName,&len);  
    10.         ads采用name entName;  
    11.         AcDbObjectId id;  
    12.         AcDbEntity* pEnt = NULL;  
    13.         AcDbCurve* pCur = NULL;  
    14.         AcGePoint3dArray ptSecArr;////交点集合  
    15.         for (int i=0;i<len;i++)  
    16.         {  
    17.                 if (acedSSName(ssName, i, entName) == RTNORM)  
    18.                 {  
    19.                         ////根据名称得到ID  
    20.                         acdbGetObjectId(id,entName);  
    21.                         ////以读模式打开,根据ID索引到对象,并打开ENTITY  
    22.                         acdbOpenObject(pEnt,id,AcDb::OpenMode::kForRead);  
    23.                         if (pEnt->isKindOf(AcDbCurve::desc()))  
    24.                         {  
    25.                                 pCur = (AcDbCurve*)pEnt;  
    26.                                 pCur->intersectWith(pLine,AcDb::Intersect::kOnBothOperands,ptSecArr);  
    27.                                 if (ptSecArr.length() > 0)  
    28.                                 {  
    29.                                         ////拿出第一个交点(两直线相交只可能有这一个交点)  
    30.                                         AcGePoint3d pt3d (ptSecArr.at(0));  
    31.                                         ////添加交点  
    32.                                         ptArr.append(pt3d);  
    33.                                         ptSecArr.removeAll();  
    34.                                         pCur->getFirstDeriv(pt3d,v);  
    35.                                         //acutPrintf(采用T("\n道路方向向量:[x]: %.2f,[y] : %.2f, [z] : %.2f"),v[X],v[Y],v[Z]);  
    36.                                 }  
    37.                                 pCur->close();  
    38.                         }  
    39.                 }  
    40.         }  
    41. }   
    复制代码

     

     

     

     

    [每日一码] ARX 选择集获得所有图形然后遍历
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-11-1 13:39 , Processed in 0.142667 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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