明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 陈进佳

多段线,圆,弧,直线,曲线相交点打断。大量的话速度比较慢,希望大神优化

[复制链接]
发表于 2020-12-16 10:24:11 | 显示全部楼层
这个怎么用,是lsp文件吗?
发表于 2020-12-25 12:35:22 | 显示全部楼层
请问一下为什么我复制到lsp文件里面,运行不了呢?
发表于 2021-6-10 20:33:58 | 显示全部楼层
风起0070 发表于 2020-12-25 12:35
请问一下为什么我复制到lsp文件里面,运行不了呢?

看这里c:br    命令是 br
发表于 2021-6-13 14:26:55 | 显示全部楼层
爱你,么么达
发表于 2021-9-19 10:44:46 | 显示全部楼层
楼主威武,雄起
发表于 2021-9-28 22:08:48 | 显示全部楼层
测试打断有点问题,上图纸.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-5-5 01:08:38 | 显示全部楼层
本帖最后由 尘缘一生 于 2022-5-5 01:23 编辑

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

  2. ;;两实体(en1 en2) 为实体名 -------交点------(一级)----------------
  3. ;;k:(0--不延伸,1--延伸基本对象,2--延伸参数传递的对象,3--延伸)
  4. (defun sl-Curveinters (en1 en2 k / pl pts)
  5.   (setq pl (vlax-invoke (vlax-ename->vla-object en1) 'IntersectWith (vlax-ename->vla-object en2) k))  
  6.   (while pl
  7.     (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
  8.       pl (cdr (cdr (cdr pl)))
  9.     )
  10.   )
  11.   pts
  12. )
  13. ;;实体与其交点打断--------(一级)------------
  14. (defun break_obj (ent brkptlst / brkobjlst en tp maxparam closedobj minparam obj obj2break p1param p2 p2param)
  15.   (setq obj2break ent brkobjlst (list ent) tp (cdr (assoc 0 (entget ent))))
  16.   (foreach brkpt brkptlst
  17.     (if brkobjlst
  18.       (progn
  19.         (if (not (numberp (vl-catch-all-apply 'vlax-curve-getdistatpoint (list obj2break brkpt))))
  20.           (foreach obj brkobjlst
  21.             (if (numberp (vl-catch-all-apply 'vlax-curve-getdistatpoint (list obj brkpt)))
  22.               (setq obj2break obj)
  23.             )
  24.           )
  25.         )
  26.       )
  27.     )
  28.     ;;---------------------------------
  29.     (cond
  30.       ((and (= "SPLINE" tp)
  31.          (vlax-curve-isclosed obj2break))
  32.         (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
  33.           p2 (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
  34.         )
  35.         (command "._break" obj2break (trans brkpt 0 1) (trans p2 0 1))
  36.       )
  37.       ((= "CIRCLE" tp)
  38.         (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
  39.           p2 (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
  40.         )
  41.         (command "._break" obj2break (trans brkpt 0 1) (trans p2 0 1))
  42.         (setq tp "ARC")
  43.       )
  44.       ((and (= "ELLIPSE" tp) (vlax-curve-isclosed obj2break))
  45.         (setq p1param  (vlax-curve-getparamatpoint obj2break brkpt)
  46.           p2param  (+ p1param 0.000001)
  47.           minparam (min p1param p2param)
  48.           maxparam (max p1param p2param)
  49.           obj (vlax-ename->vla-object obj2break)
  50.         )
  51.         (vlax-put obj 'startparameter maxparam)
  52.         (vlax-put obj 'endparameter (+ minparam 2pi))
  53.       )
  54.       (t   
  55.         (setq closedobj (vlax-curve-isclosed obj2break))
  56.         (command "._break" obj2break (trans brkpt 0 1) (trans brkpt 0 1))
  57.         (if (not closedobj)
  58.           (setq brkobjlst (cons (entlast) brkobjlst))
  59.         )
  60.       )
  61.     )
  62.   )
  63. )
  64. ;;主程序------------------
  65. ;支持 LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"
  66. (defun c:tr (/ ss1 ssn ssm i j k ssc ptlst ptls)
  67.   (vl-load-com)
  68.   (prompt "\n 支持 LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE")
  69.   (setq ss1 (ssget '((0 . "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
  70.   (setq ptlst nil ptls nil ol (getvar "osmode") i -1)
  71.   (setvar "osmode" 0)
  72.   (while (setq ssn (ssname ss1 (setq i (1+ i))))
  73.     (setq j 0)
  74.     (setq ptlst nil)
  75.     (repeat (sslength ss1)
  76.       (setq ssm (ssname ss1 j)
  77.         ptlst (append (sl-Curveinters ssn ssm 0) ptlst)
  78.         j (1+ j)
  79.       )
  80.     )
  81.     (setq ptls (cons ptlst ptls))
  82.   )
  83.   (setq ptls (reverse ptls))
  84.   (setq k 0)
  85.   (while (setq ssc (ssname ss1 k))
  86.     (break_obj ssc (nth k ptls))
  87.     (setq k (1+ k))
  88.   )
  89.   (setvar "osmode" 0)
  90. )


回复 支持 1 反对 0

使用道具 举报

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

能添加打断后删除吗?

类似下面这样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-6-7 18:09:49 来自手机 | 显示全部楼层
谢谢谢谢谢谢
发表于 2022-7-7 10:39:00 | 显示全部楼层
以前找到一个国外版本的,功能很全面,但没这个好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:03 , Processed in 0.174032 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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