明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: ysq101

[已解答] 程序卡壳了。。求思路。。高手指点一二

[复制链接]
 楼主| 发表于 2014-12-28 20:29 | 显示全部楼层
llsheng_73 发表于 2014-12-26 15:01
一个最简单的办法是如果中间那个点不在生成出来的ARC上,说明三个点的顺序需要反过来也就是起止角要反过来 ...

一个最简单的办法是如果中间那个点不在生成出来的ARC上,
这句是重点啊~~~~~~~~

我又想到一个办法了。。说说看对不对
因为ARC的中点我们是可以确定的。。所以这点不需要IF
我们只需要IF起点和中点
我的笨办法是用3点作3角形再IF新生成的ARC中点是否在3角形的线上

另外我看了一下帮助   好像有个VL系列有个函数是可以IF 点是否在对曲线上的
烦请指点一下
发表于 2014-12-28 20:37 | 显示全部楼层
ysq101 发表于 2014-12-28 20:29
一个最简单的办法是如果中间那个点不在生成出来的ARC上,
这句是重点啊~~~~~~~~

VL系列有个函数是可以IF 点是否在对曲线上办法很多,比如(vlax-curve-getdistatpoint obj pt)和(vlax-curve-getparamatpoint obj pt)如果pt不在obj上都会返回NIL直接根据这个返回结果是可以确实点是否在线上

但话说回来,真要根据前边我所说“最简单”而先生成ARC,经过判断后再决定要不要删掉重新画,从效率上说不如先进行判断后一次性处理来得直接。。。。前边的3Parc是可能直接利用的。。。。它的道理也难不到你不是
 楼主| 发表于 2014-12-29 19:36 | 显示全部楼层
llsheng_73 发表于 2014-12-28 20:37
VL系列有个函数是可以IF 点是否在对曲线上办法很多,比如(vlax-curve-getdistatpoint obj pt)和(vlax-cur ...

谢谢你的耐心指点
如果不经过时先生成ARC图元,凭我的水平还真难到我了
因为我从来没有写过关于多线段(或点表)顺逆时针的IF子程序
发表于 2014-12-30 13:20 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-12-30 13:32 编辑
ysq101 发表于 2014-12-29 19:36
谢谢你的耐心指点
如果不经过时先生成ARC图元,凭我的水平还真难到我了
因为我从来没有写过关于多线段( ...

20楼的代码已经解决了你觉得的难点,第一个PLDIR是根据论坛众多高手的帖子写出来的,它可以判定一个点表所给定的坐标是顺时针方向还是逆时针方向,3Parc同样根据众多高手的一引起相关帖子写出来的,它计算三点所在圆的圆心,如果三点共直线,将返回nil
3Parc首先判定3点是否共直线,如果不是,则根据其方向决定用哪一个点与圆心计算起始角和终止角
你只需要把要处理的线的起点,中点,止点分别传递给p1,p2,p3,它就能直接给你绘制出你所需要的ARC
就算你把P1和P3给反了,它所绘制出来的ARC一定是P1,P2,P3都在ARC上。。。
也就是说(3parc p1 p2 p3)和(3parc p3 p2 p1)所绘制的ARC是完全一样的。。。那么还需要处理什么?
 楼主| 发表于 2014-12-30 17:32 | 显示全部楼层
llsheng_73 发表于 2014-12-30 13:20
20楼的代码已经解决了你觉得的难点,第一个PLDIR是根据论坛众多高手的帖子写出来的,它可以判定一个点表所 ...

汗。。。一言惊醒梦中人啊~~~~~~~
对不起了。。我没有细读你给出的源码
刚测试了一下   只要不把p2搞错
这段程序完全可以   代替了  command arc  了。。
速度极高啊。。。
再次谢谢老师指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 14:49 , Processed in 0.406359 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表