找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1697|回复: 8

[分享]:复杂实体求交点的纯LSP函数(起步->拓展)

[复制链接]
发表于 2003-12-11 16:20:10 | 显示全部楼层 |阅读模式

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

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

×
2003.12.11.15.46:
写程序时经常需要用到求交点的函数,可是Autolisp中只有一个非常简单的直线求交函数INTERS。我在网也看到一些更复杂一点的成品求交函数,大都是用了VLISP的扩展函数,或者是象XD_API这样打包好的ARX函数库。就想写一个纯lsp的通用性更强的复合求交函数。
正好今天不用上班,用了七八个小时写出来了一个可以进行圆,圆弧,线段复合求交点程序。
如果有可能的话,请大侠们出手完善一下,加上椭圆,复义线,SPLINE等,最终能够用autolisp写出可以求出两个任意类型实体的交点的复杂函数。

2003.12.13.09.31(LM):
增加了 轻装多义线 求交点的函数。

程序如下,请大家测试:




  1.   [FONT=courier new]
  2. ;______________________________________________________________________
  3. ;_圆,圆弧,线段复合求交点程序__纯LSP___BY__WKAI__晓东CAD论坛____________
  4. ;_2003.12.13.09.31(LM)_________________________________________________
  5. ;_2003.12.11.15.46_____________________________________________________
  6. ;______________________________________________________________________

  7. ;_测试用程序__在求到的交点处划出一条连到0,0的直线段____________________
  8. ;_intersections变量是交点表____________________________________________
  9. (defun c:tt  (/ e1 e2 ff intersections n)
  10.   (setvar "osmode" 0)
  11.   (command "undo" "be")
  12.   (princ "\n选择第一个物体:")
  13.   (while (not e1) (setq e1 (car (entsel))))
  14.   (redraw e1 3)
  15.   (princ "\n选择第二个物体:")
  16.   (while (not e2) (setq e2 (car (entsel))))
  17.   (redraw e2 3)
  18.   (setq        ff
  19.          (getint
  20.            "\n第几个物体不延伸(0 都延伸,1 一号不延伸,2 二号不延伸,<3> 全部不延伸):"
  21.            )
  22.         )
  23.   (if (not ff)
  24.     (setq ff 3)
  25.     )
  26.   (getint_of_ents e1 e2 ff);_得到交点表并赋给intersections变量
  27.   (foreach n  intersections    (command "circle" n "500"))   
  28.   (princ "\n两个物体共有 ")
  29.   (princ (length intersections ))
  30.   (princ " 个交点")
  31.   (redraw e1 4)
  32.   (redraw e2 4)
  33.   (command "undo" "e")
  34.   (princ)
  35.   )
  36. ;_判断物体类型,选择相应函数求交点_______________________________________
  37. (defun getint_of_ents  (en_1 en_2 lim /)
  38.   (IF (LISTP EN_1)
  39.     ()
  40.     (SETQ EN_1 (ENTGET EN_1))
  41.     )
  42.   (IF (LISTP EN_2)
  43.     ()
  44.     (SETQ EN_2 (ENTGET EN_2))
  45.     )
  46.   (setq e1_tp (cdr (assoc 0 EN_1)))
  47.   (setq e2_tp (cdr (assoc 0 EN_2)))
  48.   (cond
  49.     ((= "LWPOLYLINE" e1_tp)
  50.      (pi? en_1 en_2 lim)
  51.      )
  52.     ((= "LWPOLYLINE" e2_tp)
  53.      (pi? en_2 en_1 (change_order lim))
  54.      )
  55.     ((and (= "CIRCLE" e1_tp) (= "CIRCLE" e2_tp))
  56.      (cic en_1 en_2 lim)
  57.      )
  58.     ((and (= "ARC" e1_tp) (= "ARC" e2_tp))
  59.      (aia en_1 en_2 lim)
  60.      )
  61.     ((and (= "LINE" e1_tp) (= "LINE" e2_tp))
  62.      (lil en_1 en_2 lim)
  63.      )

  64.     ((and (= "CIRCLE" e1_tp) (= "ARC" e2_tp))
  65.      (cia en_1 en_2 lim)
  66.      )
  67.     ((and (= "CIRCLE" e1_tp) (= "LINE" e2_tp))
  68.      (cil en_1 en_2 lim)
  69.      )
  70.     ((and (= "ARC" e1_tp) (= "LINE" e2_tp))
  71.      (ail en_1 en_2 lim)
  72.      )

  73.     ((and (= "ARC" e1_tp) (= "CIRCLE" e2_tp))
  74.      (cia en_2 en_1 (change_order lim))
  75.      )
  76.     ((and (= "LINE" e1_tp) (= "CIRCLE" e2_tp))
  77.      (cil en_2 en_1 (change_order lim))
  78.      )
  79.     ((and (= "LINE" e1_tp) (= "ARC" e2_tp))
  80.      (ail en_2 en_1 (change_order lim))
  81.      )
  82.     (T (princ "\n请选择圆、圆弧或者线段!"))
  83.     )
  84.   )
  85. ;_反转延长标志_________________________________________________________
  86. (defun change_order  (num)
  87.   (cond
  88.     ((= num 1) (setq num 2))
  89.     ((= num 2) (setq num 1))
  90.     )
  91.   num
  92.   )
  93. ;______________________________________________________________________
  94. ;______________________________________________________________________
  95. ;_________________求交点应用函数部分____BY__WKAI__晓东CAD论坛__________
  96. ;___________________2003.12.11.14.33___________________________________
  97. ;____limited__决定求交点时物体是否延伸_________________________________
  98. ;____0 都延伸,1 一号不延伸,2 二号不延伸,3 全部不延伸___________________

  99. ;_圆、圆交点___________________________________________________________
  100. (defun cic  (c1 c2 limited / c1_cn c2_cn c1_rd c2_rd ins)
  101.   (IF (LISTP C1)
  102.     ()
  103.     (SETQ C1 (ENTGET C1))
  104.     )
  105.   (IF (LISTP C2)
  106.     ()
  107.     (SETQ C2 (ENTGET C2))
  108.     )
  109.   (setq c1_cn (cdr (assoc 10 c1)))
  110.   (setq c2_cn (cdr (assoc 10 c2)))
  111.   (setq c1_rd (cdr (assoc 40 c1)))
  112.   (setq c2_rd (cdr (assoc 40 c2)))
  113.   (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  114.   (if ins
  115.     (setq intersections (append intersections ins))
  116.     )
  117.   intersections
  118.   )
  119. ;_圆、圆弧交点_________________________________________________________
  120. (defun cia  (c1 c2 limited / ins ins_tmp c1_cn c2_cn c1_rd c2_rd n)
  121.   (IF (LISTP C1)
  122.     ()
  123.     (SETQ C1 (ENTGET C1))
  124.     )
  125.   (IF (LISTP C2)
  126.     ()
  127.     (SETQ C2 (ENTGET C2))
  128.     )
  129.   (setq c1_cn (cdr (assoc 10 c1)))
  130.   (setq c2_cn (cdr (assoc 10 c2)))
  131.   (setq c1_rd (cdr (assoc 40 c1)))
  132.   (setq c2_rd (cdr (assoc 40 c2)))
  133.   (setq c2_an1 (cdr (assoc 50 c2)))
  134.   (setq c2_an2 (cdr (assoc 51 c2)))
  135.   (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  136.   (if (or (= limited 2) (= limited 3))
  137.     (progn
  138.       (foreach n  ins
  139.         (if (p_on_arc n c2_cn c2_an1 c2_an2)
  140.           (if ins_tmp
  141.             (setq ins_tmp (append ins_tmp (list n)))
  142.             (setq ins_tmp (list n))
  143.             )
  144.           )
  145.         )
  146.       (setq ins ins_tmp)
  147.       )
  148.     )
  149.   (setq ins ins_tmp)
  150.   (if ins
  151.     (setq intersections (append intersections ins))
  152.     )
  153.   intersections
  154.   )
  155. ;_圆弧、圆弧交点________________________________________________________
  156. (defun aia  (c1        c2 limited / ins ins_tmp c1_cn c2_cn c1_rd c2_rd c1_an1        c1_an2 c2_an1 c2_an2 n)
  157.   (IF (LISTP C1)
  158.     ()
  159.     (SETQ C1 (ENTGET C1))
  160.     )
  161.   (IF (LISTP C2)
  162.     ()
  163.     (SETQ C2 (ENTGET C2))
  164.     )
  165.   (setq c1_cn (cdr (assoc 10 c1)))
  166.   (setq c2_cn (cdr (assoc 10 c2)))
  167.   (setq c1_rd (cdr (assoc 40 c1)))
  168.   (setq c2_rd (cdr (assoc 40 c2)))
  169.   (setq c1_an1 (cdr (assoc 50 c1)))
  170.   (setq c1_an2 (cdr (assoc 51 c1)))
  171.   (setq c2_an1 (cdr (assoc 50 c2)))
  172.   (setq c2_an2 (cdr (assoc 51 c2)))
  173.   (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  174.   (if (or (= limited 1) (= limited 3))
  175.     (progn
  176.       (foreach n  ins
  177.         (if (p_on_arc n c1_cn c1_an1 c1_an2)
  178.           (if ins_tmp
  179.             (setq ins_tmp (append ins_tmp (list n)))
  180.             (setq ins_tmp (list n))
  181.             )
  182.           )
  183.         )
  184.       (setq ins ins_tmp)
  185.       )
  186.     )
  187.   (setq ins_tmp nil)
  188.   (if (or (= limited 2) (= limited 3))
  189.     (progn
  190.       (foreach n  ins
  191.         (if (p_on_arc n c2_cn c2_an1 c2_an2)
  192.           (if ins_tmp
  193.             (setq ins_tmp (append ins_tmp (list n)))
  194.             (setq ins_tmp (list n))
  195.             )
  196.           )
  197.         )
  198.       (setq ins ins_tmp)
  199.       )
  200.     )
  201.   (if ins
  202.     (setq intersections (append intersections ins))
  203.     )
  204.   intersections
  205.   )
  206. ;_圆、直线交点______________________________________________________
  207. (defun cil  (c1 l1 limited / end1 end2 cen rad ins ins_tmp n)
  208.   (IF (LISTP C1)
  209.     ()
  210.     (SETQ C1 (ENTGET C1))
  211.     )
  212.   (IF (LISTP L1)
  213.     ()
  214.     (SETQ L1 (ENTGET L1))
  215.     )
  216.   (setq end1 (cdr (assoc 10 l1)))
  217.   (setq end2 (cdr (assoc 11 l1)))
  218.   (setq cen (cdr (assoc 10 c1)))
  219.   (setq rad (cdr (assoc 40 c1)))
  220.   (setq ins (L_INT_C end1 end2 cen rad))
  221.   (if (or (= limited 2) (= limited 3))
  222.     (progn
  223.       (foreach n  ins
  224.         (if (p_on_line n end1 end2)
  225.           (if ins_tmp
  226.             (setq ins_tmp (append ins_tmp (list n)))
  227.             (setq ins_tmp (list n))
  228.             )
  229.           )
  230.         )
  231.       (setq ins ins_tmp)
  232.       )
  233.     )
  234.   (if ins
  235.     (setq intersections (append intersections ins))
  236.     )
  237.   intersections
  238.   )
  239. ;_圆弧、直线交点______________________________________________________
  240. (defun ail  (c1 l1 limited / end1 end2 cen rad ang1 ang2 ins ins_tmp n)
  241.   (IF (LISTP C1)
  242.     ()
  243.     (SETQ C1 (ENTGET C1))
  244.     )
  245.   (IF (LISTP L1)
  246.     ()
  247.     (SETQ L1 (ENTGET L1))
  248.     )
  249.   (setq end1 (cdr (assoc 10 l1)))
  250.   (setq end2 (cdr (assoc 11 l1)))
  251.   (setq cen (cdr (assoc 10 c1)))
  252.   (setq rad (cdr (assoc 40 c1)))
  253.   (setq ang1 (cdr (assoc 50 c1)))
  254.   (setq ang2 (cdr (assoc 51 c1)))
  255.   (setq ins (L_INT_C end1 end2 cen rad))
  256.   (if (or (= limited 1) (= limited 3))
  257.     (progn
  258.       (foreach n  ins
  259.         (if (p_on_arc n cen ang1 ang2)
  260.           (if ins_tmp
  261.             (setq ins_tmp (append ins_tmp (list n)))
  262.             (setq ins_tmp (list n))
  263.             )
  264.           )
  265.         )
  266.       (setq ins ins_tmp)
  267.       )
  268.     )
  269.   (setq ins_tmp nil)
  270.   (if (or (= limited 2) (= limited 3))
  271.     (progn
  272.       (foreach n  ins
  273.         (if (p_on_line n end1 end2)
  274.           (if ins_tmp
  275.             (setq ins_tmp (append ins_tmp (list n)))
  276.             (setq ins_tmp (list n))
  277.             )
  278.           )
  279.         )
  280.       (setq ins ins_tmp)
  281.       )
  282.     )
  283.   (if ins
  284.     (setq intersections (append intersections ins))
  285.     )
  286.   intersections
  287.   )
  288. ;_直线、直线交点______________________________________________________
  289. (defun lil  (l1 l2 limited / n ins ins_tmp l1_en1 l1_en2 l2_en1 l2_en2)
  290.   (if (listp l1)
  291.     ()
  292.     (setq l1 (entget l1))
  293.     )
  294.   (if (listp l2)
  295.     ()
  296.     (setq l2 (entget l2))
  297.     )
  298.   (setq l1_en1 (cdr (assoc 10 l1)))
  299.   (setq l1_en2 (cdr (assoc 11 l1)))
  300.   (setq l2_en1 (cdr (assoc 10 l2)))
  301.   (setq l2_en2 (cdr (assoc 11 l2)))
  302.   (if (setq ins_tmp (inters l1_en1 l1_en2 l2_en1 l2_en2 nil))
  303.     (setq ins (list ins_tmp))
  304.     )
  305.   (setq ins_tmp nil)
  306.   (if (or (= limited 1) (= limited 3))
  307.     (progn
  308.       (foreach n  ins
  309.         (if (p_on_line n l1_en1 l1_en2)
  310.           (setq ins_tmp (list n))
  311.           )
  312.         )
  313.       (setq ins ins_tmp)
  314.       )
  315.     )
  316.   (setq ins_tmp nil)
  317.   (if (or (= limited 2) (= limited 3))
  318.     (progn
  319.       (foreach n  ins
  320.         (if (p_on_line n l2_en1 l2_en2)
  321.           (setq ins_tmp (list n))
  322.           )
  323.         )
  324.       (setq ins ins_tmp)
  325.       )
  326.     )
  327.   (if ins
  328.     (setq intersections (append intersections ins))
  329.     )
  330.   intersections
  331.   )
  332. ;_复义线、其它实体交点______________________________________________________
  333. ;_如果是两条复义线通过递归求交______________________________________________
  334. (defun pi?  (pl1 e2 lim / p1 p2 p3 pts-pl1 n sym1 sym2 ang1 ang2 pl1-sub-ent)
  335.   (if (listp pl1)
  336.     ()
  337.     (setq pl1 (entget pl1))
  338.     )
  339.   (if (listp e2)
  340.     ()
  341.     (setq e2 (entget e2))
  342.     )
  343.   (setq pts-pl1 (GET_ENDS_PL pl1))
  344.   (setq n 1)
  345.   (while (< (+ 1 n) (length pts-pl1))
  346.     (setq p1 (nth (- n 1) pts-pl1))
  347.     (setq p2 (nth n pts-pl1))
  348.     (setq p3 (nth (+ n 1) pts-pl1))
  349.     (if        (listp p2)
  350.       (progn
  351.         (setq sym1 (car p2))
  352.         (setq p2 (cdr p2))
  353.         (if (= 1 sym1)
  354.           (setq        ang1 (angle p2 p1)
  355.                 ang2 (angle p2 p3)
  356.                 )
  357.           (setq        ang1 (angle p2 p3)
  358.                 ang2 (angle p2 p1)
  359.                 )
  360.           )
  361.         (setq pl1-sub-ent
  362.                (list (cons 0 "ARC")
  363.                      (cons 10 p2)
  364.                      (cons 40 (distance p1 p2))
  365.                      (cons 50 ang1)
  366.                      (cons 51 ang2)
  367.                      (cons 62 1)
  368.                      )
  369.               )
  370.         )
  371.       (setq pl1-sub-ent
  372.              (list (cons 0 "LINE") (cons 10 p1) (cons 11 p3) (cons 62 1))
  373.             )
  374.       )
  375.     (getint_of_ents pl1-sub-ent e2 lim)
  376.     (setq n (+ 2 n))
  377.     )
  378.   )
  379. ;______________________________________________________________________
  380. ;______________________________________________________________________
  381. ;_________________求交点核心函数部分____BY__WKAI__晓东CAD论坛__________
  382. ;___________________2003.12.11.14.33___________________________________
  383. ;______________________________________________________________________
  384. ;_精度设置_____________________________________________________________
  385. (setq min_num 0.0000001)
  386. ;___________________圆与圆交点函数,输入值圆心1,半径1,圆心2,半径2.返回值交点表
  387. (defun c_int_c        (c1_cen c1_rad c2_cen c2_rad / c1_rad c2_rad ints c1c2_dis dd ee)
  388.   (setq c1c2_dis (distance c1_cen c2_cen))
  389.   (cond
  390.     ((equal c1c2_dis (+ c1_rad c2_rad) min_num)
  391.      (setq ints (list (polar c1_cen (angle c1_cen c2_cen) c1_rad)))
  392.      )
  393.     ((equal c1c2_dis (abs (- c1_rad c2_rad)) min_num)
  394.      (if (minusp (- c1_rad c2_rad))
  395.        (setq ints (list (polar c2_cen (angle c2_cen c1_cen) c2_rad)))
  396.        (setq ints (list (polar c1_cen (angle c1_cen c2_cen) c1_rad)))
  397.        )
  398.      )
  399.     ((and (> c1c2_dis (abs (- c1_rad c2_rad)))
  400.           (< c1c2_dis (+ c1_rad c2_rad))
  401.           )
  402.      (progn
  403.        (setq dd        (/ (- (+ (* c1c2_dis c1c2_dis) (* c1_rad c1_rad))
  404.                       (* c2_rad c2_rad)
  405.                       )
  406.                    (* 2 c1c2_dis)
  407.                    )
  408.              )
  409.        (setq ee (sqrt (- (* c1_rad c1_rad) (* dd dd))))
  410.        (setq
  411.          ints (list (polar (polar c1_cen (angle c1_cen c2_cen) dd)
  412.                            (+ (angle c1_cen c2_cen) (/ pi 2))
  413.                            ee
  414.                            )
  415.                     )
  416.          )
  417.        (setq ints
  418.               (append
  419.                 ints
  420.                 (list (polar (polar c1_cen (angle c1_cen c2_cen) dd)
  421.                              (- (angle c1_cen c2_cen) (/ pi 2))
  422.                              ee
  423.                              )
  424.                       )
  425.                 )
  426.              )

  427.        )
  428.      )
  429.     )
  430.   ints
  431.   )
  432. ;___________________直线与圆交点函数,输入值直线端点1,端点2,圆心,半径.返回值交点表
  433. (defun L_INT_C        (l_end1 l_end2 c_cen c_rad / pedal dist_cen_l int1 int2 ints)
  434.   (setq pedal (pedal_to_line c_cen l_end1 l_end2))
  435.   (setq dist_cen_l (distance pedal c_cen))
  436.   (cond
  437.     ((equal c_rad dist_cen_l min_num) (setq ints (list pedal)))
  438.     ((> c_rad dist_cen_l)
  439.      (progn
  440.        (setq int1
  441.               (polar pedal
  442.                      (angle l_end1 l_end2)
  443.                      (sqrt (- (* c_rad c_rad) (* dist_cen_l dist_cen_l)))
  444.                      )
  445.              )
  446.        (setq int2
  447.               (polar pedal
  448.                      (+ pi (angle l_end1 l_end2))
  449.                      (sqrt (- (* c_rad c_rad) (* dist_cen_l dist_cen_l)))
  450.                      )
  451.              )
  452.        (setq ints (list int1 int2))
  453.        )
  454.      )
  455.     )
  456.   ints
  457.   )
  458. ;______________________________________________________________________
  459. ;______________________________________________________________________
  460. ;_________________辅助测试函数部分____BY__WKAI__晓东CAD论坛____________
  461. ;___________________2003.12.11.14.33___________________________________
  462. ;______________________________________________________________________
  463. ;___________________求点到直线的垂足的函数,输入值测试点,直线端点1,端点2.返回值垂足坐标
  464. (defun pedal_to_line  (pt pt1 pt2)
  465.   (inters
  466.     pt
  467.     (polar pt (+ (/ pi 2) (angle pt1 pt2)) 1000)
  468.     pt1
  469.     pt2
  470.     nil
  471.     )
  472.   )
  473. ;___________________测试点是否在线段上,输入值测试点,线段端点1,端点2.返回值T或者NIL
  474. (defun p_on_line  (pt pt1 pt2)
  475.   (equal (+ (distance pt pt1) (distance pt pt2))
  476.          (distance pt1 pt2)
  477.          min_num
  478.          )
  479.   )
  480. ;___________________测试点是否在圆弧上,输入值测试点,圆心,起始角度,终止角度.返回值T或者NIL
  481. (defun p_on_arc         (pt cn an1 an2)
  482.   (if (> an1 an2)
  483.     (setq an1 (- an1 (* 2 pi))))
  484.   (or
  485.     (and (>= (+ (angle cn pt) pi pi) an1) (<= (+ (angle cn pt) pi pi) an2))
  486.     (and (>= (angle cn pt) an1) (<= (angle cn pt) an2))
  487.     (and (>= (- (angle cn pt) pi pi) an1) (<= (- (angle cn pt) pi pi) an2))
  488.     )
  489.   )
  490. ;___________________获取轻装多义线的各个端点和圆心(如果有),输入值复义线实体名或表.返回值端点及圆心表
  491. (DEFUN GET_ENDS_PL  (PL        / dis dis1 m N PT-LST PT-LST-TMP sym mid-p1p2 NTH-PT p1        p2 pl-tp pt1 rad sym)
  492.   (IF (LISTP PL)
  493.     ()
  494.     (SETQ PL (ENTGET PL))
  495.     )
  496.   (SETQ PL-TP (CDR (ASSOC 70 PL)))
  497.   (FOREACH N  PL
  498.     (IF        (OR (= 10 (CAR N)) (= 42 (CAR N)))
  499.       (SETQ PT-LST (APPEND PT-LST (LIST (CDR N))))
  500.       )
  501.     )
  502.   (IF (= 1 PL-TP)
  503.     (SETQ PT-LST (APPEND PT-LST (LIST (CDR (ASSOC 10 PL)))))
  504.     (SETQ PT-LST (reverse (cdr (reverse PT-LST))))
  505.     )
  506.   (SETQ M 0)
  507.   (while (<= (+ 1 m) (LENGTH PT-LST))
  508.     (SETQ NTH-PT (NTH M PT-LST))
  509.     (IF        (LISTP NTH-PT)
  510.       (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST NTH-PT)))
  511.       (PROGN
  512.         (IF (EQUAL NTH-PT 0 MIN_NUM)
  513.           (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST NTH-PT)))
  514.           (PROGN
  515.             (SETQ P1 (NTH (- M 1) PT-LST))
  516.             (SETQ P2 (NTH (+ M 1) PT-LST))
  517.             (SETQ MID-P1P2 (LIST (/ (+ (CAR P1) (CAR P2)) 2)
  518.                                  (/ (+ (CADR P1) (CADR P2)) 2)
  519.                                  )
  520.                   )
  521.             (SETQ DIS (/ (DISTANCE P1 P2) 2))
  522.             (SETQ DIS1 (ABS (* DIS NTH-PT)))
  523.             (SETQ RAD (/ (+ (* DIS DIS) (* DIS1 DIS1)) (* 2 DIS1)))
  524.             (IF        (minusp NTH-PT)
  525.               (SETQ
  526.                 PT1 (append (list -1)
  527.                             (POLAR MID-P1P2
  528.                                    (- (ANGLE P1 P2) (/ PI 2))
  529.                                    (- RAD DIS1)
  530.                                    )
  531.                             )
  532.                 )
  533.               (SETQ
  534.                 PT1 (append (list 1)
  535.                             (POLAR MID-P1P2
  536.                                    (+ (ANGLE P1 P2) (/ PI 2))
  537.                                    (- RAD DIS1)
  538.                                    )
  539.                             )
  540.                 )
  541.               )
  542.             (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST PT1)))
  543.             )
  544.           )
  545.         )
  546.       )
  547.     (SETQ M (+ 1 M))
  548.     )
  549.   (SETQ PT-LST PT-LST-TMP)
  550.   )
  551. ;_________________________________________________________________________________________
  552. ;_________________________________________________________________________________________
  553. ;_________________________________________________________________________________________
  554. ;_________________________________________________________________________________________

  555.   [/FONT]


这是我 两[/COLOR]  天的心血,请大家指正。
如有引用请注明出处。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-11 16:50:33 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-11 20:32:35 | 显示全部楼层
最初由 LUCAS 发布
[B]參考看看
http://www.xdcad.net/forum/showt ... ghlight=Bill+Kramer [/B]


现在还在用r14是件痛苦的事情:(
还有什么办法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-13 10:03:15 | 显示全部楼层
感谢 aeo 斑竹的支持。今天又增加lwpl求交功能.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-13 10:44:45 | 显示全部楼层
VLISP不是纯LISP吗?
我同意AEO的观点, 如果条件有限, 只是一般用用R14也就算了. 如果放着新的不用, 再对R14花大力气, 得不偿失
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-7 17:38:44 | 显示全部楼层
真是长篇巨著,兄弟佩服!
用vl写很简单的:)支持所有曲线类型
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-10 16:41:18 | 显示全部楼层
返回有交点列表吗?
可以实现通过在屏幕上点取两点来求出与所有线的交点吗,得到一列表
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-7-4 16:03:31 | 显示全部楼层
学习了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-7-8 22:39:01 | 显示全部楼层
现在还在用r14是件痛苦的事情
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 20:30 , Processed in 0.426942 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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