明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4940|回复: 16

求线段与垂直线的交点

  [复制链接]
发表于 2007-10-12 15:06 | 显示全部楼层 |阅读模式

有一图层"凌乱的线段":

凌乱的线段布满一个大区域!他们都是线段!不存在任何曲线!

现在我画出n条垂直线!假如是50条

求出这些线段与我画出的50条垂直线的交点!

将交点坐标输出到txt中:

比如输出为:"交点.txt";则"交点.txt"内容如下

 第1条 竖直线

  交点个数:100   

       x       y

      10     20         

      30     50          

      60     70         

      80    -20         

    ..........

      -20   35    

第2条 竖直线 

  交点个数:60     

       x            y

      100       -30.02           

 ..........

       20.2     15.5

。。。。。。。。。。。

。。。。。。。。。。。 

第n条 竖直线

 交点个数:120   

  x             y

101.2       103.58

..............................

................................

希望高手帮忙!

发表于 2019-9-14 16:05 | 显示全部楼层
这个程序貌似没什么用
发表于 2007-10-12 17:26 | 显示全部楼层
是否必须是垂点?是否必须为实交点?发个示意图看看
发表于 2007-10-12 17:28 | 显示全部楼层
线段指什么,单纯的line还是包含pline,对于后面的50条线你打算怎么选择,不会一个个选吧,建议归到一个独立的图层
 楼主| 发表于 2007-10-12 18:24 | 显示全部楼层
为何没人理睬了!郁闷呀?!
 楼主| 发表于 2007-10-12 18:35 | 显示全部楼层
谢谢上面的朋友!

   不一定是垂点!实交点虚交点都可以!如果麻烦的话,就只要实交点就行!

线段指什么,单纯的line还是包含pline,对于后面的50条线你打算怎么选择,不会一个个选吧,建议归到一个独立的图层
 
线段里面 有line也有pline!

谢谢建议:那么我将50条竖直线就放在"竖直线"层!

还希望大家再帮帮我!





 楼主| 发表于 2007-10-13 19:51 | 显示全部楼层
再次再申请!
发表于 2007-10-14 22:48 | 显示全部楼层
  1. (defun c:cs(/ YH_FILE YH_INDEX YH_INDEX1 YH_OBJ YH_OBJ1 YH_OBJ2 YH_OBJS1 YH_OBJS2 YH_PTCOUNT YH_PTS YH_PTS0 YH_SLT YH_TTCOUNT)
  2.   (vl-load-com)
  3.   (prompt "\n指定处理范围: ")
  4.   (setq YH_slt (ssget '((0 . "LINE,LWPOLYLINE"))))
  5.   (if YH_slt
  6.     (progn
  7.       (setq YH_objs1 '()
  8.      YH_objs2 '()
  9.      YH_index 0
  10.      )
  11.       (repeat (sslength YH_slt)
  12. (setq YH_obj (vlax-ename->vla-object (ssname YH_slt YH_index)))
  13. (if (= (vla-get-layer YH_obj) "竖直线")(setq YH_objs1 (append YH_objs1 (list YH_obj)))(setq YH_objs2 (append YH_objs2 (list YH_obj))))
  14. (setq YH_index (1+ YH_index))
  15. )
  16.       (if (and YH_objs1 YH_objs2)
  17. (progn
  18.    (setq YH_index 0
  19.   YH_file (open "C:\\交点.txt" "W")
  20.   YH_ttcount (length YH_objs1)
  21.   )
  22.    (write-line (strcat "一共处理了" (itoa YH_ttcount) "条竖直线") YH_file)
  23.    (write-line "" YH_file)
  24.    (repeat YH_ttcount
  25.      (setq YH_obj1 (nth YH_index YH_objs1)
  26.     YH_pts0 '()
  27.     )
  28.      (write-line (strcat "第" (itoa (+ YH_index 1)) "条竖直线") YH_file)
  29.      (mapcar '(lambda(YH_obj2 / YH_pts)
  30.          (setq YH_pts (vlax-variant-value (vla-intersectwith YH_obj1 YH_obj2 acExtendBoth)))
  31.          (if (> (vlax-safearray-get-u-bound YH_pts 1) 0)(setq YH_pts0 (append YH_pts0 (vlax-safearray->list YH_pts))))
  32.          )
  33.       YH_objs2
  34.       )
  35.      (setq YH_ptcount (/ (length YH_pts0) 3))
  36.      (write-line (strcat "交点个数:" (itoa YH_ptcount)) YH_file)
  37.      (if (> YH_ptcount 0) (write-line "X Y" YH_file))
  38.      (setq YH_index1 0)
  39.      (repeat YH_ptcount
  40.        (write-line (strcat (rtos (nth YH_index1 YH_pts0) 2 2) " " (rtos (nth (+ YH_index1 1) YH_pts0) 2 2)) YH_file)
  41.        (setq YH_index1 (+ YH_index1 3))
  42.        )
  43.      (write-line "" YH_file)     
  44.      (setq YH_index (1+ YH_index))
  45.      )
  46.    (close YH_file)
  47.    (startapp "notepad" "C:\\交点.txt")
  48.    )
  49. )
  50.       )
  51.     )
  52.   (princ)
  53.   )
  54.       
 楼主| 发表于 2007-10-15 14:18 | 显示全部楼层
谢谢!
 你的帮助!我现在如何在Cad才能中使用你的代码呢?
 楼主| 发表于 2007-10-15 21:45 | 显示全部楼层

个位朋友:

     帮忙在CAD中如何使用这个程序;我根本不懂得CAD的程序!

发表于 2007-10-15 22:07 | 显示全部楼层

加载
把上面的代码复制到记事本中,然后保存成lsp文件,在CAD中运行appload,找到刚才的文件,然后加载就可以了。

运行
在CAD命令行中输入cs,然后框选一个范围就有结果了

Goodluck!

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

本版积分规则

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

GMT+8, 2024-4-20 20:23 , Processed in 0.504793 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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