yeahyeah 发表于 2014-4-11 22:42:03

今晚又想起来这个帖子。
现在我有个设想,不知哪位神人能实现下?

既然两条多段线相交,那会有一个交点,用此交点画辅助圆,然后选择要打断的多段线(为了方便,就叫L1吧),之后命令会将辅助圆内的与L1相交的部分剪切掉,之后命令会删除此辅助圆。

预想使用该命令的步骤:
第一步、用命令时需要输入两相交线,类型就是直线、多段线或两者的组合。(由程序求出两线交点)
第二步、输入打断距离(也就是程序中的辅助圆的直径);
第三步、选择要打断的直线或多段线。

哪位大神能实现此想法啊?

Bellahx 发表于 2014-4-17 15:49:35

觉得楼主的想法很棒!边研究边等大神来~不过我低效率~写代码巨慢

伪书虫86 发表于 2014-10-4 16:39:52

这个蛮好,有了我也要啊

暗夜贵族 发表于 2015-7-1 14:37:09

yeahyeah 发表于 2013-8-21 21:10 static/image/common/back.gif
;;画多段线打断于交点处

(defun c:kk (/ LA P0 PT S PL A d)


(defun c:kk ()
        (SETQ LST nil)
        (setq laY (getvar 'clayer))
(setq p0 (getpoint "\n第一点:"))
(while p0
                (setq pt (getpoint p0 "\n下一点:"))
                (setq sS
                        (ssget "f"
                                (list (POLARp0(angle p0 PT) 2) pt)
                                (list      (cons 0 "*line,LWPOLYLINE,arc,circle,ellipse")
                                        (cons 8 laY);只能在一个图层里
                                )
                        )
                )
                (command "PLINE" "NON" P0 "NON" PT "")
                (SETQ E0 (ENTLAST))
                (SETQE0_ANG (angle p0 PT))
                (IF SS (setq ss_count 0 ss_total (sslength ss))
                )
                (WHILE (< ss_count ss_total )
                        (setq ent (ssname ss ss_count))
                        (setq ss_count (+ 1 ss_count) )
                        (IF (/= ENT E0)
                                (progn
                                        (SETQ BRKPT (MK_INTERS ent e0))
                                        ;(SETQ BRKPT (LIST (CAR BRKPT)(CADR BRKPT)))
                                        (IF BRKPT
                                                (progn
                                                        (setq para (vlax-curve-getParamAtPoint ent brkpt))
                       (setq dir1 (vlax-curve-getFirstDeriv ent para))
                        (setq dir1_ang (angle '(0 0) dir1))
                                              (if   (OR(= dir1_ang (/ pi 2)) (= dir1_ang (* pi 1.5)) )
                                                                (command "._break" ent   "NON" (POLARbrkpt(+ E0_ANG (/ PI 2)) 2) "NON" (POLARbrkpt(+ E0_ANG (* PI 1.5)) 2))
                                                                (if   (OR(= dir1_ang 0) (= dir1_ang pi ) )
                                                                        (progn
                                                                                (setq Lst (cons p0 (cons pt Lst)))
                                                                                (setq Lst (cons(POLARbrkpt(+ dir1_ang (* PI 1.5)) 2) (cons(POLARbrkpt(+ dir1_ang (/ PI 2)) 2) Lst)))
                                                                        )
                                                                )
                                                        )
                                                )
                                        )
                                )
                        )
                )
                (if Lst
                        (progn
                                (SETQ list_ptY (vl-sort Lst   (function (lambda (e1 e2)   (< (caDr e1) (caDr e2)) ) ) ))
                                (while (cAr list_ptY)
                                        (setq A (car list_ptY) B (cadr list_ptY))
                                        (setq list_ptY (CDR(cdr list_ptY)))
                                        (COMMAND "pline" "NON" a "W" 0.80.8"NON" b "")
                                )
                                (entdele0)
                                (setq lst nil)
                        )
                )
                (setq p0 pt)
        )
)

暗夜贵族 发表于 2015-7-1 14:39:28

yeahyeah 发表于 2013-8-21 21:10 static/image/common/back.gif
;;画多段线打断于交点处

(defun c:kk (/ LA P0 PT S PL A d)


只有正交的pl线可以打断,而且只打断竖直的线,水平的线不处理

陨落 发表于 2015-7-1 21:35:14

不是这个专业的,没太看懂

903242237 发表于 2015-7-22 14:45:39

ucuc2003 发表于 2013-8-23 22:08 static/image/common/back.gif
看附件。。。

这个真心好用

czcxxx 发表于 2015-10-22 08:41:39

看看!!!!!!!!!!!!!!!!!!!!!

tongtong3489 发表于 2016-7-30 21:04:04

好,线打断线的功能一直想有办法解决,终于实现了

hyqfa 发表于 2017-9-21 10:35:48

ucuc2003 发表于 2013-8-23 22:08
看附件。。。

谢老大………………
页: 1 [2] 3
查看完整版本: 【悬赏!!!】画多段线打断于交点处