设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 203|回复: 0

射线法点在AcDbPolyline内

[复制链接]
  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

    发表于 2021-1-1 15:24 | 显示全部楼层 |阅读模式

    1.         bool  IsInside(const AcGePoint3d &pt, AcDbPolyline* pPoly)
    2.         {
    3.                 bool isinside = false;
    4.                 //CPolylineUtil::clearDbPts(pPoly);  //去除相邻重复点
    5.                 AcGePoint3dArray points,inPts;
    6.                 AcGePoint3d pt3d;
    7.                 AcDbExtents ext;
    8.                 int num = pPoly->numVerts();
    9.                 for (int i = 0; i < num; i++)
    10.                 {
    11.                         pPoly->getPointAt(i, pt3d);
    12.                         points.append(pt3d);
    13.                 }
    14.                 ErrorStatus es= pPoly->getGeomExtents(ext);
    15.                 double xDis = ext.maxPoint().x - ext.minPoint().x;
    16.                 AcGeVector3d vec(xDis, 0, 0);
    17.                 AcDbLine* pLine = new AcDbLine(pt, pt + vec);
    18.                 if (pLine->intersectWith(pPoly,AcDb::kExtendArg,AcGePlane::kXYPlane,inPts)==Acad ::eOk)
    19.                 {
    20.                         int len = inPts.length();
    21.                         if (len==0)
    22.                         {
    23.                                 pLine->close();
    24.                                 return isinside;
    25.                         }
    26.                         AcGePoint3d ptFront, ptBack;
    27.                         for (int j=0;j<inPts.length();j++)
    28.                         {
    29.                                 pt3d = inPts.at(j);
    30.                                 if (points.contains(pt3d))
    31.                                 {
    32.                                         int index = points.find(pt3d);
    33.                                         ptFront = points.at(index - 1);
    34.                                         ptBack = points.at(index + 1);
    35.                                         AcGeVector3d vecFront(pt3d-ptFront);
    36.                                         AcGeVector3d vecBack(ptBack-pt3d);
    37.                                         while (vecFront.isParallelTo(vec))
    38.                                         {
    39.                                                 AcGePoint3d ptTemp(ptFront);
    40.                                                 ptFront = points.at(points.find(ptTemp) - 1);
    41.                                                 vecFront=(AcGeVector3d(ptTemp - ptFront));
    42.                                         }
    43.                                         while (vecBack.isParallelTo(vec))
    44.                                         {
    45.                                                 AcGePoint3d pttemp(ptBack);
    46.                                                 ptBack = points.at(points.find(pttemp) + 1);
    47.                                                 vecBack = (AcGeVector3d(ptBack - pttemp));
    48.                                         }
    49.                                         if (vec.crossProduct(vecFront).isCodirectionalTo(vec.crossProduct(vecBack)))
    50.                                         {
    51.                                                 len += 2;
    52.                                         }
    53.                                         else
    54.                                         {
    55.                                                 len += 1;
    56.                                         }
    57.                                 }
    58.                         }
    59.                         if (len%2!=0)
    60.                         {
    61.                                 isinside = true;
    62.                         }
    63.                 }
    64.                 pLine->close();
    65.                 return isinside;
    66.         }
    复制代码
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

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

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