乐筑天下

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

一条开放边去切一个闭合的多段线

[复制链接]

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-12-14 10:10:00 | 显示全部楼层 |阅读模式
一条开放边去切一个闭合的多段线,找到交点了,如何知道一个交点交在闭合多段线的哪两个点之间??
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-12-14 10:45:00 | 显示全部楼层

没人回答哎!!
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2010-12-14 12:37:00 | 显示全部楼层
用GetParameterAtPoint判断
int i =(int)pl.GetParameterAtPoint(pt);
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-12-14 12:45:00 | 显示全部楼层
回复
这个交点不是原来闭合多段线上的点啊,我只是想知道交点的前后是多段线上的那个点。
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2010-12-14 12:49:00 | 显示全部楼层
不明白你的意思
你求得的交点不是多段线上的点,那是什么点
回复

使用道具 举报

15

主题

45

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2010-12-14 13:11:00 | 显示全部楼层
回复
不是多段线上原有的点...比如这个多段线有29个点,交点在26和27点之间。那我怎样获得26,27这两个点?
回复

使用道具 举报

0

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
37
发表于 2010-12-14 13:49:00 | 显示全部楼层
一条开放边去切一个闭合的多段线,找到交点了,
这个交点肯定在多段线上面了,要不怎么叫交点
GetParameterAtPoint是获取曲线上某一点的参数值
多段线的参数值的特点是,节点的参数是递增的整数
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2010-12-14 15:39:00 | 显示全部楼层

public void test()
        {
            Editor ed=Application.DocumentManager.MdiActiveDocument.Editor;
            PromptEntityOptions peo = new PromptEntityOptions("\n选择多段线");
            PromptEntityResult per = ed.GetEntity(peo);
            if (per.Status != PromptStatus.OK)
                return;
            ObjectId plid = per.ObjectId;
            using (Transaction tr = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
            {
                Polyline pl = tr.GetObject(plid, OpenMode.ForRead) as Polyline;
                while (true)
                {
                PromptPointOptions ppo = new PromptPointOptions("\n选择多段线上的点");
                ppo.AllowNone = true;
                PromptPointResult ppr = ed.GetPoint(ppo);
                if (ppr.Status != PromptStatus.OK)
                    return;
                Point3d pt = ppr.Value;
                int i =(int)pl.GetParameterAtPoint(pt);
                ed.WriteMessage("\n选择点介于{0}和{1}顶点之间",Convert.ToString(i+1),Convert.ToString(i+2));
                }
            }
        }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 11:43 , Processed in 0.481594 second(s), 68 queries .

© 2020-2025 乐筑天下

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