明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1525|回复: 8

[函数] 给大家共享个不一样的曲线交点打断代码

[复制链接]
发表于 2021-8-29 13:26 | 显示全部楼层 |阅读模式
本帖最后由 guosheyang 于 2021-10-6 10:21 编辑

我们通常的曲线交点打断程序是breakall插件,该插件代码量太长了,而且还有bug,有时候对矩形不能打断完全; 本自定义命令利用cad自身的三维命令来实现打断相交曲线,而且速度也不慢,虽然也有缺陷,但多数情况下均可用,现作为一种不同的方法分享给大家。

;自定义命令 ygs_brk_int_cur
;命令功能:将相交线在交点处打断                                    
;适用曲线范围:样条线 多段线 直线 圆 椭圆 圆弧 平面三维多段线等均可
;注意事项:①框选要素时选框应将所有要打断的曲线都框住(不要用窗交)
;               ②曲线不能自相交                                       
;本函数应用缺陷:打断后会导致多段线在所有节点处被额外打断         
;                         圆、椭圆都会在其起点处被额外打断                  
(defun c:ygs_brk_int_cur(/ ss BLYZ GS I PT SJD SJD_PT SS2 UN_SURF X)
(setq blyz(getvar 'cmdecho))
(setvar "cmdecho" 0)
(princ"\n请框选线,注意:选框要大于线的范围")
(setq ss(ssget))
(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq gs(sslength ss) i 0)
  (repeat gs
   (command "extrude" "MO" "SU" (ssname ss i)"" 2 )
   (vla-delete (vlax-ename->vla-object(ssname ss i)))
   (setq i(1+ i))
  )
(command "union" (ssget "A"'((0 . "EXTRUDEDSURFACE"))) "" )
(setq un_surf(entlast)
       sjd_pt(cdr(last(ssnamex ss)))
       sjd nil
)
(mapcar'(lambda(x)(setq sjd(cons (car(cdr x))sjd)))sjd_pt)
(entmakex (append (list '(0 . "LWPOLYLINE")
           '(100 . "AcDbEntity")
           '(100 . "AcDbPolyline")
           '(62 . 0)
           (cons 90 (length sjd))
           (cons 70 1)
            )
           (mapcar '(lambda (pt) (cons 10 pt)) sjd)
           )
)
(command "convtosurface" (setq jx(entlast)) ""
          "_intersect" (entlast) un_surf ""
)
(vla-delete (vlax-ename->vla-object jx))
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "cmdecho" blyz)
)


评分

参与人数 2明经币 +2 收起 理由
bssurvey + 1 赞一个!
tigcat + 1 很给力!<!--hcfy-anchor-->

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2021-8-29 13:28 | 显示全部楼层
如果代码应用中有啥问题 请提出来   谢谢!
发表于 2021-9-17 10:36 | 显示全部楼层
谢谢楼主分享
发表于 2021-10-6 01:21 | 显示全部楼层
具体怎么使用,能做成一个lsp插件吗
 楼主| 发表于 2021-10-6 10:30 | 显示全部楼层
本帖最后由 guosheyang 于 2021-10-6 10:36 编辑
对往事说 发表于 2021-10-6 01:21
具体怎么使用,能做成一个lsp插件吗


将该文件拖入cad绘图区域,然后命令行输入命令名 YGS_BRK_INT_CUR  即可

本帖子中包含更多资源

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

x
发表于 2021-12-23 11:08 | 显示全部楼层
不能运行  函数被取消
 楼主| 发表于 2021-12-24 10:12 | 显示全部楼层
本帖最后由 guosheyang 于 2021-12-24 10:48 编辑
http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTE3NDM5fDA3M2Y4ZmM3MTdiOGIwNDk0YjEzOTM1Yjk4NjgyZThhfDE3MTQ1ODUxMjE%3D&request=yes&_f=.fas潇湘飞雨 发表于 2021-12-23 11:08
不能运行  函数被取消

低版本没测试 建议12以上的版本

本帖子中包含更多资源

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

x
发表于 2021-12-25 10:31 | 显示全部楼层
guosheyang 发表于 2021-12-24 10:12
低版本没测试 建议12以上的版本

明白~感谢~~~~~~~~~~~~~
发表于 2022-4-27 22:36 | 显示全部楼层
感谢大佬分享~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 01:38 , Processed in 0.376966 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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