lixang 发表于 2007-10-12 15:06:00

求线段与垂直线的交点

<p>有一图层"凌乱的线段":</p><p>凌乱的线段布满一个大区域!他们都是线段!不存在任何曲线!</p><p>现在我画出n条垂直线!假如是50条</p><p>求出这些线段与我画出的50条垂直线的交点!</p><p></p><p>将交点坐标输出到txt中:</p><p>比如输出为:"交点.txt";则"交点.txt"内容如下</p><p>&nbsp;第1条&nbsp;竖直线</p><p>&nbsp;&nbsp;交点个数:100&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp; &nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;80&nbsp;&nbsp;&nbsp; -20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;&nbsp;&nbsp; ..........</p><p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-20&nbsp;&nbsp; 35&nbsp;&nbsp;&nbsp;&nbsp;</p><p>第2条&nbsp;竖直线&nbsp;</p><p>&nbsp;&nbsp;交点个数:60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;-30.02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;..........</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.2&nbsp;&nbsp;&nbsp;&nbsp; 15.5</p><p>。。。。。。。。。。。</p><p>。。。。。。。。。。。&nbsp;</p><p></p><p>第n条&nbsp;竖直线</p><p>&nbsp;交点个数:120&nbsp;&nbsp;&nbsp;</p><p>&nbsp; x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;y</p><p>101.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 103.58</p><p>..............................</p><p>................................</p><p>希望高手帮忙!</p><p></p>

水仙的错 发表于 2019-9-14 16:05:53

这个程序貌似没什么用

sailorcwx 发表于 2007-10-12 17:26:00

是否必须是垂点?是否必须为实交点?发个示意图看看

sailorcwx 发表于 2007-10-12 17:28:00

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

lixang 发表于 2007-10-12 18:24:00

为何没人理睬了!郁闷呀?!<br/>

lixang 发表于 2007-10-12 18:35:00

谢谢上面的朋友!<br/><br/>   不一定是垂点!实交点虚交点都可以!如果麻烦的话,就只要实交点就行!<br/><br/>线段指什么,单纯的line还是包含pline,对于后面的50条线你打算怎么选择,不会一个个选吧,建议归到一个独立的图层<br/> <br/>线段里面 有line也有pline!<br/><br/>谢谢建议:那么我将50条竖直线就放在"竖直线"层!<br/><br/>还希望大家再帮帮我!<br/><br/><br/><br/><br/><br/>

lixang 发表于 2007-10-13 19:51:00

再次再申请!<br/>

sailorcwx 发表于 2007-10-14 22:48:00

(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)
(vl-load-com)
(prompt "\n指定处理范围: ")
(setq YH_slt (ssget '((0 . "LINE,LWPOLYLINE"))))
(if YH_slt
    (progn
      (setq YH_objs1 '()
   YH_objs2 '()
   YH_index 0
   )
      (repeat (sslength YH_slt)
(setq YH_obj (vlax-ename->vla-object (ssname YH_slt YH_index)))
(if (= (vla-get-layer YH_obj) "竖直线")(setq YH_objs1 (append YH_objs1 (list YH_obj)))(setq YH_objs2 (append YH_objs2 (list YH_obj))))
(setq YH_index (1+ YH_index))
)
      (if (and YH_objs1 YH_objs2)
(progn
   (setq YH_index 0
YH_file (open "C:\\交点.txt" "W")
YH_ttcount (length YH_objs1)
)
   (write-line (strcat "一共处理了" (itoa YH_ttcount) "条竖直线") YH_file)
   (write-line "" YH_file)
   (repeat YH_ttcount
   (setq YH_obj1 (nth YH_index YH_objs1)
    YH_pts0 '()
    )
   (write-line (strcat "第" (itoa (+ YH_index 1)) "条竖直线") YH_file)
   (mapcar '(lambda(YH_obj2 / YH_pts)
         (setq YH_pts (vlax-variant-value (vla-intersectwith YH_obj1 YH_obj2 acExtendBoth)))
         (if (> (vlax-safearray-get-u-bound YH_pts 1) 0)(setq YH_pts0 (append YH_pts0 (vlax-safearray->list YH_pts))))
         )
      YH_objs2
      )
   (setq YH_ptcount (/ (length YH_pts0) 3))
   (write-line (strcat "交点个数:" (itoa YH_ptcount)) YH_file)
   (if (> YH_ptcount 0) (write-line "X Y" YH_file))
   (setq YH_index1 0)
   (repeat YH_ptcount
       (write-line (strcat (rtos (nth YH_index1 YH_pts0) 2 2) " " (rtos (nth (+ YH_index1 1) YH_pts0) 2 2)) YH_file)
       (setq YH_index1 (+ YH_index1 3))
       )
   (write-line "" YH_file)   
   (setq YH_index (1+ YH_index))
   )
   (close YH_file)
   (startapp "notepad" "C:\\交点.txt")
   )
)
      )
    )
(princ)
)
      

lixang 发表于 2007-10-15 14:18:00

谢谢!<br/> 你的帮助!我现在如何在Cad才能中使用你的代码呢?<br/>

lixang 发表于 2007-10-15 21:45:00

<p>个位朋友:</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 帮忙在CAD中如何使用这个程序;我根本不懂得CAD的程序!</p>

sailorcwx 发表于 2007-10-15 22:07:00

<p>加载<br/>把上面的代码复制到记事本中,然后保存成lsp文件,在CAD中运行appload,找到刚才的文件,然后加载就可以了。</p><p>运行<br/>在CAD命令行中输入cs,然后框选一个范围就有结果了</p><p>Goodluck!<br/></p>
页: [1] 2
查看完整版本: 求线段与垂直线的交点