明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2471|回复: 16

[已解答] 路过高手过来看下 ,如何源码筛选垂直的直线(也就是快速选择 直线 增量 x=0)

[复制链接]
发表于 2015-6-6 21:34 | 显示全部楼层 |阅读模式
如何源码筛选垂直的直线(也就是快速选择 直线  增量 x=0),目的配合快速标注进行坐标标注,成功的话效率会很大提升 ,好向(ssget (list (  )))组码里面没有对应的!谢谢大家过来看!


该贴已经同步到 wayne_myles的微博
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-6-6 21:36 | 显示全部楼层
顶一下 千万别沉了了!成功一定分享源码
发表于 2015-6-7 00:33 | 显示全部楼层
本帖最后由 434939575 于 2015-6-7 00:34 编辑
wayne_myles 发表于 2015-6-6 21:36
顶一下 千万别沉了了!成功一定分享源码
  1. <div class="blockcode"><blockquote>(defun c:tt ()

  2. (setq add(ssadd))
  3.   (setq ss (ssget'((0 . "LINE"))))
  4.   (setq ii 0)
  5.   (repeat (sslength ss)
  6.     (setq name (ssname ss ii)
  7.     ii   (1+ ii)
  8.     )
  9.     (setq pta (vlax-curve-getstartpoint name))
  10.     (setq ptb (vlax-curve-getendpoint name))
  11. (SETQ ang(angle pta ptb))
  12.     (if (or(= ang  (* 0.5 pi) )(= ang  (* 1.5 pi) ))
  13.       (setq add (ssadd  name add))
  14. add
  15.   )
  16. )


  17.   
  18.   )

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1

查看全部评分

 楼主| 发表于 2015-6-7 07:18 | 显示全部楼层
本帖最后由 wayne_myles 于 2015-6-7 07:35 编辑
434939575 发表于 2015-6-7 00:33

真是热心人啊!十分感谢啊代码蛮好的  呵呵 就是我意思表达不准是竖直的直线不是垂直的直线

(defun c:mmm( / ss)
(setvar "cmdecho" 0)
(setq ss (ssget (list (cons 6 "CENTER"))))
(sssetfirst nil ss)
(princ)
(command "_QSELECT")
(command "_qdim" )
(princ)
)
我想在上面代码加入自动筛选竖直中心线(也就是快速选择 直线 增量 x=0)用快速标注一次完成
下面是图片 有人需要屏幕录制动态图片工具吗!呵呵

本帖子中包含更多资源

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

x
发表于 2015-6-7 09:20 | 显示全部楼层
  1. (defun c:tt(/ i ss e en)
  2.   (if(setq i 0 ss(ssget'((0 . "line"))));;此处可根据需要加入图层、线型、颜色等限制
  3.     (repeat(sslength ss)
  4.       (setq e(ssname ss i)
  5.             en(entget e))
  6.       (if(/=(cadr(assoc 10 en))(cadr(assoc 11 en)))(setq ss(ssdel e ss))(setq i(1+ i)))))
  7.   (sssetfirst nil ss)
  8.   )

限于水平,直接过滤的高级方法不会写,只能选先出来再过滤了
 楼主| 发表于 2015-6-7 15:17 | 显示全部楼层
llsheng_73 发表于 2015-6-7 09:20
限于水平,直接过滤的高级方法不会写,只能选先出来再过滤了

谢谢了 太谦虚了您的水平已经让我等羡慕了  问题基本解决了  
 楼主| 发表于 2015-6-7 15:37 | 显示全部楼层
谢谢  llsheng_73 谢谢 434939575 两位高手了
发表于 2015-6-8 10:55 | 显示全部楼层
我觉得应该是这样:
  1. (defun c:tt(/ lst ss en sk_dxf)
  2.   (setq lst '())
  3.   (defun sk_dxf(en code)(cdr(assoc code(entget en))))
  4.   (if  (setq ss(ssget "x" '((0 . "line"))));可以增加图层过滤提高效率
  5.     (while(setq en (ssname ss 0))
  6.       (if(= (car (sk_dxf en 10))(car (sk_dxf en 11)))
  7.         (setq lst(cons (sk_dxf en 10) lst)))
  8.       (setq ss(ssdel en ss))
  9.       )
  10.     )
  11.   (setq lst(reverse lst))  
  12.   (setq ss2(ssget (append '((0 . "line")(-4 . "<or"))(mapcar '(lambda(x)(cons 10 x)) lst)'((-4 . "or>")))))
  13.   (sssetfirst nil ss2)
  14.   )

评分

参与人数 1明经币 +1 收起 理由
lucas_3333 + 1 赞一个! E大,好久不见!

查看全部评分

 楼主| 发表于 2015-6-8 13:12 | 显示全部楼层
edata 发表于 2015-6-8 10:55
我觉得应该是这样:

蛮好的 谢谢  论坛高手真多啊
 楼主| 发表于 2015-6-10 08:51 | 显示全部楼层
感谢诸位 发个小工具绿色

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-3-28 16:40 , Processed in 0.205268 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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