乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 9|回复: 6

[编程交流] Cad 09。net API:垂直

[复制链接]

33

主题

107

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 11:45:34 | 显示全部楼层
不确定代码的其余部分。
你能选一条或多条线并得到角度吗
在lisp中,您将使用getpoint和getpoint,然后获得2个点的角度。
或者得到这两条线的起点或终点,然后得到角度
或者对blac和红线使用选择集过滤,并获得角度
如果你的程序画了两行,那么你就有了所需的信息
回复

使用道具 举报

33

主题

107

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:56:36 | 显示全部楼层
谢谢你的回复。目前,我要求用户选择这两行(红色和黑色)。。。所以我可以得到他们的角度;然而,你能给我解释一下,我如何使用角度来获得正确的方向,以进入我的罪犯?
 
再次感谢您的帮助,
监考人员
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

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

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:17:22 | 显示全部楼层
你没有直接提到这个例程是否能适应3D,但这一行:
 
myLine3d=新几何体。Line3d(myMainLine.StartPoint,myMainLine.EndPoint)
 
这表明它可能。
 
如果是这样的话(在任何一种情况下都允许使用3d,这不是一个坏主意),那么我会尝试使用这个事件序列。
 
  1. myMainLine3d = New Geometry.Line3d(myMainLine.StartPoint, myMainLine.EndPoint)
  2. myNextLine3d = New Geometry.Line3d(myNextLine.StartPoint, myNextLine.EndPoint)
  3. [u]//Comment Determine where on mainline a perpline should originate (end, middle, etc.) and set it to perpPoint.//Comment[/u]
  4. myPlane3D = New Plane(perpPoint, myMainLine3d.Direction)

 
在下一条线上得到罪犯分数。
 
  1. perpNextPt = myNextLine3d.IntersectWith(myPlane3D)

 
现在可以从perpPoint到perpNextPt创建一条线。
回复

使用道具 举报

0

主题

127

帖子

130

银币

限制会员

铜币
-2
发表于 2022-7-6 12:29:31 | 显示全部楼层
发布完整的代码和演示问题的图纸将是解决此问题的最佳方式。混合中有如此多的未知因素,因此要确定地回答这个问题几乎是不可能的。
回复

使用道具 举报

0

主题

9

帖子

11

银币

限制会员

铜币
-1
发表于 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
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 02:15 , Processed in 0.551909 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表