天气与日历 切换到窄版

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

关于AcDbEntity::intersectWith()实体求交及将 曲线实体AcDbCurve沿交点打断

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
关于AcDbEntity::intersectWith()实体求交及将
曲线实体AcDbCurve沿交点打断

   Autocad实体求交均使用AcDbEntity::intersectWith()求交函数,该函数有两个版本,分别对应不同的情况。
一、           同一平面实体求交及曲线沿交点打断
位于同一平面的两实体求交,使用:
virtual Acad::ErrorStatus
intersectWith(
const AcDbEntity* pEnt,
AcDb::Intersect intType,
AcGePoint3dArray& points,
int thisGsMarker = 0,
int otherGsMarker = 0) const;

其中:
pEnt        为与使用该方法的“this”实体求交的实体   
intType              输入要求求交类型
points                输出求得的交点数组
thisGsMarker      Input GS marker of subentity of"this" entity that's involved in the intersection operation. Use the0 default if not applicable.
otherGsMarker  Input GS marker of subentity of the entitypointed to by pEnt that's involved in the intersection operation. Use the 0default if not applicable.
用途:
    找出pEnt实体和“this”实体边界框所有边的交点。
(It finds the intersections of the entitypointed to by pEnt and all the edges of the bounding box of this entity.)

1、当两实体均为曲线AcDbCurve实体派生类实体时,是曲线间的交点
2、当两实体中有块(AcDbBlockReference)、文字(AcDbText、AcDbMText)时,是曲线与他们边界框的交点,或边界框之间的交点
3、当曲线实体与填充图案(AcDbHatch)求交时,是曲线与组织图案的线段的交点,这点与曲线与块的交点不同
4、当填充图案与文字、块求交时,是组成图案的线段与文字、块的边界框的交点。

两个实体只要位于同一平面,均可以用该版本求交函数求得交点,这样求得曲线上的交点后,曲线均可以采用曲线AcDbCurve的方法:
virtual Acad::ErrorStatus
getSplitCurves(
const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments) const;进行打断。

但最好使用其另一版本:
virtual Acad::ErrorStatus
getSplitCurves(
const AcGeDoubleArray& params,
AcDbVoidPtrArray& curveSegments) const;

二、           不同平面二维实体求交
当二维多线段有高程、样条曲线有z坐标时,求他们与它不在同一平面其它实体的交点。由于他们不在同一平面上,需用求交的另一版本函数:
virtualAcad::ErrorStatus
intersectWith(
constAcDbEntity* pEnt,
AcDb::IntersectintType,
constAcGePlane& projPlane,
AcGePoint3dArray&points,
intthisGsMarker = 0,
intotherGsMarker = 0) const;
其中:
    projPlane     两个实体外观交点的投影平面
这个函数与上一个函数的区别:
这个函数把“this”实体和pEnt实体投影到projPlane平面上、找出交点,然后把交点投影回“this”实体上。这是与上一个函数的不同点,其它的相同。所有增加到points数组的点是在“this”实体上。投影按平行projPlane平面的法线矢量方向进行。
对于三维多线段,也能使用该函数求得交点,但交点不是在三维多线段上,因此不能按此求得的交点将三维多线段沿交点打断。
经测试下面两种使用方法均能得出交点,但要正确沿交点打断曲线,确定好“this”实体是很重要的。要打断的那条曲线就是“this”实体,也即需要使用被打断的曲线实体的求交函数来求交点。
1、将两实体投影到XY平面
    AcGePlaneplane;       //XY平面
AcGePoint3dArray intersectionPoints;
    pEnt1->intersectWith (pEnt2,AcDb::kOnBothOperands,plane,intersectionPoints);
此时,交点的z坐标就是曲线pEnt1的z坐标或标高。
2、将两实体投影到“this”实体所在平面或者投影到pEnt实体所在平面
    AcDb::Planarity flag;
    AcGePlane plane;
    AcGePoint3dArray intersectionPoints;
    Acad::ErrorStatus es;
    es=pEnt1->getPlane(plane,flag);   //获得实体pEnt1所在平面plane
// es=pEnt2->getPlane(plane,flag);   //获得实体pEnt2所在平面plane
pEnt1->intersectWith (pEnt2,AcDb::kOnBothOperands,plane,intersectionPoints);

交点的z坐标就是使用求交方法实体的z坐标或标高,也就是交点是在使用求交方法的曲线实体上的。

