找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1758|回复: 3

[求助] [求助]:如何求直线与pline(封闭方形)的交点?

[复制链接]
发表于 2002-7-30 22:02:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
如何求直线与pline(封闭方形)的交点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-7-31 00:31:51 | 显示全部楼层
用LINE分别求PLINE的四边不就行了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-7-31 00:49:20 | 显示全部楼层

Re: [求助]:如何求直线与pline(封闭方形)的交点?

最初由 JQKA 发布
[B]如何求直线与pline(封闭方形)的交点? [/B]


VLISP里面有求任意实体交点的interSectWith方法,去看看VLISP手册。

XDRX_API里面也提供了求任意实体交点的函数:


  1. [FONT=courier new]
  2. 347. xdrx_entity_intersect

  3. 功能:求两个实体的交点

  4. 调用格式:(xdrx_entity_intersect <实体1> <实体2> [实体延伸标记])

  5. 返回值:交点 OR NIL

  6. 说明:[实体延伸标记]:可选项,默认0
  7.      0:不延伸两实体
  8.      1:延伸第一个实体
  9.      2:延伸第二个实体
  10.      3:都延伸
  11.      
  12. 348. xdrx_entity_boundingBoxIntersect

  13. 功能:求两实体包围盒的交点

  14. 调用格式:(xdrx_entity_boundingBoxIntersect <实体1> <实体2> [实体延伸标记])

  15. 返回值:交点或者nil

  16. 说明:见上函数。
  17. [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-7-31 07:56:12 | 显示全部楼层

  1. ;;-----------------------------------------------
  2. ;; CDNC5-02.LSP
  3. ;; Bill Kramer
  4. ;; Find all intersections between objects in
  5. ;; the selection set SS.
  6. ;; Process - Create drawing with intersecting lines and lwpolylines.
  7. ;;           Load function set
  8. ;;           Run command function INTLINES
  9. ;;           Intersections are marked with POINT objects on current layer
  10. (defun C:INTLINES (/ SSL                ;length of SS
  11.                    PTS                        ;returning list
  12.                    AOBJ1                ;Object 1
  13.                    AOBJ2                ;Object 2
  14.                    N1                        ;Loop counter
  15.                    N2                        ;Loop counter
  16.                    IPTS                        ;intersects
  17.                    A N NN HOLDOSMODE)
  18.   (vl-load-com)
  19.   (COMMAND "_.UNDO" "_GROUP")
  20.   (SETQ HOLDOSMODE (GETVAR "OSMODE"))
  21.   (SETVAR "OSMODE" 0)
  22.   (setq SS (ssget '((0 . "*LINE,ARC"))))
  23.   (setq        N1  0                                ;index for outer loop
  24.         SSL (sslength SS)
  25.   )                                        ; Outer loop, first through second to last
  26.   (while (< N1 (1- SSL))                ; Get object 1, convert to VLA object type
  27.     (setq AOBJ1        (ssname SS N1)
  28.           AOBJ1        (vlax-ename->vla-object AOBJ1)
  29.           N2        (1+ N1)
  30.     )                                        ;index for inner loop
  31. ;;; Inner loop, go through remaining objects
  32.     (while (< N2 SSL)                        ; Get object 2, convert to VLA object
  33.       (setq AOBJ2 (ssname SS N2)
  34.             AOBJ2 (vlax-ename->vla-object AOBJ2)
  35. ;;;Find intersections of Objects
  36.             IPTS  (vla-intersectwith
  37.                     AOBJ1
  38.                     AOBJ2
  39.                     0
  40.                   )                        ; variant result
  41.             IPTS  (vlax-variant-value IPTS)
  42.       )
  43. ;;;Variant array has values?
  44.       (if (> (vlax-safearray-get-u-bound IPTS 1) 0)
  45.         (progn                                ;array holds values, convert it
  46.           (setq        IPTS                        ;to a list.
  47.                  (vlax-safearray->list IPTS)
  48.           )
  49. ;;;Loop through list constructing points
  50.           (while (> (length IPTS) 0)
  51.             (setq PTS  (cons (list (car IPTS)
  52.                                    (cadr IPTS)
  53.                                    (caddr IPTS)
  54.                              )
  55.                              PTS
  56.                        )
  57.                   IPTS (cdddr IPTS)
  58.             )
  59.           )
  60.         )
  61.       )
  62.       (setq N2 (1+ N2))
  63.     )                                        ;inner loop end
  64.     (setq N1 (1+ N1))
  65.   )                                        ;outer loop end
  66.   (setq N 0)
  67.   (repeat (length PTS)
  68.     (setq A (ssget "C" (nth N PTS) (nth N PTS)))
  69.     (setq NN 0)
  70.     (repeat (sslength A)
  71.       (command "_.BREAK" (ssname A NN) (nth N PTS) (nth N PTS))
  72.       (setq NN (1+ NN))
  73.     )
  74.     (setq N (1+ N))
  75.   )
  76. (SETVAR "OSMODE" HOLDOSMODE)
  77. (COMMAND "_.UNDO" "_END")
  78. (PRINC)
  79. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 05:10 , Processed in 0.175460 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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