明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1711|回复: 6

[已解答] 再次请教关于选择处理的问题

  [复制链接]
发表于 2014-7-17 16:46:58 | 显示全部楼层 |阅读模式
请教各位朋友们。我的目的要把右边的图元建立一个包容盒子。但我这样处理,有部分漏了。望各位赐教。谢谢。
  1. (defun c:tt ()
  2.   (setq ss (ssget '((0 . "LWPOLYLINE"))))
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;*****************************      
  4.   (setq i 0)
  5.   (repeat (sslength ss)
  6.     (setq ss0 (ssname ss i)
  7.     i   (1+ i)
  8.     )
  9.     (setq ss0-en (entget ss0))  
  10.     (setq ss0-62 (cdr (assoc 62 ss0-en)))
  11.        (setq pt1(cdr (nth 15 ss0-en)))  ;调取pline第1点坐标。
  12.     (setq pt2 (cdr (nth 19 ss0-en)))  ;调取pline第2点坐标。
  13.    
  14.      ;(setq  fw (getreal "范围< 300 >"))
  15.    ; (if (= fw  nil )
  16.       (setq fw  600);"范围
  17.      ; );if
  18.         (setq ang (angle pt1 pt2))
  19.     (setq ang-- (angle pt2 pt1))
  20.     (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
  21.     (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
  22.       (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi))fw))
  23.     (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi))fw))
  24. (setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
  25.     (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
  26.    (setq  lst (  list pt1>100-fw pt1>100-fw--  pt2<100-fw--  pt2<100fw))
  27.    (setq  ss-2(ssget "cP" lst ))
  28.        (command  "._pline"   pt1>100-fw pt1>100-fw--  pt2<100-fw--  pt2<100fw    "c" "" "")
  29.      (command "select" ss "r" ss-2 "")
  30. (setq   xx (ssget "p" ) )
  31.     (setq  ss  xx)
  32.       )    ;repeat
  33.   
  34. )  ;end

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-7-17 19:35:46 | 显示全部楼层
帮顶一下                          

点评

谢谢你顶我!  发表于 2014-7-17 19:43
发表于 2014-7-17 20:08:54 | 显示全部楼层


本帖子中包含更多资源

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

x

点评

感谢院长大驾光临。!  发表于 2014-7-17 20:13
 楼主| 发表于 2014-7-17 20:12:12 | 显示全部楼层
感谢院长大驾光临。!
 楼主| 发表于 2014-7-17 20:27:50 | 显示全部楼层
本帖最后由 434939575 于 2014-10-17 20:54 编辑

后来自己整了下凑合着用
  1. <div class="blockcode"><blockquote>(defun c:ty ()
  2.   
  3.   (setq ss (ssget '((0 . "LINE"))))
  4.   (setq i 0)
  5.   (while      (   /=(sslength ss) 0)
  6.     (setq ss0 (ssname ss i)
  7.          
  8.     )
  9.     (setq ss0-en (entget ss0))        
  10.     ;(setq ss0-62 (cdr (assoc 62 ss0-en)))
  11.     (setq pt1(cdr (nth 10 ss0-en)))        ;调取pline第1点坐标。
  12.     (setq pt2 (cdr (nth 11 ss0-en)))        ;调取pline第2点坐标。
  13.     ;(setq ss0-62 (cdr (assoc 62 ss0-en)))
  14.    
  15.         (setq fw  300);"范围
  16.     (setq ang (angle pt1 pt2))
  17.     (setq ang-- (angle pt2 pt1))
  18.     (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
  19.     (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
  20.       (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi))fw))
  21.     (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi))fw))
  22. (setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
  23.     (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
  24.    (setq  lst (  list pt1>100-fw pt1>100-fw--  pt2<100-fw--  pt2<100fw))
  25.    (setq  ss-2(ssget "cP" lst ))
  26.        (command  "._pline"   pt1>100-fw pt1>100-fw--  pt2<100-fw--  pt2<100fw    "c" "" "")
  27.      (command "select" ss "r" ss-2 "")
  28. (setq   xx (ssget "p" ) )
  29.    (setq  ss  xx)
  30.       )        ;repeat
  31.   );end
发表于 2014-7-17 20:36:12 | 显示全部楼层
  1. (defun c:tt ()
  2. (command "_.UNDO" "BE")
  3.   (setq ss (ssget '((0 . "LWPOLYLINE"))))
  4. ;;;;;;;;;;;;;;;;;;;;;;;;;;;*****************************      
  5.   (while (> (sslength ss) 0)
  6.     (setq ss0-en (entget (ssname ss 0)))
  7.     (setq pt1 (cdr(nth 15 ss0-en)))  ;调取pline第1点坐标。
  8.     (setq pt2 (cdr(nth 19 ss0-en)))  ;调取pline第2点坐标。
  9.     (setq fw 600);"范围
  10.     (setq ang (angle pt1 pt2))
  11.     (setq ang-- (angle pt2 pt1))
  12.     (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
  13.     (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
  14.     (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi)) fw))
  15.     (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi)) fw))
  16.     (setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
  17.     (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
  18.     (setq lst (list pt1>100-fw pt1>100-fw-- pt2<100-fw-- pt2<100fw pt1>100-fw))
  19.     (command "_.RECTANG" pt1>100-fw pt2<100-fw--)
  20.     (setq ss-2 (ssget "cP" lst))
  21.     (if (> (sslength ss) (sslength ss-2)) (progn
  22.      (command "select" ss "r" ss-2 "")
  23.      (setq ss (ssget "p"))
  24.     )
  25.      (setq ss (ssadd))
  26.     )
  27.   ) ;while
  28.   (command "_.UNDO" "E")
  29.   (princ)
  30. ) ;end
 楼主| 发表于 2014-7-17 20:40:02 | 显示全部楼层
ZZXXQQ 发表于 2014-7-17 20:36

感谢版主出手相助,受教了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 09:34 , Processed in 0.182530 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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