三、           三维多段线与其它实体的求交
为了正确求得三维多线段上的交点及沿其交点打断三维多线段,应采用下列方法:
1、获取pCur2曲线(“this”实体,需打断的三维多线段)在pCur1曲线所在平面的正射投影曲线projCrv
2、取得projCrv曲线上与pCur1曲线的交点
3、取得projCrv曲线上交点对应的参数化曲线的参数
4、依据投影曲线projCrv与原曲线pCur2参数相同,将投影面上的交点投影返回到原曲线pCur2上,取得pCur2曲线与pCur1曲线在pCur2曲线上的交点。
程序代码段:
    AcDb::Planarity flag;
    AcGePlane plane;
    AcDbCurve * projCrv,*pCur1,*pCur2;
    AcGePoint3dArray pnts, intersectionPoints;
    Acad::ErrorStatus es;
    es=pEnt1->getPlane(plane,flag);   //获得曲线pCur1所在平面plane
    if(es!=Acad::eOk)
    {
       acutPrintf  (_T("\ngetPlanefailed : es = %s"),acadErrorStatusText(es));
       return(RTERROR);
    }
       es=pCur2->getOrthoProjectedCurve(plane,projCrv);
       if (es!=Acad::eOk)
       {
           acutPrintf  (_T("\ngetOrthoProjectedCurve : es =%s"),acadErrorStatusText(es));
           return (RTERROR);
       }
       es=projCrv->intersectWith(pCur1,AcDb::kOnBothOperands,pnts);
       if(es!=Acad::eOk)
       {
           acutPrintf  (_T("\nintersectWith : es =%s"),acadErrorStatusText(es));
           return (RTERROR);
       }
       int len=pnts.length();
       double * param=new double[len];
       AcGePoint3d pt;
       for (int i=0;i<len;i++)
       {
           projCrv->getClosestPointTo(pnts,pt);
           projCrv->getParamAtPoint(pt,param);
       }
       for (int i=0;i<len;i++)
       {
           pCur2->getPointAtParam(param,pt);
           intersectionPoints.append(pt);
       }
四、两条z坐标均为非定值的样条曲线相交打断
   以下三种情况采用上述方法均不能求得交点,也就不能沿交点打断曲线。
    1、两条z坐标均为非定值的三维多线段相交打断
2、z坐标非定值的样条曲线与z坐标非定值的三维多线段相交打断
3、两条z坐标均为非定值的样条曲线相交打断

解决问题设想:
1、先求两条曲线在同一平面正射投影曲线projCrv
2、求两条正射投影曲线projCrv的交点
3、再将交点投影回到原曲线上得交点。
    经测试,在autocad2006下,能达到目的,但在cad2012下有时不能达到目的
    该部分代码可从上面的代码演变可得。
五、存在问题
目前根据求交、打断编制的任意多边形裁图程序的裁图效果还比较满意。但存在以下问题:
1、有时会出现极个别曲线不能裁断的情况,有的进行二次操作后可以剪断。这个别曲线有的用cad命名也无法剪断。不知何故?
2、当自相交曲线的交点正好位于剪切边界上时,只能打断曲线其中一边
3、该程序在打断前求交选择实体对象及打断后平移、旋转实体变换均是采用获取选择集的方式,因此要裁剪部分图形选择后必须位于屏幕可见区域内,否则就会出现**没有裁剪的情况,不知用何方法解决??
4、对于打断样条拟合的二维多线段在2006会出错,打断前需进行预处理,而在2012下没有问题,打断前不需预处理。

附上程序:cad2006版
任意多边形裁剪命令:brkcur
实体求交测试命令:curjd
两条曲线交点打断测试命令:ddcur

 

 

 

 

关于AcDbEntity::intersectWith()实体求交及将 曲线实体AcDbCurve沿交点打断

该用户从未签到

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-7-28 09:28:43 | 显示全部楼层
  法拉利膜材作为一种高性能的建筑材料,在建筑、汽车及广告等多个领域有着广泛的应用。以下是对法拉利膜材型号、特点及优点的详细分析:
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223041uiqmeujen4jjj6zv.jpg[/img]
[b]一、法拉利膜材型号[/b]
法拉利膜材有多种型号,包括但不限于以下几种:1302 S2 Flexlight Advanced:这是一种高性能IV型柔性复合膜材,以其卓越的透光性、耐久性和易维护性而受到青睐。942、1202 S2、1002 S2、902 S2、1212 S2、912 S2:这些型号同样属于法拉利膜材系列,各自具有不同的特性和适用范围,但具体特点需根据具体型号进一步分析。需要注意的是,法拉利膜材的型号可能随着产品更新换代而有所变化,具体型号及其特性请参考最新产品资料。
[img=860,1255]http://www.mjgou.com/data/attachment/forum/202403/13/223254bbblwlbvbvsbwlsl.jpg[/img]
[b]二、法拉利膜材特点[/b]
法拉利膜材的特点主要体现在以下几个方面:
1、高强度与耐用性:法拉利膜材采用高强度材料制成,具有良好的抗拉强度和撕裂强度,能够承受较大的外力作用而不易破损。耐用性强,能够在恶劣气候条件下保持稳定的性能,延长使用寿命。
2、透光性与美观性:部分型号如1302 S2 Flexlight Advanced具有高透光性,能够在保持室内光线充足的同时,提供清晰的视野。膜材表面平整光滑,色彩丰富多样,能够满足不同建筑和装饰需求,提升整体美观性。
3、轻质与灵活性:法拉利膜材重量较轻,便于运输和安装,能够降低施工成本和时间。膜材具有一定的柔韧性,能够适应各种复杂形状和结构的设计要求。
4、环保与可回收性:法拉利膜材符合环保要求,部分材料可回收利用,减少了对环境的影响。
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223128owhn0099rrds5h5y.jpg[/img]
[b]三、法拉利膜材优点[/b]
法拉利膜材的优点主要体现在以下几个方面:
1、提升建筑性能:高强度与耐用性使得法拉利膜材能够提升建筑的稳定性和安全性,延长使用寿命。透光性与美观性使得建筑内部光线充足、视野开阔,同时提升整体美观度。
2、降低施工成本:轻质特性使得运输和安装成本降低,施工效率提高。膜材的柔韧性使得施工更加灵活多变,能够适应各种复杂地形和结构要求。
3、节能环保:部分材料可回收利用,符合环保要求,减少了对环境的影响。良好的透光性能够减少室内照明需求,降低能耗。
4、广泛应用领域:
法拉利膜材不仅适用于建筑领域(如体育设施、商业设施、文化设施、交通设施等),还广泛应用于汽车及广告领域(如高档车辆贴膜保护和装饰、广告招贴等),展现出其多功能的特性。

