风起0070 发表于 2020-12-16 10:24:11

这个怎么用,是lsp文件吗?

风起0070 发表于 2020-12-25 12:35:22

请问一下为什么我复制到lsp文件里面,运行不了呢?

alexmai 发表于 2021-6-10 20:33:58

风起0070 发表于 2020-12-25 12:35
请问一下为什么我复制到lsp文件里面,运行不了呢?

看这里c:br    命令是 br

l982414603 发表于 2021-6-13 14:26:55

爱你,么么达

dasha321 发表于 2021-9-19 10:44:46

楼主威武,雄起

tigcat 发表于 2021-9-28 22:08:48

测试打断有点问题,上图纸.

尘缘一生 发表于 2022-5-5 01:08:38

本帖最后由 尘缘一生 于 2022-5-5 01:23 编辑

速度问题,就是用的COMMAND 原因,抛弃command 程序会写很长,本坛有部分代码,我整合过,整理下,并没有解决速度问题。
http://bbs.mjtd.com/thread-185383-1-1.html
;选择集交点断开modify by 尘缘一生QQ:15290049

;;两实体(en1 en2) 为实体名 -------交点------(一级)----------------
;;k:(0--不延伸,1--延伸基本对象,2--延伸参数传递的对象,3--延伸)
(defun sl-Curveinters (en1 en2 k / pl pts)
(setq pl (vlax-invoke (vlax-ename->vla-object en1) 'IntersectWith (vlax-ename->vla-object en2) k))
(while pl
    (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
      pl (cdr (cdr (cdr pl)))
    )
)
pts
)
;;实体与其交点打断--------(一级)------------
(defun break_obj (ent brkptlst / brkobjlst en tp maxparam closedobj minparam obj obj2break p1param p2 p2param)
(setq obj2break ent brkobjlst (list ent) tp (cdr (assoc 0 (entget ent))))
(foreach brkpt brkptlst
    (if brkobjlst
      (progn
      (if (not (numberp (vl-catch-all-apply 'vlax-curve-getdistatpoint (list obj2break brkpt))))
          (foreach obj brkobjlst
            (if (numberp (vl-catch-all-apply 'vlax-curve-getdistatpoint (list obj brkpt)))
            (setq obj2break obj)
            )
          )
      )
      )
    )
    ;;---------------------------------
    (cond
      ((and (= "SPLINE" tp)
         (vlax-curve-isclosed obj2break))
      (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
          p2 (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
      )
      (command "._break" obj2break (trans brkpt 0 1) (trans p2 0 1))
      )
      ((= "CIRCLE" tp)
      (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
          p2 (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
      )
      (command "._break" obj2break (trans brkpt 0 1) (trans p2 0 1))
      (setq tp "ARC")
      )
      ((and (= "ELLIPSE" tp) (vlax-curve-isclosed obj2break))
      (setq p1param(vlax-curve-getparamatpoint obj2break brkpt)
          p2param(+ p1param 0.000001)
          minparam (min p1param p2param)
          maxparam (max p1param p2param)
          obj (vlax-ename->vla-object obj2break)
      )
      (vlax-put obj 'startparameter maxparam)
      (vlax-put obj 'endparameter (+ minparam 2pi))
      )
      (t   
      (setq closedobj (vlax-curve-isclosed obj2break))
      (command "._break" obj2break (trans brkpt 0 1) (trans brkpt 0 1))
      (if (not closedobj)
          (setq brkobjlst (cons (entlast) brkobjlst))
      )
      )
    )
)
)
;;主程序------------------
;支持 LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"
(defun c:tr (/ ss1 ssn ssm i j k ssc ptlst ptls)
(vl-load-com)
(prompt "\n 支持 LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE")
(setq ss1 (ssget '((0 . "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
(setq ptlst nil ptls nil ol (getvar "osmode") i -1)
(setvar "osmode" 0)
(while (setq ssn (ssname ss1 (setq i (1+ i))))
    (setq j 0)
    (setq ptlst nil)
    (repeat (sslength ss1)
      (setq ssm (ssname ss1 j)
      ptlst (append (sl-Curveinters ssn ssm 0) ptlst)
      j (1+ j)
      )
    )
    (setq ptls (cons ptlst ptls))
)
(setq ptls (reverse ptls))
(setq k 0)
(while (setq ssc (ssname ss1 k))
    (break_obj ssc (nth k ptls))
    (setq k (1+ k))
)
(setvar "osmode" 0)
)

ZJKUSO 发表于 2022-5-30 09:45:10

尘缘一生 发表于 2022-5-5 01:08
速度问题,就是用的COMMAND 原因,抛弃command 程序会写很长,本坛有部分代码,我整合过,整理下,并没有解 ...

能添加打断后删除吗?

类似下面这样

willing0 发表于 2022-6-7 18:09:49

谢谢谢谢谢谢

Point5 发表于 2022-7-7 10:39:00

以前找到一个国外版本的,功能很全面,但没这个好用
页: 1 [2] 3
查看完整版本: 多段线,圆,弧,直线,曲线相交点打断。大量的话速度比较慢,希望大神优化