明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1943|回复: 16

[提问] (求助)双线修剪,麻烦路过的大神能否帮忙解决以下的问题

[复制链接]
发表于 2021-6-1 17:38 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 999999 于 2021-6-3 14:49 编辑

各位路过的大神,麻烦帮小弟看看,以下图片能否帮忙解决(看以下大神们的代码是否可以修改成图片上的那样)
1.输入命令
2.绘制需要修剪的双线(输入双线宽度)带记忆(当前图层)
3.与双线相交的交点打断,并删除双线内的多段线

麻烦路过的大神,可以帮忙结合以下大神的贴子进行修改
以下是相关链接:雨的节奏大神的贴子
1.http://bbs.mjtd.com/forum.php?mo ... hlight=%C7%D0%B8%EE
在一个图形里打断一次,就不能在同一个图形实现同样效果,而且执行命令一次后,就结束。
以下是代码:
(defun c:NN (/ os olddix pt1 pt2 ptlistx ptlists enx  eny ss2 reg1 reg2)
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (if (null DIX)
  (setq DIX (getdist "\n请输入要连接的距离:"))
  (progn
      (setq OLDDIX DIX
            DIX (getreal (strcat "输入要连接的距离<"(rtos OLDDIX 2 4)">")))
            (if (null DIX) (setq DIX OLDDIX))
   )
  )
  (command "._undo" "begin")
(setq pt1 (getpoint "\n输入第一点"))
(setq pt2 (getpoint pt1 "\n输入下一点"))
(setq ptlist (list pt1 pt2)
        angx (angle pt1 pt2))
  (setq ptlistx
        (mapcar '(lambda (x) (polar x (+ (/ pi 2) angx) DIX)) ptlist))
  (setq ptlistx (reverse ptlistx))
  (setq ptlists (append ptlist ptlistx))
  (command "pline") (mapcar 'command ptlists) (command "c")
  (setq enx (entlast))
  (setq ss (ssget "f" ptlistx))
  (setq ss (ssdel enx ss))
  (command "region" enx "")
  (setq reg1 (entlast))
  (command "region" ss "")
  (setq reg2 (entlast))
  (command "subtract" reg2 "" reg1 "")
  (setq eny (entlast))
  (command "explode" eny)
  (setq ss2 (ssget "p"))
  (setvar "EDITACCEPT" 1)
  (command "EDIT" ss2  "j" "all" "" "")
  (setvar "EDITACCEPT" 0)
  (command "._undo" "end")
(setvar "osmode" os)
(princ "\n完成连线操作")
(prin1)
)

Gu_xl大神在评论区评论的相似贴子
2.http://bbs.mjtd.com/forum.php?mo ... AB%CF%DF&page=1
以下是代码:
;;;明经通道 编制 By Gu_xl 2011年7月5日
(defun c:DtrimIn(/ p1 p3 p4 dis pl s1  en w  enpline pline1 pline1 ss ssbj kd ss1 ss2 ss3 ss4 pl1 pl2 removesel)
(setq os (getvar 'osmode))
(setq cmd (getvar 'cmdecho))
(mapcar 'setvar (list 'osmode 'cmdecho) '(0 0))
  (if *w*
    (progn
  (setq w (getdist (getvar "viewctr") (strcat "\n 双线宽度<" (rtos *w* 2 2) ">: ")))
  (if (null w) (setq w *w*) (setq *w* w))
  )
    (progn
      (setq w (getreal (strcat "\n 双线宽度<1.0>: ")))
      (if (null w) (setq w 1.0 *w* w) (setq *w* w))
      )
    )
  (initget 7 "Yes No  ")
  (setq kd (getkword "\n 是否删除双线[Yes/No]<No>:"))
  (setq en (entlast))
  (princ "\n 请绘制双线中线: ")
  (setvar 'osmode 3071)
  (vl-cmdf "_pline")
  (while (= 1 (getvar "cmdactive"))
  (vl-cmdf pause)
    )
  (setvar 'osmode 0)
  (setq enpline (entlast))
  (if (not (equal en enpline))
    (progn
  (vla-Offset (vlax-ename->vla-object enpline) (/ w 2.0))
  (setq pline1 (entlast))
  (vla-Offset (vlax-ename->vla-object enpline) (/ w -2.0))
  (setq pline2 (entlast))
  (setq ssbj (ssadd pline1))
  (ssadd pline2 ssbj)
  (setq pl (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget pline1))))
  (setq pl (append pl (reverse (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget pline2))))))
  (setq p1 (apply 'mapcar (cons 'min pl))
        p3 (apply 'mapcar (cons 'max pl))
        )
  (command "_.Zoom" "_Window" p1 p3 "._Zoom" "0.95x")
  (setq dis (* 0.15 w))
    (vla-Offset (vlax-ename->vla-object enpline) (- (/ w 2.0) dis))
  (setq pline3 (entlast))
  (vla-Offset (vlax-ename->vla-object enpline) (+ dis (/ w -2.0)))
  (setq pline4 (entlast))
  (setq pl1 (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget pline3))))
  (setq pl2 (reverse (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget pline4)))))
  (entdel pline3)
  (entdel pline4)
  (vla-put-Visible (vlax-ename->vla-object pline1) :vlax-false)
  (vla-put-Visible (vlax-ename->vla-object pline2) :vlax-false)
  (setq ss1 (ssget "f" (list (car pl1) (last pl2))) ss2 (ssget "f" (list (last pl1) (car pl2))))
  (if ss1
    (repeat (setq n (sslength ss1))
      (setq removesel (cons (ssname ss1 (setq n (1- n))) removesel))
      )
    )
  (if ss2
    (repeat (setq n (sslength ss2))
      (setq removesel (cons (ssname ss2 (setq n (1- n))) removesel))
      )
    )
  (mapcar '(lambda (x) (vla-put-Visible (vlax-ename->vla-object x) :vlax-false)) removesel)
  (vla-put-Visible (vlax-ename->vla-object pline1) :vlax-true)
  (vla-put-Visible (vlax-ename->vla-object pline2) :vlax-true)
  (setq pl1 (append pl1 pl2))
  (command "trim" ssbj "" )
  (setq p1 (car pl1))
  (foreach a (cdr pl1)
    (command "f" p1 a "")
    (setq p1 a)
    )
  (command "")
  (mapcar '(lambda (x) (vla-put-Visible (vlax-ename->vla-object x) :vlax-true)) removesel)
  (entdel enpline)
  (setq ss (ssget "wp" pl))
  (if ss (command "erase" ss ""))
  (if (= "Yes" kd)
    (progn
      (entdel pline1)
      (entdel pline2)
      )
    )
  )
    )
(mapcar 'setvar (list 'osmode 'cmdecho) (list os cmd))
  (princ)
  )



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

最佳答案

查看完整内容

剛寫好,是不是這個效果 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=184626&pid=904152&page=1&extra=#pid904152
发表于 2021-6-1 17:38 | 显示全部楼层
本帖最后由 lee50310 于 2021-12-23 19:55 编辑


剛寫好,是不是這個效果

http://bbs.mjtd.com/forum.php?mo ... mp;extra=#pid904152
回复

使用道具 举报

发表于 2021-6-3 13:13 | 显示全部楼层
这个搞出来应该挺好玩的哈
回复

使用道具 举报

发表于 2021-6-3 13:17 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2021-6-3 14:32 | 显示全部楼层
kwok 发表于 2021-6-3 13:17
http://bbs.mjtd.com/forum.php?mo ... hlight=%CB%AB%CF%DF
搜一下...看6楼

谢谢大神,帮忙收到相关的贴子
回复

使用道具 举报

 楼主| 发表于 2021-12-7 10:37 | 显示全部楼层
再次路过,顶起来,看看大神有没有解决这个问题的插件
回复

使用道具 举报

发表于 2021-12-10 23:56 | 显示全部楼层
看看能否满足要求

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2021-12-11 09:27 | 显示全部楼层
hehoubin 发表于 2021-12-10 23:56
看看能否满足要求

大佬,看图片是满足需要呢
回复

使用道具 举报

 楼主| 发表于 2021-12-14 23:25 | 显示全部楼层
hehoubin 发表于 2021-12-10 23:56
看看能否满足要求

请问大师您是有这款插件吗
回复

使用道具 举报

发表于 2021-12-15 11:39 | 显示全部楼层
没得必要; 并集就可以了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 04:37 , Processed in 0.216572 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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