综上所述,法拉利膜材以其高强度、耐用性、透光性、美观性、轻质灵活性以及环保可回收性等优点,在建筑、汽车及广告等多个领域发挥着重要作用。具体型号的选择应根据实际需求和应用场景进行综合考虑。
[url=http://www.mjgou.com/forum-17-1.html][size=7013][color=Red]法拉利膜材中国代理商 - 膜结构网[/color][/size][/url]
关于AcDbEntity::intersectWith()实体求交及将 曲线实体AcDbCurve沿交点打断

该用户从未签到

主题

0

回帖

2

积分

新手上路

积分
2
发表于 2024-8-6 10:42:43 | 显示全部楼层
泰克斯膜材作为一种高性能的纺织材料,在建筑、户外用品等多个领域有着广泛的应用。以下是对泰克斯膜材的详细分析:
[b]一、公司背景与实力[/b]
成立与发展:泰克斯膜材品牌成立于1990年代初期,总部位于中国广东省佛山市。公司自成立以来,逐步发展成为国内外知名的纺织品品牌,产品远销世界各地,深受客户好评。
产品线:泰克斯膜材主要致力于研究、开发、生产和销售各种功能性纺织材料,包括帐篷、遮阳篷、雨衣、冲锋衣等户外用品以及家居纺织品。
技术创新:泰克斯膜材拥有一支专业的技术研发团队,不断创新和优化生产工艺,为客户提供高品质、高性能的产品。
[b]二、产品特点[/b]
高性能材料:泰克斯膜材选用优质的原料,如涤纶、氨纶等,确保产品的耐用性。同时,通过特殊工艺处理,膜材具备出色的物理和化学性能。
自洁能力:泰克斯膜材具有卓越的自洁能力,雨水冲刷即可保持膜材表面的清洁,减少维护成本。
防污性:膜材表面经过特殊处理,具有良好的防污性能,能够有效抵抗污渍的附着。
透光性与节能性:泰克斯膜材对自然光的透射率较高,同时具有良好的隔热性能,有助于节省能源。
温控性:膜材还能提供舒适的温控效果,适应不同气候条件下的使用需求。
[b]三、技术应用[/b]
泰克斯膜材在技术应用方面也具有显著优势。例如,部分产品采用了新型氟化物涂层(如PVDF)技术,这种技术通过超亲水性和氧化分解作用大幅提升有机物的分解能力,从而保持膜材表面的清洁和性能稳定。这种技术的引入不仅提高了膜材的自洁性和耐久性,还延长了产品的使用寿命。
[b]四、应用领域[/b]
泰克斯膜材广泛应用于建筑、户外用品、家居装饰等多个领域。在建筑领域,它可用作膜结构建筑的覆盖材料;在户外用品方面,它则是帐篷、遮阳篷等产品的理想选择;在家居装饰领域,泰克斯膜材以其独特的性能和美观的外观受到消费者的青睐。
[b]五、市场前景与发展趋势[/b]
随着科技的进步和人们对高品质生活的追求,泰克斯膜材的市场前景十分广阔。未来,泰克斯膜材将继续发挥其技术优势和产品优势,不断拓展新的应用领域和市场空间。同时,公司也将继续加大研发投入和技术创新力度,推出更多符合市场需求的高性能膜材产品。
综上所述,泰克斯膜材以其卓越的性能和广泛的应用领域在市场上占据重要地位。随着技术的不断进步和市场的不断发展,泰克斯膜材的应用前景将更加广阔。

 

 

 

 

关于AcDbEntity::intersectWith()实体求交及将 曲线实体AcDbCurve沿交点打断
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 15:23 , Processed in 0.150906 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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