明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4024|回复: 14

交点排序准确标注

  [复制链接]
发表于 2011-9-1 21:52:47 | 显示全部楼层 |阅读模式
vl-load-com)
(princ "选择辅助线\n")
(setq m_ent1 (car(entsel)))
  (setq ent1_s(vlax-curve-getStartPoint p1))
(print "请选择需要扫描的区域:")
(setq ss  (ssget))
(setq lengss (sslength ss))
(setq bb 0)
(while (< bb lengss)
(setq p1 (ssname ss bb))
(setq ed (entget p1))
下面不知道该如何写了
即把ss选择集的每条曲线按照到某点(该点不在ss内的任何一条曲线上)的距离有小到大重新排序,为了实现交点的顺序排列,以便进行准确标注,见附图



望各位高手指教,谢谢

本帖子中包含更多资源

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

x
发表于 2011-9-2 08:48:50 | 显示全部楼层
顶下,期待中
发表于 2011-9-2 12:53:37 | 显示全部楼层

  1. ;; 交点排序标注
  2. ;; 需要e派工具箱(XCAD)的支持:[url=http://xyp1964.ys168.com]http://xyp1964.ys168.com[/url]
  3. (defun c:tt ()
  4.   (CMDLA0)
  5.   (if (and (setq s1 (car (entsel "\n选择: ")))
  6.     (xyp-curve-check s1)
  7.     (setq ptn (xyp-Get-CurveIntersLeng s1 3))
  8.       )
  9.     (progn
  10.       (setq ptn (xyp-Curve-PtsLengSort s1 ptn nil)
  11.      i 1
  12.       )
  13.       (foreach pt ptn
  14. (xyp-Cross pt 100 0)
  15. (xyp-Text 5 pt (itoa i))
  16. (setq i (1+ i))
  17.       )
  18.     )
  19.   )
  20.   (CMDLA1)
  21. )

本帖子中包含更多资源

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

x
发表于 2011-9-2 20:24:09 | 显示全部楼层
呵呵
院长炫的
什么问题也不解决
发表于 2011-9-3 00:45:27 | 显示全部楼层
gbhsu 发表于 2011-9-2 20:24
呵呵
院长炫的
什么问题也不解决

有演示、有代码,还要啥?
发表于 2011-9-3 07:12:09 | 显示全部楼层
呵呵
大家去下载ei派工具箱呀
里面有非常多的东东哦
免费的呀
发表于 2011-9-3 11:56:50 | 显示全部楼层
(setq pts (vl-sort pts '(lambda (s1 s2) (< (vlax-curve-getDistAtPoint (vlax-ename->vla-object m_ent1) s1)
                  (vlax-curve-getDistAtPoint (vlax-ename->vla-object m_ent1) s2)))
                  ))
发表于 2011-9-3 11:57:30 | 显示全部楼层
(defun tt ()
  (vl-load-com)
  (defun GETINTERS
         (FSTENT NXTENT XMODE / INTPNT PNTLST TMPLST TMPPNT)
    (cond
      ((and FSTENT NXTENT)
       (setq INTPNT (vla-intersectwith
                      (vlax-ename->vla-object FSTENT)
                      (vlax-ename->vla-object NXTENT)
                      XMODE
                      )
             TMPPNT (vlax-variant-value INTPNT)
             )
       (cond
         ((safearray-value TMPPNT)
          (setq TMPLST (vlax-safearray->list TMPPNT))
          (repeat (/ (length TMPLST) 3)
            (setq PNTLST
                         (cons
                           (list
                             (car TMPLST)
                             (cadr TMPLST)
                             (caddr TMPLST)
                             )
                           PNTLST
                           )
                  TMPLST (cdddr TMPLST)
                  )
            )
          (reverse PNTLST)
          )
         (t NIL)
         )
       )
      (t NIL)
      )
    )
  (princ "选择辅助线\n")
  (setq m_ent1 (car (entsel)))
  (print "请选择需要扫描的区域:")
  (setq ss (ssget) ss1 (ssadd))
  (setq lengss (sslength ss))
  (setq bb 0)
  (while (< bb lengss)
    (setq p1 (ssname ss bb))
    (setq ed (entget p1))
    (setq m_jdtab14 (vla-intersectwith
                      (vlax-ename->vla-object p1)
                      (vlax-ename->vla-object m_ent1)
                      0
                    )
    )
    (setq pts1 (vlax-variant-value m_jdtab14))
    (if        (> (vlax-safearray-get-u-bound pts1 1) 0)
      (ssadd p1 ss1)
    )
    (setq bb (+ bb 1))
  )
  (setq lengss (sslength ss1))
  (setq bb 0 pts '())
  (while (< bb lengss)
    (setq p11 (ssname ss1 bb))
    (setq p14 (getinters m_ent1  p11 0))
    ;(setq p14 (vlax-safearray->list (vlax-variant-value m_jdtab14)))
    (setq pts (append p14 pts))
    (command "circle" p14 50 )
    (setq bb (+ bb 1))
  )
  ;(setq pt0 (vlax-curve-getStartPoint (vlax-ename->vla-object m_ent1)))
  (setq pts (vl-sort pts '(lambda (s1 s2) (< (vlax-curve-getDistAtPoint (vlax-ename->vla-object m_ent1) s1)
                  (vlax-curve-getDistAtPoint (vlax-ename->vla-object m_ent1) s2)))
                  ))
  (setq bb 0)
  (repeat (1- (length pts)) (command "_dimaligned" (nth bb pts) (nth (1+ bb) pts) (nth (1+ bb) pts))
    (setq bb (+ bb 1))
    )
)
 楼主| 发表于 2011-9-3 12:54:18 | 显示全部楼层
谢谢高手们
发表于 2011-9-3 15:16:46 来自手机 | 显示全部楼层
程序不错!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-24 09:09 , Processed in 0.203736 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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