找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: fyje

[编程申请]:关于闭合曲线合并的问题

[复制链接]
发表于 2003-11-29 21:30:18 | 显示全部楼层
龙龙仔,我试了你的程序,提点建议
1.对于看上去闭合,但是画图时没用close画的pl线不认. 是否先加个自动闭合功能?
2.对于圆仍不能处理, 应该先自动将圆转为pl线
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-1 10:09:08 | 显示全部楼层
最初由 LUCAS 发布
[B]“圆”有内点表吗?
Wb0815你不了解问题的问题点!闭合曲线有很多种类!!
连接点也是随便点选!
要是你能写出一个满意的程序,我在明经给你加分。
;;程序要求处理"圆" & "闭合2dPolyline"
;;-----------------------... [/B]


谢谢LUCAS,能否把源程序给我,让我学习一下?Email:fyje@xinhuanet.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-1 10:40:57 | 显示全部楼层

  1. ;;看来Wb0815的程序是出不来了
  2. ;;BY LUCAS(龙龙仔)
  3. ;;只处理"圆" & "闭合2dPolyline"
  4. ;;-----------------------------
  5. ;;只处理聚合线旗号
  6. ;; 1 = 此为封闭聚合线。
  7. ;; 2 = 已加入曲线拟合顶点。
  8. ;; 4 = 已加入云形线拟合顶点。
  9. ;;线条显示太小时会出错!!
  10. (defun C:CONNECT (/          HOLDECHO          HOLDOSMODE          PT1
  11.                   PT2          LENT          ENT1          ENT2          SPT1          EPT1
  12.                   SPT2          EPT2
  13.                  )
  14.   (vl-load-com)
  15.   (defun ENTSEL_MSG_FILTER (MSG FILTER MSG1 / SS SSS)
  16.     (while (not SS)
  17.       (setq SS (entsel MSG))
  18.       (if (/= SS NIL)
  19.         (progn
  20.           (command "_.SELECT" (car SS) "")
  21.           (if (not (setq SSS (ssget "P" FILTER)))
  22.             (progn
  23.               (setq SS NIL)
  24.               (prompt MSG1)
  25.             )
  26.             (list (ssname SSS 0) (cadr SS))
  27.           )
  28.         )
  29.       )
  30.     )
  31.   )

  32.   (defun DO_IT (ENT PT / C)
  33.     (command "_.circle" PT 0.01)
  34.     (setq C (entlast))
  35.     (command
  36.       "_.trim"
  37.       (entlast)
  38.       ""
  39.       (list ENT PT)
  40.       ""
  41.     )
  42.     (if        (not (equal C (entlast)))
  43.       (progn
  44.         (command "_.pedit"
  45.                  (entlast)
  46.                  "j"
  47.                  "ALL"
  48.                  ""
  49.                  ""
  50.         )
  51.         (setq ENT (entlast))
  52.       )
  53.     )
  54.     (command "_.erase" C "")
  55.     (vlax-ename->vla-object ENT)
  56.   )

  57.   (setq HOLDECHO (getvar "CMDECHO"))
  58.   (setvar "CMDECHO" 0)
  59.   (command "_.UNDO" "_GROUP")
  60.   (setq        ENT1 (ENTSEL_MSG_FILTER
  61.                "\n选第一条闭合曲线: "
  62.                '((-4 . "<OR")
  63.                  (0 . "CIRCLE")
  64.                  (-4 . "<AND")
  65.                  (0 . "*POLYLINE")
  66.                  (70 . 1)
  67.                  (-4 . "AND>")
  68.                  (-4 . "<AND")
  69.                  (0 . "*POLYLINE")
  70.                  (70 . 3)
  71.                  (-4 . "AND>")
  72.                  (-4 . "<AND")
  73.                  (0 . "*POLYLINE")
  74.                  (70 . 5)
  75.                  (-4 . "AND>")
  76.                  (-4 . "OR>")
  77.                 )
  78.                "\n所选线段程序不能处理!!"
  79.              )
  80.   )
  81.   (setq        ENT2 (ENTSEL_MSG_FILTER
  82.                "\n选第二条闭合曲线: "
  83.                '((-4 . "<OR")
  84.                  (0 . "CIRCLE")
  85.                  (-4 . "<AND")
  86.                  (0 . "*POLYLINE")
  87.                  (70 . 1)
  88.                  (-4 . "AND>")
  89.                  (-4 . "<AND")
  90.                  (0 . "*POLYLINE")
  91.                  (70 . 3)
  92.                  (-4 . "AND>")
  93.                  (-4 . "<AND")
  94.                  (0 . "*POLYLINE")
  95.                  (70 . 5)
  96.                  (-4 . "AND>")
  97.                  (-4 . "OR>")
  98.                 )
  99.                "\n所选线段程序不能处理!!"
  100.              )
  101.   )

  102.   (setq PT1 (osnap (cadr ENT1) "_NEA"))
  103.   (setq PT2 (osnap (cadr ENT2) "_NEA"))
  104.   (setq ENT1 (car ENT1))
  105.   (setq ENT2 (car ENT2))
  106.   (if (not (equal ENT1 ENT2))
  107.     (progn
  108.       (setq HOLDOSMODE (getvar "OSMODE"))
  109.       (setvar "osmode" 0)
  110.       (setq ENT1 (DO_IT ENT1 PT1))
  111.       (setq ENT2 (DO_IT ENT2 PT2))
  112.       (setq SPT1 (vlax-curve-getstartpoint ENT1))
  113.       (setq EPT1 (vlax-curve-getendpoint ENT1))
  114.       (setq SPT2 (vlax-curve-getstartpoint ENT2))
  115.       (setq EPT2 (vlax-curve-getendpoint ENT2))
  116.       (setq LENT (entlast))
  117.       (if (inters SPT1 SPT2 EPT1 EPT2)
  118.         (command "_.line" SPT1 EPT2 "" "_.line" EPT1 SPT2 "")
  119.       )
  120.       (if (inters SPT1 EPT2 EPT1 SPT2)
  121.         (command "_.line" SPT1 SPT2 "" "_.line" EPT1 EPT2 "")
  122.       )
  123.       (if (not (equal LENT (entlast)))
  124.         (command "_.pedit"
  125.                  (entlast)
  126.                  "y"
  127.                  "j"
  128.                  (entnext LENT)
  129.                  (vlax-vla-object->ename ENT1)
  130.                  (vlax-vla-object->ename ENT2)
  131.                  ""
  132.                  ""
  133.         )
  134.       )
  135.      (setvar "OSMODE" HOLDOSMODE)
  136.     )
  137.     (alert "\n 所选是相同的线!! ")
  138.   )
  139.   (command "_.UNDO" "_END")
  140.   (setvar "CMDECHO" HOLDECHO)
  141.   (princ)
  142. )
  143. (prompt "\nType CONNECT 执行,BY LUCAS(龙龙仔)")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 14:06 , Processed in 0.170044 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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