Proctor 发表于 2022-7-6 11:33:20

Cad 09。net API:垂直

您好:如果你看最左边的图片附件,我已经创建了一个蓝色垂直于红线。罪犯的路线是朝着我想要的方向走的——那就是朝着黑线走;
 
然而,有时垂直线会朝相反的方向运行-远离黑线(见最右边的图片)。
 
这是我的代码:
myLine3d=新几何体。Line3d(myMainLine.StartPoint,myMainLine.EndPoint)
 
“如果perp线走错了方向,我会尝试用一个负数乘以(例如-20),然后它就会朝着正确的方向走。START_X=我的主线。起点。减法(myLine3d.Direction.Negate.getverticalvector.MultiplyBy(20))
'创建主线的垂直线
perpLine=新行(myIncrementPtOfMainLine,START\u X)
 
我如何确定我应该乘以一个正数还是负数,以使perp线朝向黑线?
 
谢谢
监考人员

JohnM 发表于 2022-7-6 11:45:34

不确定代码的其余部分。
你能选一条或多条线并得到角度吗
在lisp中,您将使用getpoint和getpoint,然后获得2个点的角度。
或者得到这两条线的起点或终点,然后得到角度
或者对blac和红线使用选择集过滤,并获得角度
如果你的程序画了两行,那么你就有了所需的信息

Proctor 发表于 2022-7-6 11:56:36

谢谢你的回复。目前,我要求用户选择这两行(红色和黑色)。。。所以我可以得到他们的角度;然而,你能给我解释一下,我如何使用角度来获得正确的方向,以进入我的罪犯?
 
再次感谢您的帮助,
监考人员

JohnM 发表于 2022-7-6 12:03:26

我不使用。但是我可以告诉你我是怎么在脑海中想出来的。
我也不知道你的程序都做了什么,所以了解更多会有帮助。
你能解释一下你的程序总共做了什么吗。
这两条线总是垂直的吗?
这两条线是否有对齐的起点、终点或中点?
这条线总是从中点开始,然后穿过另一条线的中点吗?
用户是如何选择线条的,红色然后是黑色,还是黑色-红色或他们想要的任何选择?
如果你总是在0度或180度处画一条线,你可以使用角度信息将其舍入到正确的方向。例如,如果用户选择左侧的线,然后选择右侧的线,然后获得角度(例如45度),您可以编写一些代码来说明角度是否小于90且大于270,新角度=0,或者相反,如果角度大于90且小于270,新角度=180

SEANT 发表于 2022-7-6 12:17:22

你没有直接提到这个例程是否能适应3D,但这一行:
 
myLine3d=新几何体。Line3d(myMainLine.StartPoint,myMainLine.EndPoint)
 
这表明它可能。
 
如果是这样的话(在任何一种情况下都允许使用3d,这不是一个坏主意),那么我会尝试使用这个事件序列。
 
myMainLine3d = New Geometry.Line3d(myMainLine.StartPoint, myMainLine.EndPoint)

myNextLine3d = New Geometry.Line3d(myNextLine.StartPoint, myNextLine.EndPoint)

//Comment Determine where on mainline a perpline should originate (end, middle, etc.) and set it to perpPoint.//Comment

myPlane3D = New Plane(perpPoint, myMainLine3d.Direction)
 
在下一条线上得到罪犯分数。
 
perpNextPt = myNextLine3d.IntersectWith(myPlane3D)
 
现在可以从perpPoint到perpNextPt创建一条线。

Kerry Brown 发表于 2022-7-6 12:29:31

发布完整的代码和演示问题的图纸将是解决此问题的最佳方式。混合中有如此多的未知因素,因此要确定地回答这个问题几乎是不可能的。

Danielm103 发表于 2022-7-6 12:37:14

仅供参考,AutoCAD 2009中有一个错误。NET 3.5sp1,这可能会导致某些向量方法返回不正确的结果。
看见
http://www.theswamp.org/index.php?topic=24462.0
http://discussion.autodesk.com/forums/thread.jspa?threadID=685493
页: [1]
查看完整版本: Cad 09。net API:垂直