shers 发表于 2015-5-18 12:07:03

点3d X 值

嗨,
无法一个一个地为Point3d坐标赋值,例如Point3d insPt. X=2。还有其他选择吗?
谢谢
**** Hidden Message *****

Jeff_M 发表于 2015-5-18 12:37:35

Point3d newpt = new Point3d(2,insPt。y,insPt。z);

BlackBox 发表于 2015-5-18 12:43:26

此处重复线程:
http://forums.augi.com/showthread.php?161727-Point3d

gile 发表于 2015-5-18 12:45:06

嗨,
Point3d类型与许多其他.NET结构一样,是不可变的。
您无法编辑Point3d,您必须创建一个新Point3d。

gile 发表于 2015-5-18 16:40:38

如果您确实需要一个可变点来提高性能*,在对点坐标进行许多更改时,可以构建一个点坐标启用读/写的小类
可变点类型可以具有从Point3d类型到Point3d类型的显式转换运算符
使用Autodesk.AutoCAD.Geometry
名称空间可变点
{
公共类点
{
公共点(双x、双y、双z)
{
这个。X=X
这个。Y=Y
这个。Z=Z
}
公共双X{get;set;}
公共双Y{get;set;}
公共双Z{get;set;}
公共无效添加(Vector3d显示)
{
这个。X+=disp.X
这个。Y+=disp.Y
这个。Z+=disp.Z
}
公共静态显式运算符点(Point3d-pt)
{
返回新点(pt.X,pt.Y,pt.Z)
}
公共静态显式运算符Point3d(Point pt)
{
返回新的点3d(pt.X,pt.Y,pt.Z)
}
}
}
使用:
点pt=(点)点3d.Origin
pt。X=10.0
pt。Y=20.0
Point3d p3d=(Point3d)pt;//p3d=(10,20,0)

*可变对象在内存方面更有效,但不可变对象更安全,更易于在并发编程中使用。

shers 发表于 2015-5-19 01:56:32

真棒!非常感谢!
我还想知道如何将空值分配给Point3d,如
Point3d pt = null;
谢谢

gile 发表于 2015-5-19 07:16:09

嗨,
看起来你缺少非常基础的. net。
正如我所说的,upper Point3d是一个结构,而不是一个类。结构是值类型,类是引用类型,结构实例必须有值,并且不能为空(请参见此处)。
因此,您可以使用可空类型(可空
或Point3d?)或者使用Point类(如上定义)代替Point3d结构。
不管怎样,我很好奇你在做什么需要可变点和可空点的东西...

Master_Shake 发表于 2015-5-19 08:56:59

:困惑:坐标系如何在X、Y、Z或整个值中包含空值
页: [1]
查看完整版本: 点3d X 值