明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 15427|回复: 52

[提问] 提个比较难的问题(自动智能作闭合填充边界)!

  [复制链接]
发表于 2014-6-18 20:26 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2014-6-19 05:38 编辑

填充问题:

     大家知道,填充边界不闭合,那是没法填充的,多年来,我一直没有解决这个问题的,这几天在明经也没有发现这个问题解决代码,我总想这么一件事:那就是,点取一点,从这一点向四周放射线(不是实体,是虚的),碰到实体(点、线、圆.......),取得交点坐标,最后,交点坐标多义线连接并闭合,填充完毕,再删除这个填充边界多义线,岂不就完成了吗?

      这是我的心病,对于放射线角度,可以取值精度,比如:5度,对吧?那么那么这个程序的代码,是个复杂智能程序,我能力办不到,我相信,明经有人能办到。


        假如整个屏幕为空,点取一点,我们可以叫程序,闭合整个填充屏幕。实际上就是不让CAD做边界,我们写LISP,取得四周许多点位,求得智能效果,假如能这么智能取得四周边界的话,像我们许多动态演示的也不难做到(单四周闭合边界线),就更好啦。

     假如谁能写出这个代码,将是对设计界的一大贡献,我当重谢,特请来阳城一聚,若何?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-6-19 15:15 | 显示全部楼层
spp_wall 发表于 2014-6-19 14:34
院长的不错!!!!!!!!!!


本帖子中包含更多资源

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

x

点评

e派这么牛的么  发表于 2023-6-5 00:00
回复 支持 1 反对 0

使用道具 举报

发表于 2014-6-20 11:55 | 显示全部楼层
tester005 发表于 2014-6-20 10:35
没看到任何一个程序 都是演示

  1. (defun c:tt1 (/ *error* cmdecho fuzz pt)
  2.   (defun *error* (s)
  3.     (setvar 'cmdecho cmdecho)
  4.     (princ s)
  5.     )
  6.   (setq cmdecho (getvar 'cmdecho))
  7.   (setvar 'cmdecho 0)
  8.   (setq fuzz (getreal "\n容差值<10.0>:"))
  9.   (if (null fuzz) (setq fuzz 10.0))
  10.   (while (setq pt (getpoint "\n指定点:"))
  11.     (setq pt (trans pt 1 0))
  12.     (if (setq e (mybpoly pt fuzz))
  13.       (progn
  14.   (command "hatch" "p" "ansi31" 10 0 "s" e "")
  15.   (entdel e)
  16.   )
  17.       (princ "\n没有封闭区域...")
  18.       )
  19.     )
  20.   (setvar 'cmdecho cmdecho)
  21.   (princ)
  22.   )

代码需加载附件BPOLY_R17.arx使用!适应CAD版本:R17
arx提供一个函数 MyBPoly 和一个命令: BP。
MyBPoly 函数相当于可以指定容差值的CAD自带的函数 BPOLY, (MyBPoly 点 [容差值 = 0.001])
命令 BP 相当于可以指定容差值的CAD自带的命令 Boundary

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-24 16:14 | 显示全部楼层
这个问题今天又来看了一下,我觉得答案已经出来了!

四楼的“shenhung”提出的想法是:在所有交点.端点上.画一个小圆.~包住間隙..再填充.小圆填充后删除,

五楼的院长马上贴出了悬空线检查的命令,效率非常的快!

实际上四楼的方法变成了“在所有的悬空点添上小圆”这就已经是答案了,只要有一个查找悬空点的程序,然后在该悬空点加上某直径的小圆,

就已经是非常好的办法了,这几乎可以把所有的不闭合的地方都闭合了!

然后“tryhi”在另一个贴子里“寻找悬空线”给出了查找悬空线的代码,而且最好的是,在找出的悬空线里把小圆都加上了!!!!

http://bbs.mjtd.com/forum.php?mo ... D5%CF%DF&page=1

这就是答案,我把一个研究了很长时间很难打剖面线的图案,成功的用这个办法把剖面线打出来了!

当然在复杂的图形里,为了快速的计算和填充,最好用ET工具里的快速选择把有关的线给单独拎出来,这样速度就基本上能满足要求了!
发表于 2014-6-18 20:49 | 显示全部楼层
可以尝试修改 HPGAPTOL 变量
有的时候CAD用延伸的时候,正常视图无法延伸对象,放大后倒是可以和这种情况雷同。
在遇到有圆弧的多段线的时候,有重叠线的时候,也会出现填充失败。
------ 省略若干。。

点评

怎么说哪,目前没有智能代码解决这个问题的。  发表于 2014-6-18 21:06
发表于 2014-6-19 09:16 | 显示全部楼层
通常是很细微的间隙.不好找出来.~!!
我是用很笨的方法.~!! 在所有交点.端点上.画一个小圆.~包住間隙..再填充.小圆填充后删除.

点评

好方法  发表于 2014-6-19 13:06
不失是个好办法,也可以LISP实现你的办法的。  发表于 2014-6-19 09:42
发表于 2014-6-19 09:28 | 显示全部楼层
;;先查悬挂线

本帖子中包含更多资源

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

x
发表于 2014-6-19 10:14 | 显示全部楼层
院长好厉害,我平常解决不闭合的,也是笨办法,用cad自带的BOUNDARY重新生成边界,再去填充
发表于 2014-6-19 12:10 | 显示全部楼层
楼主说的射线法   
等出的结果:
角度太小   =  点太多
角度太大   =  太毛躁

还是象3楼说的用小圆还封闭线来得更快
发表于 2014-6-19 12:49 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2014-6-19 14:34 | 显示全部楼层
院长的不错!!!!!!!!!!

点评

纯属忽悠  发表于 2014-6-19 14:52
发表于 2014-6-19 18:18 | 显示全部楼层
xyp1964 发表于 2014-6-19 15:15

上面的图中第一个图形如果有多个缺口能处理吗

点评

哪个算是正式开口?  发表于 2014-6-19 22:09
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 20:15 , Processed in 1.012175 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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