乐筑天下

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

.NET 几何例程

[复制链接]

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2010-1-27 03:34:28 | 显示全部楼层 |阅读模式
AutoCAD GEOMETRY的库线程
鼓励成员在中发布有关
  AutoCAD GEOMETRY 的任何函数、方法和片段。NET : C#、VB、F#、Python等
请随意添加注释、描述性注释、限制和图片来记录您的帖子。
请以常规主题发布问题。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-1-27 17:28:26 | 显示全部楼层
翻译错误代码(429):请求 QPS 超过限制。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-2-11 16:31:52 | 显示全部楼层
翻译错误代码(429):请求 QPS 超过限制。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-2-16 18:03:22 | 显示全部楼层
翻译错误代码(429):请求 QPS 超过限制。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-4-17 08:56:17 | 显示全部楼层

三角形2d中有一个错误。IsPointInside()方法。
第一篇帖子中的附件已更新。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-8-22 14:18:56 | 显示全部楼层

谢谢吉尔,那应该是个方便的图书馆。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-8-23 03:49:33 | 显示全部楼层

谢谢吉勒,我用过一次,非常有用
我很确定你也在做矩形2d/3d
奥列格
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2010-8-23 04:45:37 | 显示全部楼层
Hi,
添加了一些扩展方法:
ululPoint2dCollection.RemoveDuplicate()
ululPoint2dCollection.RemoveDuplicate(T承受tol)
boolPoint2dCollection.Contains(Point2d pt, T承受tol)
ululPoint3dCollection.RemoveDuplicate()
ululPoint3dCollection.RemoveDuplicate(承受tol)
boolPoint3dCollection.Contains(Point3d pt, T承受tol)
并编辑Triangle2d和Triangle3d类:
都继承自一个“通用”抽象类:三角形
,并有两个新属性:循环圈和内嵌圈
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2010-8-23 05:23:12 | 显示全部楼层
凸壳-格雷厄姆扫描算法
基于此:
http://www.partow.net/projects/fastgeo/index.html
这是一个很好的例子http://www.partow.net/downloads/FastGEOConvexHull.zip
这是一个很好的例子
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2010-8-23 05:48:04 | 显示全部楼层
Hi这是一个F#凸包(Graham的扫描)编辑:新代码请参见这里编辑:在某些情况下,使用共线点需要比较的公差模块ConvexHull。

打开系统。
打开Autodesk.AutoCAD.ApplicationServices。
打开Autodesk.AutoCAD.DatabaseServices。
打开Autodesk.AutoCAD.EditorInput。
打开Autodesk.AutoCAD.Geometry。
打开Autodesk.AutoCAD.Runtime。

让顺时针(p1: Point2d)(p2: Point2d)(p3: Point2d)=。
(p2. X-p1. X)*(p3. Y-p1. Y)-(p2. Y-p1. Y)*(p3. X-p1. X)。

让conexHull(ts: Point2d seq)=。
让rec填充acc pt=。
将acc与匹配。
|a:: b:: _时顺时针b a pt->填充acc.Tailpt。
|_->pt:: acc。
让p0=ts。
|>Seq.reduce(有趣的p1 p2->。
如果p2,Y。
ts。
|>List.ofSeq。
|>List.sortBy(有趣的p->。
让d=p0.GetDistanceTo(p)。
(Math.Round((p0. X-p. X)/d,8), d))。
|>List.fold填充[]。
|>List.rev。

[]。
让Test()=。
让doc=Application.DocumentManager.MdiActiveDocument。
让psr=doc.Editor.GetSelection(new SelectionFilter([|new TypeValue(0,"POINT") |]))。
如果psr.Status=PromptStatus.OK那么。
使用tr=doc.TransactionManager.StartTransaction()。
使用pl=new Polyline()。
psr.Value。
|>Seq.cast。
|>Seq.map(有趣(所以:选择对象)->。
let pt=tr.GetObject(so.ObjectId,OpenMode.ForRead ):? > DBPoint。
新的Point2d(pt.Position.X,pt.Position.Y))。
|>conexHull。
|>List.iteri(有趣的i p->pl.AddVertexAt(i, p,0.0,0.0,0.0))。
pl.Closed。
让btr=tr.GetObject(doc.Database.CurrentSpaceId,OpenMode.ForWrite ):? > BlockTableRecords。
btr.AppendEntity(pl)|>忽略。
tr.AddNewlyCreatedDBObject(pl,true)。
tr.Commit。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-2 00:29 , Processed in 0.317506 second(s), 72 queries .

© 2020-2025 乐筑天下

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