fjutcivil 发表于 2013-8-27 09:28:59

这个怎么实现

本帖最后由 fjutcivil 于 2014-3-29 20:34 编辑

谢谢大家
.。。。。。。。。。。。。。。。。。。。。。

ll_j 发表于 2013-8-27 11:14:08

不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的功能,G版曾经发过一个程序,做得很好,记不得是这里还是在晓东cad了,你不妨找找。简单一点的办法,就是使用ET的二维化实体(flatten)命令的消隐选项,不过对复杂点的,效果差一点。

fjutcivil 发表于 2013-8-27 13:52:17

ll_j 发表于 2013-8-27 11:14 static/image/common/back.gif
不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的 ...

我弄了张新的截图 应该能看清楚效果了 ,就是黄色的是PL线,然后与黄色线重叠处打断掉,要能够框选全部以前打断的

fjutcivil 发表于 2013-8-27 13:59:25

ll_j 发表于 2013-8-27 11:14 static/image/common/back.gif
不是一个专业,不太看懂“PL端点处打断轴线”的意思,可以看看break命令的F选项是否有用。
右面“掏空”的 ...

发了张例图,你看看。每次都麻烦你 呵呵

ll_j 发表于 2013-8-27 15:55:10

fjutcivil 发表于 2013-8-27 13:52 static/image/common/back.gif
我弄了张新的截图 应该能看清楚效果了 ,就是黄色的是PL线,然后与黄色线重叠处打断掉,要能够框选全部以 ...

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

fjutcivil 发表于 2013-8-27 15:59:14

ll_j 发表于 2013-8-27 15:55 static/image/common/back.gif
稍有点复杂,现在不怎么写程序了,只能说点思路,供你参考。
1.PL线断轴线问题,说实在的,我的理解,轴 ...

第一个问题就是我比较纠结的地方 因为我们倒到计算模型就是要求断点的 ,要不就得自己一个在模型里面画 比较麻烦 所以才想找个快速方法

fjutcivil 发表于 2013-8-27 16:01:36

ll_j 发表于 2013-8-27 15:55 static/image/common/back.gif
稍有点复杂,现在不怎么写程序了,只能说点思路,供你参考。
1.PL线断轴线问题,说实在的,我的理解,轴 ...

这个我是搞不定啦 完全不懂怎么做 图里面的中信线跟PL线是固定的图层 可能得按图层进行

sicky111 发表于 2013-8-27 21:25:48

还是没搞明白楼主的意思。

fjutcivil 发表于 2013-8-27 21:35:15

sicky111 发表于 2013-8-27 21:25 static/image/common/back.gif
还是没搞明白楼主的意思。

就是附件那张图纸里面左图达到右图的效果就可以了

wowan1314 发表于 2013-8-28 12:17:04

尝试写了下!
仅供参考(defun c:t11 nil
    (mapcar''((x)
            (mapcar''((x)
                  (mapcar''((y)(vl-cmdf ".break" y "f" x "@"))
                        (cdr(reverse(mapcar 'cadr (ssnamex (ssget "_c" x x)))))
                  )
                )
                x
            )
      )
      (mapcar''((x)(list (vlax-curve-getendpoint x)(vlax-curve-getstartpoint x)))
            ('((x)(if (= 1 (length x))x(cdr(reverse x))))
                (mapcar 'cadr (ssnamex (ssget '((0 . "L*LINE")))))
            )
      )
    )
)
页: [1] 2
查看完整版本: 这个怎么实现