找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2727|回复: 15

[求助] 关于带圆弧PL线点表问题

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2014-3-15 23:42:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 ysq101 于 2014-3-15 23:52 编辑


                               
登录/注册后可看大图

如图中:
一般我们常用的取点表函数如下:
(defun vertexs (ename / plist pp n)        
  (setq obj (vlax-ename->vla-object ename))
  (setq plist (vlax-safearray->list
                (vlax-variant-value
                  (vla-get-coordinates obj))))
  (setq n 0)
  (repeat (/ (length plist) 2)
    (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
    (setq n (+ n 2))
  )
  pp
)


以上代码只能取得图中左边的点表

如果碰到图中有圆弧的PL线...想要取得更为精细点表
用于IF 点在多边形  内   外   或  线上
左图就无能为力了   
有没有办法取得更精细的PL线点表

求大师帮忙写一个好吗??

如下图就没办法判断了:




判断点.jpg
点表.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-15 23:55:07 | 显示全部楼层
xdrx_getsamplept

点评

可怜的我现在的XDRX没办法用了... 基于XDRX写的程序都不能用了... 是不是过期了?? 详见:http://bbs.xdcad.net/thread-672062-1-1.html  详情 回复 发表于 2014-3-15 23:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2014-3-15 23:58:48 | 显示全部楼层

可怜的我现在的XDRX没办法用了...
基于XDRX写的程序都不能用了...
是不是过期了??
详见:http://bbs.xdcad.net/thread-672062-1-1.html

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-16 00:10:21 | 显示全部楼层
ysq101 发表于 2014-3-15 23:58
可怜的我现在的XDRX没办法用了...
基于XDRX写的程序都不能用了...
是不是过期了??

已经更新了

点评

刚测试了一下。。。还是不能满足我的要求。。。 测试图:比如100*100的长方形 四个角已倒有R0.15的角 XDRX就不能将R分解得更为精细点表 可能是相对于100*100 R角太小。。所以只返回四个点(应该要12  详情 回复 发表于 2014-3-16 11:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2014-3-16 11:14:25 | 显示全部楼层

刚测试了一下。。。还是不能满足我的要求。。。

测试图:比如100*100的长方形  四个角已倒有R0.15的角


XDRX就不能将R分解得更为精细点表   可能是相对于100*100     R角太小。。所以只返回四个点(应该要12个点以上)

如果是4*4倒R角0.15   就可以精细分点

精度参数试过  0.00001还是分不出来。。

以下是别人给我的思路:
先取得左边的点表
再区分直线与曲线
再把曲线细分设置任意等分的点表
最后再合并
不知这样的思路对不对?
可怜我还不会写

点评

你试试 xdrx_point_isinside 函数,判断下点是否在曲线的内部。  详情 回复 发表于 2014-3-19 14:59
xdrx_getsamplept 可以根据屏幕显示确定精度,看着小的图形,返回点就少,放大的图形,返回点就多。 另外,也可以自己给定精度返回。这个精度你按照自己的需要算出给它。  详情 回复 发表于 2014-3-19 14:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-16 11:24:54 来自手机 | 显示全部楼层
getsamplept可以设置分弧精度

点评

xdrx_getsamplept 的用法我已经看过说明了。。。 xdrx_getsamplept  详情 回复 发表于 2014-3-16 11:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2014-3-16 11:41:59 | 显示全部楼层
本帖最后由 ysq101 于 2014-3-16 14:31 编辑
st788796 发表于 2014-3-16 11:24
getsamplept可以设置分弧精度

xdrx_getsamplept   的用法我已经看过说明了。。。



xdrx_getsamplept
89. xdrx_getsamplept

功能:按给定精度,返回AcDbCurve类曲线和AcDb2dPolyline(旧的POLYLINE)的样本点。将复杂的曲线用点组成的线段模拟。

调用格式:(xdrx_getsamplept <AcDbCurve 或 AcDb2dPolyline实体图元名> [精度控制])

说明:给定的[精度控制]值玄高差越小,精度越高,分段数越大,精度越高。
      
     精度控制只对曲线段有效,对于POLYLINE,对直线段无效,对其中的ARC段数据起做用。
  
     若不给[精度控制]参数,那么程序自己计算出相对满足视觉误差的值做为玄高差进行分段。

     [精度控制]:分两种方法
      1:给整数,按给定的整数分曲线段
      2:给实数,做为玄高差
     
     注意:对于AcDbSpline,只能给定"玄高差",若给整数值,那么程序按照计算的相对最优值做为玄高差。

返回值:若成功,返回点表,点表肯定包括曲线的开始点和终止点。(p1 p2......),失败返回NIL.

示例:用LINE模拟SPLINE
     (if (setq en (xdrx_entsel "\n请点取一个Spline<退出>:") '((0 . "spline"))))
        (progn
        (setq ed (xdrx_getsamplept (car en)))
        (apply 'command (cons "line" ed))
        (command "")
     )

以上是XD版主发的贴。。。。

[精度控制]: 我设为0.00001   选100*100带R.15圆角的长方形
函数只给我返回4个点

选4*4带R.15圆角的长方形
就能返回16个点




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2014-3-17 15:10:27 | 显示全部楼层
沉得好快。。。。自己顶一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-17 21:46:41 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-3-18 16:56 编辑
ysq101 发表于 2014-3-17 15:10
沉得好快。。。。自己顶一下


G版在MJ发了lisp版的getsamplept,应该和API的是一个算法,不过经比较略有差异,但都不完美,画一个直线型spline测试下可以看到差异
取中算矢高,大于再取中,小于时往前扩展,要用到递归
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

发表于 2014-3-18 11:35:03 | 显示全部楼层
谢谢分享总结
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-3-18 13:26:56 | 显示全部楼层
直接画带凸度的PL线不就行了...干嘛模拟...

点评

这是关于点判断的问题....  详情 回复 发表于 2014-3-19 13:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2014-3-19 13:54:16 | 显示全部楼层
q3_2006 发表于 2014-3-18 13:26
直接画带凸度的PL线不就行了...干嘛模拟...

这是关于点判断的问题....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-3-19 14:55:09 | 显示全部楼层
ysq101 发表于 2014-3-16 11:14
刚测试了一下。。。还是不能满足我的要求。。。

测试图:比如100*100的长方形  四个角已倒有R0.15的角 ...

xdrx_getsamplept 可以根据屏幕显示确定精度,看着小的图形,返回点就少,放大的图形,返回点就多。

另外,也可以自己给定精度返回。这个精度你按照自己的需要算出给它。

点评

精度参数全部试过了.... 从1 2 3 4 到0.00001 返回的点都不能满足要求.... 是否可以考虑加入 遇到圆弧直接指定分成 几等分 来取点 (前提是不管R有多小)  详情 回复 发表于 2014-3-19 23:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-3-19 14:59:01 | 显示全部楼层
ysq101 发表于 2014-3-16 11:14
刚测试了一下。。。还是不能满足我的要求。。。

测试图:比如100*100的长方形  四个角已倒有R0.15的角 ...

你试试 xdrx_point_isinside 函数,判断下点是否在曲线的内部。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-19 15:32:48 来自手机 | 显示全部楼层
XDSoft 发表于 2014-3-19 14:55
xdrx_getsamplept 可以根据屏幕显示确定精度,看着小的图形,返回点就少,放大的图形,返回点就多。

...

ARC段给不给精度都一样
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 22:01 , Processed in 0.417005 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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