网站开发有啥作用,wordpress togetherjs,濮阳建站公司流程,特色美食网站建设策划书什么是极点
一个模型中的极点是指在某个方向上的最高或最低点。在三维模型中#xff0c;通常有三个方向#xff1a;x轴、y轴和z轴。因此#xff0c;在x轴#xff0c;y轴和z轴的正方向和负方向上#xff0c;每个模型可能都有两个极点。极点通常是一些锐角或骨刺#xff0… 什么是极点
一个模型中的极点是指在某个方向上的最高或最低点。在三维模型中通常有三个方向x轴、y轴和z轴。因此在x轴y轴和z轴的正方向和负方向上每个模型可能都有两个极点。极点通常是一些锐角或骨刺可能需要特殊的注意和处理以确保模型在渲染和动画过程中能够正确地呈现并不出现异常。
这是CSDN的AI回答的意思应该没错吧错了找它别找我。 直接一点就是某个指定方向向量上最远的一个点。
比如下面这个零件是个斜的别问我是谁画的 这个情况下我们要知道沿这个小圆柱上两个极点的坐标的距离 就是这个方向上的长度。 我猜这就是常规的用于包围盒可能用到的方法。 具体官方说明请查看这个链接: GetExtremePoint
但这个是针对某个实体的所以在获取零件的一些极点时需要遍历实体再获取每个实体的。 关键代码就这样了复杂的我也不会。 /// summary/// 极点坐标的获取/// /summary/// param namesender/param/// param namee/paramprivate void BtnExtremePoint_Click(object sender, EventArgs e){SldWorks swApp Utility.ConnectToSolidWorks();var swModel (ModelDoc2)swApp.ActiveDoc;Vector3d vector new Vector3d(new Point3d(0,0,0),new Point3d(1,1,1)).Normalized;//这里是针对零件。if (swModel ! null swModel.GetType()(int)swDocumentTypes_e.swDocPART){PartDoc part (PartDoc)swModel;var vBodies GetBodyCopies(part);for (int i 0; i vBodies.Length; i){var body vBodies[i];bool ExtPRes body.GetExtremePoint(vector.X,vector.Y,vector.Z,out double OutX,out double OutY,out double OutZ);if (ExtPRes){MessageBox.Show(${vector.X},{vector.Y},{vector.Z}-{OutX},{OutY},{OutZ});}else{MessageBox.Show(未找到极点);}}}//如果是装配体。if (swModel ! null swModel.GetType() (int)swDocumentTypes_e.swDocASSEMBLY){var vcomps (object[])(swModel as AssemblyDoc).GetComponents(false);foreach ( var comp in vcomps){var tempCompcomp as Component2;if (tempComp null) continue;if (tempComp.GetPathName().ToString().ToLower().EndsWith(sldprt)){//把装配中的向量先转到该Comp中var swMathUtility swApp.IGetMathUtility();var tempTrans tempComp.Transform2.IInverse();var tempPointInASM1 new double[3] { 0, 0, 0 };var tempPointInASM2 new double[3] { vector.X, vector.Y, vector.Z };var mathPointASM1 (MathPoint)swMathUtility.CreatePoint(tempPointInASM1);var mathPointASM2 (MathPoint)swMathUtility.CreatePoint(tempPointInASM2);var swMathPtInPart1 (MathPoint)mathPointASM1.MultiplyTransform(tempTrans);var swMathPtInPart2 (MathPoint)mathPointASM2.MultiplyTransform(tempTrans);var PointArrayData1 (double[])swMathPtInPart1.ArrayData;var PointArrayData2 (double[])swMathPtInPart2.ArrayData;//向量在该Component中Vector3d vectorInPart new Vector3d(new Point3d(PointArrayData1),new Point3d(PointArrayData2)).Normalized;PartDoc part (PartDoc)tempComp.IGetModelDoc();if (part ! null) {var vBodies GetBodyCopies(part);for (int i 0; i vBodies.Length; i){var body vBodies[i];bool ExtPRes body.GetExtremePoint(vectorInPart.X, vectorInPart.Y, vectorInPart.Z, out double OutX, out double OutY, out double OutZ);if (ExtPRes){MessageBox.Show($零件{tempComp.Name2}-方向{vectorInPart.X},{vectorInPart.Y},{vectorInPart.Z}-{OutX},{OutY},{OutZ}(零件中的坐标));//再转换到装配体中。var tempPointInPart new double[3] { OutX, OutY, OutZ };var mathPoint (MathPoint)swMathUtility.CreatePoint(tempPointInPart);var swMathPtInAsm (MathPoint)mathPoint.MultiplyTransform(tempComp.Transform2);var arrayData (double[])swMathPtInAsm.ArrayData;MessageBox.Show($零件{tempComp.Name2}-方向{vector.X},{vector.Y},{vector.Z}-{arrayData[0]},{arrayData[1]},{arrayData[2]}(装配体));}else{MessageBox.Show(未找到极点);}}}}}}}这就是结果要注意的是这个点不一定是你想要的中心点或者什么点但它一定是这个方向上的极点之一。(因为这边是一个平面)
所以如果我们读取反方向的圆顶那边基本上就是唯一的了。只有最顶部。 接近于000 说明功能正常这个办法还有助于标总长总宽这种类型的在工程图中可能需要做辅助点具体的我就不再解释了 本系列课程源码 https://gitee.com/painezeng/CSharpAndSolidWorks
希望大家点赞收藏还有什么来的。。。
对给钱。