明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1583|回复: 8

求实现这个功能的工具

[复制链接]
发表于 2019-3-27 12:37 | 显示全部楼层 |阅读模式
15明经币
本帖最后由 qq25469005 于 2023-2-22 16:21 编辑


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

最佳答案

查看完整内容

;请试用以下程序 (defun c:brs (/ cmd osm dist dis1 ent en1 ptt pt0 pt1 pt2 zcd dqL name) (vl-load-com) (setq cmd (getvar "cmdecho")) (setq osm (getvar "osmode")) (setvar "cmdecho" 0) (setvar "osmode" 0) (vl-cmdf "_undo" "be") (If (= (setq dis1 (getreal "\n输入打断间距:")) nil) (setq dis1 0.8) ) (setq dist (* 0.5 dis1)) (while (setq en1 ...
发表于 2019-3-27 12:37 | 显示全部楼层
;请试用以下程序
(defun c:brs (/ cmd osm dist dis1 ent en1 ptt pt0 pt1 pt2 zcd dqL name)
     (vl-load-com)
     (setq cmd (getvar "cmdecho"))
     (setq osm (getvar "osmode"))
     (setvar "cmdecho" 0)
     (setvar "osmode" 0)
     (vl-cmdf "_undo" "be")
     (If (= (setq dis1 (getreal "\n输入打断间距<0.8>:")) nil)
         (setq dis1 0.8)
     )
     (setq dist (* 0.5 dis1))
     (while (setq en1 (entsel "\n选择要打断的线:"))
         (setq ptt (cadr en1))
         (setq ent (car en1))
         (setq name (cdr (assoc 0 (entget ent))))
         (if (wcmatch name "LINE,*POLYLINE,SPLINE,ARC,CIRCLE,ELLIPSE")
             (progn
                (setq pt0 (vlax-curve-getClosestPointTo ent ptt))
                (setq zcd (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)))
                (setq dqL (vlax-curve-getdistatpoint ent pt0))
                (if (<= dist dqL (- zcd dist))
                    (progn
                        (setq pt1 (vlax-curve-getpointatdist ent (- dqL dist)))
                        (setq pt2 (vlax-curve-getpointatdist ent (+ dqL dist)))
                        (vl-cmdf "_break" ent "f" pt1 pt2)
                    )
                )
            )
            (alert "你选取的不是直线、多段线、样条曲线、圆、椭圆、圆弧、椭圆弧中一种,请重新选取!")
         )
     )
     (vl-cmdf "_undo" "e")
     (setvar "osmode" osm)
     (setvar "cmdecho" cmd)
     (princ)
)
回复

使用道具 举报

发表于 2019-3-29 16:36 | 显示全部楼层
本帖最后由 1291500406 于 2019-3-29 22:17 编辑

(defun c:bb ()(setvar "cmdecho" 0)(setq a(getreal "\n必强提示:指定断口大小"))(if a(progn(while(setq b(getpoint "\n必强提示:指定位置"))(command "circle" b "d" a)(setq ss (entlast))(command "_trim" ss "" (entsel "\n必强提示:选择剪切对象:") pause )(command "erase" ss ""))))(princ))

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2019-4-2 08:51 | 显示全部楼层
本帖最后由 qq25469005 于 2019-4-17 08:43 编辑
1291500406 发表于 2019-3-29 16:36
(defun c:bb ()(setvar "cmdecho" 0)(setq a(getreal "\n必强提示:指定断口大小"))(if a(progn(while(setq  ...

(defun c:BRS (/ en1 len1 pt0)
        (vl-load-com)
        (setq dis1 (getreal "\n输入打断间距:"))
      
)有时候断口距离不标准,能帮我优化下吗

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2019-5-27 08:40 | 显示全部楼层
yshf 发表于 2019-3-27 12:37
;请试用以下程序
(defun c:brs (/ cmd osm dist dis1 ent en1 ptt pt0 pt1 pt2 zcd dqL name)
     (vl-l ...

你好,为什么在CAD2019里面显示点为空,cad2007正常
回复

使用道具 举报

发表于 2019-5-27 15:09 | 显示全部楼层
是pt0?
还是pt1?
或是pt2?
请上传出问题的测试图
回复

使用道具 举报

 楼主| 发表于 2019-5-28 13:23 | 显示全部楼层
yshf 发表于 2019-5-27 15:09
是pt0?
还是pt1?
或是pt2?

选择的时候只有亮显,点无效,应该是pt0

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2019-5-29 15:00 | 显示全部楼层
回复

使用道具 举报

发表于 2020-12-10 23:43 | 显示全部楼层
厉害,,路过,顶起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 18:45 , Processed in 0.211770 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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