johnpolob 发表于 2018-12-8 20:14:17

如何在C#中将ucs与固体对齐

大家好,我必须用C#计算我绘图中许多实体的宽度和长度。但其中一些不在同一平面内,例如相对于z轴倾斜的实体,因此尺寸错误。我希望更改一些ucs,并计算该实体的宽度以使其正确<欢迎任何帮助。
**** Hidden Message *****

MickD 发表于 2018-12-8 22:48:15

这个帖子应该会有所帮助,干杯。
https://www . the swamp . org/index . PHP?topic=51518.0
如果您需要处理现有的3d实体,那么您将需要用户选择3个点来定义至少2个轴向量(比方说一个面的基点,然后是沿Z轴的一个点作为拉伸长度,然后是面上任何其他位置的第三个点来产生宽度轴),第三个轴是一个简单的法线计算来产生它。

gile 发表于 2018-12-9 02:43:39


您应该澄清这一点,因为实体的“宽度和长度”不依赖于坐标系(例如,无论坐标系如何,线的长度都保持不变)。
因此,您应该详细描述如何测量这些固体。

johnpolob 发表于 2018-12-9 08:56:56

嗨,Gile,
感谢您的快速回复。
要测量我的固体(实体),我使用下面的代码,它可以很好地与不倾斜的标准固体配合使用:
公共双EntityWidth(实体ent)
{
双宽度;
Extens3d ext=ent.GeometricExtents;
Width=ext.MaxPoint.X-ext.MinPoint.X;
返回Width;
}
我的问题是我不想计算自己的斜边以获得我的固体长度。这就是为什么我相信我只能改变ucs然后根据这个计算斜固体的长度。
如果你有其他方法解决这个问题,我会很高兴知道的...
提前感谢任何能帮助我的人。

johnpolob 发表于 2018-12-9 09:09:28

你好,MickD,
我明天会检查此解决方案,并让您知道它是否有效。
谢谢。。。

gile 发表于 2018-12-9 11:12:39

实体,几何范围总是围绕WCS轴创建实体的边界框,通过将实体(Solid3d或其他任何东西)从WCS转换到UCS,获得转换实体的几何范围,然后将其转换回WCS,可以获得关于当前UCS轴的边界框。这里有一个小例子:    static extents 3d GetExtentsAboutUCS(Entity Entity)。
{。
var ed = AcAp,document manager . mdiactivedocument . editor;。
var ucs2wcs = ed,CurrentUserCoordinateSystem。
var wcs2ucs = ucs2wcs,inverse();。
Extents3d范围;。
如果(!实体,IsWriteEnabled)。
实体,upgrade open();。
实体,transform by(wcs 2 UCS);。
尝试{ extents = entity,几何范围;}。
最后{ entity,transform by(UC S2 wcs);}。
返回范围;。
}。

johnpolob 发表于 2018-12-9 12:02:01

嗨,吉尔,
谢谢你的例子

johnpolob 发表于 2018-12-10 06:01:43

嗨,Gile,
首先,我要感谢你的帮助。
我尝试使用您的功能,效果很好。
现在,我在自动检测实体的ucs时遇到了另一个问题。
请告诉我做这件事的方法好吗?

ribarm 发表于 2018-12-10 06:34:44

三维实体的UCS属性不受它们所代表的实体的约束……如果有UCS,您只能尝试将UCS与其中一个面对齐,然后将UCS轴定向。您想引用面边或其顶点……抱歉,但我认为您被困在这里了。IMHO。。。

johnpolob 发表于 2018-12-10 07:25:14

嗨,肋臂,
感谢您的贡献。
我将尝试定义一些条件来确定我的实体(固体)的ucs。
页: [1] 2
查看完整版本: 如何在C#中将ucs与固体对齐