PellaCAD 发表于 2022-7-6 12:40:15

你好,肖特,
 
以下是包含我的Intersectwith代码的表单的导入。。。
 
导入Autodesk。AutoCAD。互操作
导入Autodesk。AutoCAD。互操作。常见的
 
导入Autodesk。AutoCAD。运行时
导入Autodesk。AutoCAD。应用程序服务
导入Autodesk。AutoCAD。数据库服务
导入Autodesk。AutoCAD。编辑输入
导入Autodesk。AutoCAD。几何学
导入系统。窗户
导入系统。IO
我已经让它工作了。。。
 
Dim COLInterction()作为双精度
共相交=objACADEntity1。相交(objACADEntity2,AcExtendOption.acExtendBoth)
MsgBox(共线段(0)。ToString)
 
本练习的最终目标是找到直线和多段线的交点。。。然后将直线的端点更改为这些计算的交点。。。从而模拟自动线延伸/修剪功能。
 
 
 
感谢肖特的专业知识!
 
 

SEANT 发表于 2022-7-6 12:43:52

是否打算将其作为进程外EXE运行?
 
如果是这样,那么在询问与AutoCAD相关的问题时,必须预先说明这一点。净问题*。所有受管ARX库都不可用,只有COM对象(类似于VBA和VLisp可用的对象)将通过互操作挂钩公开。
 
*这将防止许多不相关的建议/示例被引导到您的方向。
 
如果打算将其作为DLL运行(通过NETLOAD加载),那么请在此处压缩并发布项目,以便我们可以看到整个设置。

PellaCAD 发表于 2022-7-6 12:47:49

早上好,肖特,
 
目的是将其作为进程外执行程序运行。。。它基本上就像一只被烫伤的猫。快速。
 
那么这些是“托管ARX”库?Ao:)因此,在进程外EXE中是否不需要nd?
 
导入Autodesk。AutoCAD。运行时
导入Autodesk。AutoCAD。应用程序服务
导入Autodesk。AutoCAD。数据库服务
导入Autodesk。AutoCAD。编辑输入
导入Autodesk。AutoCAD。几何学
我可以删除这些。。。太棒了反正我也不喜欢他们。
 
几分钟前我发现我的代码运行得很好。。。它只是将所有的点值集中到一个数组变量中。请参见下文。。。
导入Autodesk。AutoCAD。互操作
导入Autodesk。AutoCAD。互操作。常见的
导入系统。窗户
导入系统。IO
PublicSub bnTEST_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)处理bnTEST。点击
 
objAcad。ActiveDocument。公用事业GetEntity(objACADEntity1,pickpoint,“选择线:”)
objAcad。ActiveDocument。公用事业GetEntity(objACADEntity2,pickpoint,“选择多段线:”)
Dim COLInterction()作为双精度
共相交=objACADEntity1。相交(objACADEntity2,AcExtendOption.acExtendBoth)
MsgBox(共线段(0)。ToString)
MsgBox(共接口(3)。ToString)
末端接头
 
我认为0,1和2是第一个交点的值,3,4和5是第二个交点的值。
 
我在一条弧和一条多段线上检查了这个,它也很好地工作!(我认为,如果直线或圆弧与多段线不相交,整个例程很可能会被放入Try-Catch-End-Try。)
 
请接受我真诚的道歉,因为我不知道告诉你我正在处理一个进程外的EXE。我在学习!
 
现在进入本练习的下一部分。。。如何将直线起点重新定义为第一个交点,将直线端点重新定义为第二个交点?
 
类似于。。。
 
正面1。起始点(共线段(0)、共线段(1)、共线段(2))
 
但这当然行不通。。。有什么建议吗?
 
 

SEANT 发表于 2022-7-6 12:50:38

通过自动化AutoCAD时,使用ManagedARX有很多优点。净额。公开的本机AutoCAD功能数量显著增加。一些使用COM/ActiveX几乎不可能完成的任务现在已经相当可行。
一个缺点是,这些本机库只暴露于进程内代码。
 
可能有一些方法可以缓解这一缺点;可能是一种部署,它利用可执行文件执行非AutoCAD特定的任务,以及对支持“netload”的DLL进行一些关键调用,以实现所有繁重的AutoCAD交互。我还应该指出,尽管进程外COM现在看起来很快,但随着交互的增加,它可能会造成严重的瓶颈。
 
在接下来的几个月里,我可能会探索这种情况。
 
 
我认为你应该能够做这样的事情(未经测试):
 
Dim stpt() as Double = New Double(colIntersection(0), colIntersection(1), colIntersection(2))
Dim ndpt() as Double = New Double(colIntersection(3), colIntersection(4), colIntersection(5))

objACADEntity1.StartPoint = stpt
objACADEntity1.EndPoint = ndpt

PellaCAD 发表于 2022-7-6 12:56:22

谢谢肖特,
 
现在可以处理直线和多段线了。。。我接下来讲圆弧。
 
“它确实让人困惑于各种可能性……”
 
致以最诚挚的问候,感谢您的指导和专业知识!
 
 
(CADTutor很快成为我的头号“go to”论坛。)
 
 
 
页: 1 [2]
查看完整版本: 与不工作相交