Atook 发表于 2017-9-30 20:35:56

Bricscad:检查多段线内部的点

Bricscad是否具有与Autodesks AcMPolygonObj dbx类似的扩展
在我的Autocad实现中,我目前正在使用Gile的解决方案,我希望为Bricscad做类似的事情
如果没有类似的库,Bricscad是否证明是测试闭合多段线内点的好方法?
**** Hidden Message *****

MickD 发表于 2017-10-2 19:05:55

查看Teigha.Geometry命名空间,您可能需要创建一个具有IsOn方法的临时曲面。
Teigha.Geometry 命名空间具有图形系统使用的所有“基元”几何类,而不是可见数据库实体使用的更高级别几何类。
hth

Atook 发表于 2017-10-2 19:53:03

谢谢米克·我试一试。
有没有一个很好的地方可以阅读有关Bricscad的.NET编程?
无论是金砖七国论坛还是Chapoo开发者支持渠道,似乎都没有多大帮助。沼泽似乎是一个地方(像往常一样)

MickD 发表于 2017-10-2 23:47:01

Bricscad的API与AutoCAD的API相同,因此除了一些小的边缘情况外,对一个有效的API将(应该)适用于另一个。有了这些边缘情况,我发现Bricscad以您期望的方式处理它们,但是当对AutoCAD使用相同的代码时,我不得不调整一些事情。如果你需要为两者构建,一个好的开始是你的“使用”来导入命名空间。为每个命名空间使用缩写,如下所示:// alias' for Bricscad。
#if 金砖。
使用Teigha.Runtime;。
使用Teigha.DatabaseServices;。
使用 Bricscad.ApplicationServices;。
使用 Bricscad.EditorInput;。
使用 Bricscad.Runtime;。
使用_AcRx = Teigha.Runtime;。
使用_AcAp = Bricscad.ApplicationServices;。
使用_AcDb = Teigha.DatabaseServices;。
使用_AcGe = Teigha.Geometry;。
使用_AcEd = Bricscad.EditorInput;。
使用_AcGi = Teigha.GraphicsInterface;。
使用_AcClr = Teigha.Colors;。
使用_AcWnd = Bricscad.Windows;。
使用_App = 金砖加;。

// 别名' for AutoCAD。
#elif ACAD。
使用Autodesk.AutoCAD.Runtime;。
使用Autodesk.AutoCAD.ApplicationServices;。
使用Autodesk.AutoCAD.DatabaseServices;。
使用Autodesk.AutoCAD.Geometry;。
使用Autodesk.AutoCAD.EditorInput;。
使用Autodesk.AutoCAD.GraphicsInterface;。
使用Autodesk.AutoCAD.Colors;。
使用Autodesk.AutoCAD.Windows;。
使用_AcRx = Autodesk.AutoCAD.Runtime;。
使用_AcAp = Autodesk.AutoCAD.ApplicationServices;。
使用_AcDb = Autodesk.AutoCAD.DatabaseServices;。
使用_AcGe = Autodesk.AutoCAD.Geometry;。
使用_AcEd = Autodesk.AutoCAD.EditorInput;。
使用_AcGi = Autodesk.AutoCAD.GraphicsInterface;。
使用_AcClr = Autodesk.AutoCAD.Colors;。
使用_AcWnd = Autodesk.AutoCAD.Windows;。
#endif。
然后,在每个构建配置文件的项目属性中的“构建”->“条件编译符号”中添加“Bricscad”和“ACAD”指令。。

Atook 发表于 2017-10-3 03:06:46

谢谢MickD,我正在使用您和Briscad团队推荐的命名空间和编译符号。有没有办法让C#项目中的所有类都使用相同的语句?
到目前为止,唯一给我带来问题的“边缘”案例是创建我在这篇文章中提到的MPolygons,并创建块预览。
话虽如此,我还没有设法为Briscad编译,我相信一旦它在Briscad中启动并运行,我会遇到问题。
一旦我启动并运行它,下一步将是自动加载它。
看起来最好的方法是在
计算机\HKEY_CURRENT_USER\软件\Bricsys\BricsCAD\V17x64\en_US\Addins
中创建一个条目,正如Kean在这里提出的那样?
再次感谢您的输入MickD,非常感谢。

jmaeding 发表于 2017-10-3 11:24:57

ATook,一定要看看Kean Walmsley的博客 Through the Interface,以及 adesk 论坛。你会发现.net和acad/bcad需要的大部分东西。
对于加载,我所做的是使用 netload 语句设置 On_doc_load_default.lsp。
这假设你可以做到这一点。如果你正在你无法控制的系统上运行工具,我会提供一个包含.mnl的菜单,这是一个与菜单一起加载的lisp。你可以把净负载代码放在那里。
reg的东西也可以工作,但如果东西没有加载,可能会很棘手。
aslo,你的问题是一条直线中的一个点 - 如果你将该点延伸到一条长垂直线上,并测试它是否与斜坡segs相交,你可以通过该点是否在交叉点之间来判断该点是否在内部。你必须仔细考虑这些情况,比如在滑道上的点,但这就是想法。我做了我自己的线/弧交叉例程,我建议这样做,因为你需要在奇怪的情况下控制结果,比如几乎相交的东西。
页: [1]
查看完整版本: Bricscad:检查多段线内部的点