明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: pfrynwgkq

如何将设定的层与层之间自动打断

  [复制链接]
发表于 2004-12-22 23:03:00 | 显示全部楼层
本帖最后由 作者 于 2004-12-25 19:35:46 编辑
  1. ;;;考虑不全,应付楼主图示应该没问题。(defun c:test023 (/ p1 p2 p3 p4 dst ang p1a p2a p3a p4a lst)
  2.    (cmdla0)
  3.    (setq no1 (ureal 1 "" "打断距离" no1))
  4.    (while (setq e (car (entsel "\n选择A层线<退出> : ")))
  5.        (setq pt1 (vlax-curve-getstartPoint e)
  6.      pt2 (vlax-curve-getEndPoint e)
  7.      p1   (polar pt1 (* pi 1.5) (/ no1 2))
  8.      p2   (polar pt2 (* pi 0.5) (/ no1 2))
  9.      p3   (list (car p2) (cadr p1))
  10.      p4   (list (car p1) (cadr p2))
  11.      dst (/ (distance p1 p2) 100.0)
  12.      ang (angle p1 p2)
  13.      p1a (polar p1 ang dst)
  14.      p2a (polar p2 ang (- 0 dst))
  15.      p3a (list (car p2a) (cadr p1a))
  16.      p4a (list (car p1a) (cadr p2a))
  17.        )
  18.        (setvar "osmode" 0)
  19.        (command "undo" "be")
  20.        (command "rectang" p1 p2)
  21.        (setq lst (entlast))
  22.        (command "_.trim" lst "" "f" p1a p3a p2a p4a p1a "" "")
  23.        (entdel lst)
  24.        (command "undo" "e")
  25.    )
  26.    (cmdla1)
  27. )
  28. (defun CMDLA0 ()
  29.    (setq cmd (getvar "CMDECHO"))
  30.    (setq oom (getvar "orthomode"))
  31.    (setq osm (getvar "osmode"))
  32.    (setq hlt (getvar "highlight"))
  33.    (setq rmode (getvar "regenmode"))
  34.    (setvar "regenmode" 0)
  35.    (setvar "CMDECHO" 0)
  36.    (princ)
  37. )
  38. (defun CMDLA1 ()
  39.    (setvar "CMDECHO" cmd)
  40.    (setvar "orthomode" oom)
  41.    (setvar "osmode" osm)
  42.    (setvar "highlight" hlt)
  43.    (setvar "regenmode" rmode)
  44.    (princ)
  45. )
  46. (defun ureal (bit kwd msg def / inp)
  47.    (if def
  48.        (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
  49.      bit (* 2 (fix (/ bit 2)))
  50.        )
  51.        (setq msg (strcat "\n" msg ": "))
  52.    )
  53.    (initget bit kwd)
  54.    (setq inp (getreal msg))
  55.    (if inp
  56.        inp
  57.        def
  58.    )
  59. )
  60. ;;;END
 楼主| 发表于 2004-12-22 23:50:00 | 显示全部楼层
先谢谢版主了!


但A层的线,自动把B层的线在A层的一个范围A值内打断还是不很啊,只可以垂直线自动打断!


还有如果可以加上在图中点取距离就更好了:)
 楼主| 发表于 2004-12-23 19:42:00 | 显示全部楼层
xyp1964 今测试了一下.发现了一个问题.. 在选择A层线后,,它把全部与它相交的东西都打断了, 我只是想它自动打断line..
发表于 2004-12-24 22:55:00 | 显示全部楼层
1.批量处理,基本上满足需求 2..有bug,有时无法一次处理乾净,请有心人再完善
  1. (defun c:bkab()
  2.        (setvar "blipmode" 0)
  3.        (setvar "cmdecho" 0)
  4.        (setq selnum (getvar "osmode"))
  5.        (setvar "osmode" 0)
  6.        (setq width (getreal "\n打断距离 < 80 > :"))
  7.        (if (= width nil)(setq width 80))
  8.        (setq width (/ width 2.0))       (setq ss (ssget))
  9.        (setq ss (ssget "p" '((0 . "LINE"))))
  10.          
  11.        (setq kk 0)
  12.        (setq j 0)
  13.        (repeat (- (sslength ss) 1)
  14.              (setq sname1 (ssname ss j))
  15.              (setq endata1 (entget sname1))
  16.              (setq p1s (cdr (assoc 10 endata1)))
  17.              (setq p1e (cdr (assoc 11 endata1)))
  18.              (setq p1lay (cdr (assoc 8 endata1)))
  19.              (setq ang11 (angle p1s p1e))
  20.              (setq ang12 (angle p1e p1s))
  21.              (setq i (- (sslength ss) j 1))
  22.              (setq jj (+ j 1))
  23.              (repeat i
  24.                    (setq sname2 (ssname ss jj))
  25.                    (setq endata2 (entget sname2))
  26.                    (setq p2s (cdr (assoc 10 endata2)))
  27.                    (setq p2e (cdr (assoc 11 endata2)))
  28.                    (setq p2lay (cdr (assoc 8 endata2)))
  29.                    (setq ang21 (angle p2s p2e))
  30.                    (setq ang22 (angle p2e p2s))
  31.                               
  32.                    (setq jj (+ jj 1))
  33.                    (setq pk (inters p1s p1e p2s p2e))
  34.                    (if (/= pk nil)
  35.                            (progn
  36.                                  (if (and (= p1lay "A")(= p2lay "B"))
  37.                                          (progn
  38.                                                (setq pp1 (polar pk ang22 width))
  39.                                                (setq pp2 (polar pk (- ang22 pi) width))         
  40.                                                (command "break" sname2 pp1 pp2)
  41.                                          )
  42.                                          (progn
  43.                                              (if (and (= p1lay "B")(= p2lay "A"))
  44.                                                  (progn
  45.                                                        (setq pp1 (polar pk ang12 width))
  46.                                                        (setq pp2 (polar pk (- ang12 pi) width))         
  47.                                                        (command "break" sname1 pp1 pp2)
  48.                                                  )
  49.                                              )
  50.                                          )   
  51.                                  )   
  52.                                  (setq kk (+ kk 1))
  53.                            )
  54.                      )
  55.              )             (setq j (+ j 1))
  56.        )         
  57.        (setvar "osmode" selnum)(prin1)
  58. )
 楼主| 发表于 2004-12-25 00:31:00 | 显示全部楼层
很感谢f5612140的帮忙。。 不过我试了。一点反应都没有的?到底是什么一会事吗? 我用的是2002。
 楼主| 发表于 2004-12-25 00:53:00 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2004-12-25 01:00:00 | 显示全部楼层
请上传图档看看


是否是"line"及A,B图层
发表于 2004-12-25 19:31:00 | 显示全部楼层
pfrynwgkq发表于2004-12-23 19:42:00xyp1964 今测试了一下.发现了一个问题.. 在选择A层线后,,它把全部与它相交的东西都打断了, ...
打断得“太很了”! 不知要打断的是哪层线?
 楼主| 发表于 2004-12-25 20:37:00 | 显示全部楼层
f5612140发表于2004-12-25 1:00:00请上传图档看看 是否是\"line\"及A,B图层
哦。。
原来我没有留意到。不过有个BUG,一定要打图层名改成A,B才很,用起来有点烦锁,可以在图中选采吗?
 楼主| 发表于 2004-12-25 20:52:00 | 显示全部楼层
xyp1964 :打断得“太很了”! 不知要打断的是哪层线?

是打断所有的垂直LINE,注意一定在垂直的。。 f5612140:已解决了层与层之间的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 07:25 , Processed in 0.162786 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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