原来对 AcDbRegion 连做两次 transformBy(先转到平面、再平移), region 是 ACIS body,每次变换都要重建拓扑,而该函数在 DrawPipe(pCurve, pRegion, ptCenInRgn) 里每个管件都会调用。 改为先算出 ptOnRegion 变换后的落点,把平移量用 preMultBy 合成进 同一个矩阵,region 只做一次 ACIS 变换;顺带删掉 plan.get(pt0,pt1,pt2) 这三个未使用的局部变量。
原来对 AcDbRegion 连做两次 transformBy(先转到平面、再平移), region 是 ACIS body,每次变换都要重建拓扑,而该函数在 DrawPipe(pCurve, pRegion, ptCenInRgn) 里每个管件都会调用。 改为先算出 ptOnRegion 变换后的落点,把平移量用 preMultBy 合成进 同一个矩阵,region 只做一次 ACIS 变换;顺带删掉 plan.get(pt0,pt1,pt2) 这三个未使用的局部变量。