wayne_myles 发表于 2015-6-6 21:34:37

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

如何源码筛选垂直的直线(也就是快速选择 直线增量 x=0),目的配合快速标注进行坐标标注,成功的话效率会很大提升 ,好向(ssget (list ()))组码里面没有对应的!谢谢大家过来看!


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 wayne_myles的微博

wayne_myles 发表于 2015-6-6 21:36:21

顶一下 千万别沉了了!成功一定分享源码

434939575 发表于 2015-6-7 00:33:08

本帖最后由 434939575 于 2015-6-7 00:34 编辑

wayne_myles 发表于 2015-6-6 21:36 static/image/common/back.gif
顶一下 千万别沉了了!成功一定分享源码<div class="blockcode"><blockquote>(defun c:tt ()

(setq add(ssadd))
(setq ss (ssget'((0 . "LINE"))))
(setq ii 0)
(repeat (sslength ss)
    (setq name (ssname ss ii)
    ii   (1+ ii)
    )
    (setq pta (vlax-curve-getstartpoint name))
    (setq ptb (vlax-curve-getendpoint name))
(SETQ ang(angle pta ptb))
    (if (or(= ang(* 0.5 pi) )(= ang(* 1.5 pi) ))
      (setq add (ssaddname add))
add
)
)



)

wayne_myles 发表于 2015-6-7 07:18:56

本帖最后由 wayne_myles 于 2015-6-7 07:35 编辑

434939575 发表于 2015-6-7 00:33 static/image/common/back.gif

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

(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)用快速标注一次完成
下面是图片 有人需要屏幕录制动态图片工具吗!呵呵

llsheng_73 发表于 2015-6-7 09:20:01

(defun c:tt(/ i ss e en)
(if(setq i 0 ss(ssget'((0 . "line"))));;此处可根据需要加入图层、线型、颜色等限制
    (repeat(sslength ss)
      (setq e(ssname ss i)
          en(entget e))
      (if(/=(cadr(assoc 10 en))(cadr(assoc 11 en)))(setq ss(ssdel e ss))(setq i(1+ i)))))
(sssetfirst nil ss)
)
限于水平,直接过滤的高级方法不会写,只能选先出来再过滤了

wayne_myles 发表于 2015-6-7 15:17:28

llsheng_73 发表于 2015-6-7 09:20 static/image/common/back.gif
限于水平,直接过滤的高级方法不会写,只能选先出来再过滤了
谢谢了 太谦虚了您的水平已经让我等羡慕了问题基本解决了

wayne_myles 发表于 2015-6-7 15:37:13

谢谢llsheng_73 谢谢 434939575 两位高手了

edata 发表于 2015-6-8 10:55:52

我觉得应该是这样:
(defun c:tt(/ lst ss en sk_dxf)
(setq lst '())
(defun sk_dxf(en code)(cdr(assoc code(entget en))))
(if(setq ss(ssget "x" '((0 . "line"))));可以增加图层过滤提高效率
    (while(setq en (ssname ss 0))
      (if(= (car (sk_dxf en 10))(car (sk_dxf en 11)))
        (setq lst(cons (sk_dxf en 10) lst)))
      (setq ss(ssdel en ss))
      )
    )
(setq lst(reverse lst))
(setq ss2(ssget (append '((0 . "line")(-4 . "<or"))(mapcar '(lambda(x)(cons 10 x)) lst)'((-4 . "or>")))))
(sssetfirst nil ss2)
)

wayne_myles 发表于 2015-6-8 13:12:04

edata 发表于 2015-6-8 10:55 static/image/common/back.gif
我觉得应该是这样:

蛮好的 谢谢论坛高手真多啊

wayne_myles 发表于 2015-6-10 08:51:12

感谢诸位 发个小工具绿色
页: [1] 2
查看完整版本: 路过高手过来看下 ,如何源码筛选垂直的直线(也就是快速选择 直线 增量 x=0)