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
看附件。。。
谢老大………………