明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 980|回复: 1

[提问] 各位大神帮忙看一下程序哪不对。

[复制链接]
发表于 2015-1-9 16:34:39 | 显示全部楼层 |阅读模式
  1. (defun c:tt5 (/ pt1 pt2 ss i db1 db2 )
  2.   (vl-load-com)
  3.   (setq  pt1 (getpoint)
  4.   pt2 (getpoint pt1)
  5.   )
  6.   (setq ss (ssget "f" (list pt1 pt2) '((0 . "lwpolyline,line"))))

  7.   (if (= "line" (cdr (assoc (entget (ssname ss 0)))))
  8.     (setq db1 (ssname ss 0))
  9.     (setq db1 (z:lwithpl pt1 pt2 (ssname ss 0)))
  10.   )

  11.   (if (= "line" (cdr (assoc (entget (ssname ss 1)))))
  12.     (setq db2 (ssname ss 1))
  13.     (setq db2 (z:lwithpl pt1 pt2 (ssname ss 1)))
  14.   )

  15.   (command "fillet" db1 db2)
  16.   (princ)
  17. )

  18.           ;===================================================================
  19. (defun z:plinexy (e / a q m p)
  20. ;;;LWPolyline,POLYLINE顶点,去掉完全重合点
  21.   (setq  a (vlax-ename->vla-object e)
  22.   q (vlax-safearray->list
  23.       (vlax-variant-value (vla-get-Coordinates a))
  24.     )
  25.   m (vla-get-objectname a)
  26.   a 0
  27.   m (if (= m "AcDb3dPolyline")
  28.       3
  29.       2
  30.     )
  31.   )
  32.   (repeat (/ (length q) m)
  33.     (cond ((= m 2) (setq p1 (list (nth a q) (nth (+ a 1) q))))
  34.     ((= m 3)
  35.      (setq p1 (list (nth a q) (nth (+ a 1) q) (nth (+ a 2) q)))
  36.     )
  37.     )
  38.     (setq p (if  (member p1 p)
  39.         p
  40.         (append p (list p1))
  41.       )
  42.     a (+ a m)
  43.     )
  44.   )
  45.   p
  46. )



  47. ;;;;;;获取多段线与直线的交点,返回双元素表(图元名 交点)
  48. (defun z:lwithpl (pt1 pt2 en / ptlst jd n result)
  49.   (setq ptlst (z:plinexy en))
  50.   (setq  n (length ptlst)
  51.   i 0
  52.   )
  53.   (repeat (1- n)
  54.     (if  (setq jd (inters pt1 pt2 (nth i ptlst) (nth (1+ i) ptlst) t))
  55.       (progn
  56.   (setq result (list en jd))
  57.       )
  58.     )
  59.     (setq i (1+ i))
  60.   )
  61.   result
  62. )
发表于 2015-1-9 20:22:40 | 显示全部楼层
  1. (defun c:tt5 (/ pt1 pt2 ss i db1 db2)
  2.   (vl-load-com)
  3.   (setq pt1 (getpoint)
  4.         pt2 (getpoint pt1))
  5.   (setq ss (ssget "f" (list pt1 pt2) '((0 . "LWPOLYLINE,LINE"))))
  6.   (setq db1 (ssname ss 0))
  7.   (if (= "LINE" (cdr(assoc(entget db1))))
  8.     (setq db1 (z:lwithpl pt1 pt2 db1))
  9.   )
  10.   (setq db2 (ssname ss 1))
  11.   (if (= "LINE" (cdr(assoc(entget db2))))
  12.     (setq db2 (z:lwithpl pt1 pt2 db2))
  13.   )
  14.   (command "_.fillet" db1 db2)
  15.   (princ)
  16. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 09:32 , Processed in 0.150733 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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