明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 731|回复: 4

[提问] 求救:计算n条线段的交点

  [复制链接]
发表于 2022-5-15 21:09 | 显示全部楼层 |阅读模式
(vl-load-com)

;(setq ss (ssget "x" '(0 . "line")))
        
(defun c:tet()
  (setq segments (ssget "x" ))
  (setq i 0 n (sslength segments))

  (setq n (1- n))
   (while (< i n)
        (setq seg1 (ssname segments i))
        (setq seg11 (vlax-ename->vla-object seg1))
        (setq j (1+ i))
        (setq jj (1+ i))
        (setq k (- n j))
     (repeat k
       (setq seg2 (ssname segments jj))
       (setq seg22 (vlax-ename->vla-object seg2))
       (setq intpoints (vla-intersectwith seg11 seg22 acextendnone))
       (setq intpoints (vlax-variant-value intpoints))
       (vlax-safearray->list intpoints)
       ;(command "point" intpoints)
       ;(setq pts (cons intpoints pts))
;;;       (setq points (append points (list (list
;;;       (vlax-safearray-get-element intpoints 0)
;;;       (vlax-safearray-get-element intpoints 1)
;;;       (vlax-safearray-get-element intpoints 2)
;;;       ))))
       (setq jj (1+ jj))
     )
   
    (setq i (1+ i))
   )
)
  上面的代码想计算n条线段的交点的,但是没得到想要的结果,是怎么回事?谢谢!
发表于 2022-5-15 23:24 | 显示全部楼层
  1. (defun c:tt ()
  2.   (if (setq ss (ssget '((0 . "line"))))
  3.     (progn
  4.       (setq i        -1
  5.             tmp        '()
  6.       )
  7.       (while (setq s1 (ssname ss (setq i (1+ i))))
  8.         (setq o1 (vlax-ename->vla-object s1))
  9.         (setq j i)
  10.         (while (setq s2 (ssname ss (setq j (1+ j))))
  11.           (setq o2 (vlax-ename->vla-object s2))
  12.           (if (setq pt (vlax-invoke o1 'intersectwith o2 0))
  13.             (setq tmp (cons pt tmp))
  14.           )
  15.         )
  16.       )
  17.       (princ tmp)
  18.     )
  19.   )
  20.   (princ)
  21. )

评分

参与人数 1明经币 +1 收起 理由
lee50310 + 1 赞一个!

查看全部评分

 楼主| 发表于 2022-5-16 10:24 | 显示全部楼层

昨晚调试一下也成功了,你的代码更简洁,优美!
发表于 2022-7-12 12:20 | 显示全部楼层
围观 一脸懵逼!!!!!!
发表于 2022-7-12 16:28 | 显示全部楼层

记得加一行:(vl-load-com)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 00:38 , Processed in 0.537840 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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