明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3169|回复: 18

[提问] 这个怎么实现

[复制链接]
发表于 2013-8-27 09:28:59 | 显示全部楼层 |阅读模式
本帖最后由 fjutcivil 于 2014-3-29 20:34 编辑

谢谢大家
.。。。。。。。。。。。。。。。。。。。。。
发表于 2013-8-27 11:14:08 | 显示全部楼层
不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的功能,G版曾经发过一个程序,做得很好,记不得是这里还是在晓东cad了,你不妨找找。简单一点的办法,就是使用ET的二维化实体(flatten)命令的消隐选项,不过对复杂点的,效果差一点。
 楼主| 发表于 2013-8-27 13:52:17 | 显示全部楼层
ll_j 发表于 2013-8-27 11:14
不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的 ...

我弄了张新的截图 应该能看清楚效果了 ,就是黄色的是PL线,然后与黄色线重叠处打断掉,要能够框选全部以前打断的
 楼主| 发表于 2013-8-27 13:59:25 | 显示全部楼层
ll_j 发表于 2013-8-27 11:14
不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的 ...

发了张例图,你看看。每次都麻烦你 呵呵
发表于 2013-8-27 15:55:10 | 显示全部楼层
fjutcivil 发表于 2013-8-27 13:52
我弄了张新的截图 应该能看清楚效果了 ,就是黄色的是PL线,然后与黄色线重叠处打断掉,要能够框选全部以 ...

稍有点复杂,现在不怎么写程序了,只能说点思路,供你参考。
1.PL线断轴线问题,说实在的,我的理解,轴线是辅助线,一般是不断的,这是题外话。
说正题,框选的条件需要明确,就是被断的线和作为剪刀的线应该明确区分,就像例子里面的中心线和有宽度PL线,这样根据条件分别框选或者框选后根据条件拆分选择集都容易一点,否则遍历拆分选择集是很麻烦的事,判断麻烦还费功夫。
区分被断线和剪刀,下面就相对容易了,先把剪刀的每个点提取出来,形成一个两个点一组的表,然后再对被断线遍历,每根线遍历点组,判断每组中两个点是否都在被断线上(注意equal考虑误差),再线上则由远到近break,如果考虑一条线上有多个剪刀,则要把这些剪刀都先找出来,再由远到近打断。
2.多段线打断于折点的问题比较简单,对多段线求顶点表,然后由后到前“打断于点”。
 楼主| 发表于 2013-8-27 15:59:14 | 显示全部楼层
ll_j 发表于 2013-8-27 15:55
稍有点复杂,现在不怎么写程序了,只能说点思路,供你参考。
1.PL线断轴线问题,说实在的,我的理解,轴 ...

第一个问题就是我比较纠结的地方 因为我们倒到计算模型就是要求断点的 ,要不就得自己一个在模型里面画 比较麻烦 所以才想找个快速方法
 楼主| 发表于 2013-8-27 16:01:36 | 显示全部楼层
ll_j 发表于 2013-8-27 15:55
稍有点复杂,现在不怎么写程序了,只能说点思路,供你参考。
1.PL线断轴线问题,说实在的,我的理解,轴 ...

这个我是搞不定啦 完全不懂怎么做 图里面的中信线跟PL线是固定的图层 可能得按图层进行
发表于 2013-8-27 21:25:48 | 显示全部楼层
还是没搞明白楼主的意思。
 楼主| 发表于 2013-8-27 21:35:15 | 显示全部楼层
sicky111 发表于 2013-8-27 21:25
还是没搞明白楼主的意思。

就是附件那张图纸里面左图达到右图的效果就可以了
发表于 2013-8-28 12:17:04 | 显示全部楼层
尝试写了下!
仅供参考
  1. (defun c:t11 nil
  2.     (mapcar''((x)
  3.             (mapcar''((x)
  4.                     (mapcar''((y)(vl-cmdf ".break" y "f" x "@"))
  5.                         (cdr(reverse(mapcar 'cadr (ssnamex (ssget "_c" x x)))))
  6.                     )
  7.                 )
  8.                 x
  9.             )
  10.         )
  11.         (mapcar''((x)(list (vlax-curve-getendpoint x)(vlax-curve-getstartpoint x)))
  12.             ('((x)(if (= 1 (length x))x(cdr(reverse x))))
  13.                 (mapcar 'cadr (ssnamex (ssget '((0 . "L*LINE")))))
  14.             )
  15.         )
  16.     )
  17. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 04:18 , Processed in 0.202776 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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