找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2821|回复: 13

[拓扑] 给ACAD增加个MAP才有的MPolygon命令(生成多重拓扑多边形)

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2017-2-25 21:11:11 | 显示全部楼层 |阅读模式
  • 插件名称 : 创建多重多边形
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 
  • 发布时间 :2017-02-25
  • 命令名称 :XDTB_MPolygon
  • 插件介绍 :AUTOCAD MAP里面的多重拓扑多边形创建
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
  1. (defun c:xdtb_mpolygon (/ e gpline i j k mp msg myerr pattern pline pt pts                          ss tf tf1
  2.                        )
  3.   (defun _selectobj ()
  4.     (if (setq ss (ssget '((0 . "*POLYLINE,SPLINE,ELLIPSE,CIRCLE"))))
  5.       (progn
  6.         (vla-startundomark **xd::doc**)
  7.         (if (= i 0)
  8.           (setq mp (xdrx-mpolygon-make ss t t))
  9.           (xdrx_setpropertyvalue mp "appendLoopFromBoundary" (list ss t t))
  10.         )
  11.         (if (/= pattern "")
  12.           (xdrx_setpropertyvalue mp "pattern" (list 1 pattern))
  13.         )
  14.         (setq i (1+ i))
  15.         (vla-endundomark **xd::doc**)
  16.       )
  17.     )
  18.   )
  19.   (defun _hatch ()
  20.     (if mp
  21.       (if (= pattern "")
  22.         (progn
  23.           (setq pattern "solid")
  24.           (xdrx_setpropertyvalue mp "pattern" (list 1 pattern))
  25.         )
  26.         (progn
  27.           (xdrx-mpolygon-remake mp)
  28.           (setq pattern "")
  29.         )
  30.       )
  31.     )
  32.     (princ)
  33.   )
  34.   (defun _undo ()
  35.     (setq i (1- i))
  36.     (vl-cmdf ".undo" 1)
  37.     (princ)
  38.   )
  39.   (defun _undo1 ()
  40.     (setq j (1- j))
  41.     (vl-cmdf ".undo" 1)
  42.     (setq pts (cdr pts))
  43.     (princ)
  44.   )
  45.   (defun _append ()
  46.     (if (setq e (car (xdrx_entsel "\n拾取添加的MPOLYGON<退出>:" '(
  47.                                    (0 . "MPOLYGON")
  48.                                   )
  49.                      )
  50.                 )
  51.         )
  52.       (setq mp e
  53.             k 1
  54.       )
  55.     )
  56.     (princ)
  57.   )
  58.   (defun _draw ()
  59.     (setq j 0
  60.           tf1 t
  61.     )
  62.     (setq gpline (xdge::constructor "kCompositeCrv3d"))
  63.     (while (and
  64.              tf1
  65.              (xdrx_initget (strcat "U" (if (> j 1)
  66.                                          "C"
  67.                                          ""
  68.                                        )
  69.                            )
  70.              )
  71.              (progn
  72.                (setq pt (getpoint pt (strcat "\n指定下一点或 [" (if
  73.                                                                   (> j 1)
  74.                                                                   "闭合(C)/"
  75.                                                                   ""
  76.                                                                 ) "放弃(U)]"
  77.                                              (if (> j 1)
  78.                                                "<闭合>:"
  79.                                                ":"
  80.                                              )
  81.                                      )
  82.                         )
  83.                )
  84.                t
  85.              )
  86.            )
  87.       (if (not pt)
  88.         (setq pt "C")
  89.       )
  90.       (cond
  91.         ((= (type pt) 'list)
  92.           (setq pts (cons pt pts))
  93.           (setq j (1+ j))
  94.           (xdrx_entity_delete pline)
  95.           (setq pline (xdrx_polyline_make (reverse pts)))
  96.         )
  97.         ((= pt "U")
  98.           (_undo1)
  99.           (setq pt (car pts))
  100.           (xdrx_entity_delete pline)
  101.           (xdrx_polyline_make (reverse pts))
  102.           (if (< j 0)
  103.             (setq tf1 nil
  104.                   i 1
  105.             )
  106.           )
  107.         )
  108.         ((= pt "C")
  109.           (setq tf1 nil
  110.                 i 1
  111.           )
  112.           (if mp
  113.             (progn
  114.               (xdrx_setpropertyvalue mp "appendLoopFromBoundary"
  115.                                      (list pline t t)
  116.               )
  117.             )
  118.             (progn
  119.               (vla-startundomark **xd::doc**)
  120.               (setq mp (xdrx-mpolygon-make pline t t))
  121.               (if (/= pattern "")
  122.                 (xdrx_setpropertyvalue mp "pattern" (list 1 pattern))
  123.               )
  124.             )
  125.           )
  126.         )
  127.       )
  128.     )
  129.     (princ)
  130.   )
  131.   (defun myerr (msg)
  132.     (princ "\n")
  133.     (princ msg)
  134.     (xdrx_entity_delete mp pline)
  135.     (xdrx_end)
  136.   )
  137.   (xdrx_begin)
  138.   (setq *error* myerr)
  139.   (setq i 0
  140.         k 0
  141.         tf t
  142.         pattern "solid"
  143.   )
  144.   (while (and
  145.            tf
  146.            (xdrx_initget (strcat (if mp
  147.                                    "F"
  148.                                    ""
  149.                                  ) "X O" (if (= k 0)
  150.                                            "A"
  151.                                            ""
  152.                                          ) (if (> i 0)
  153.                                              "U"
  154.                                              ""
  155.                                            )
  156.                          )
  157.            )
  158.            (progn
  159.              (setq pt (getpoint (strcat "\nMPOLYGON指定起点或[" (if
  160.                                                                   (and
  161.                                                                     (not mp)
  162.                                                                     (= k 0)
  163.                                                                   )
  164.                                                                   "添加(A)/"
  165.                                                                   ""
  166.                                                                 )
  167.                                         (if mp
  168.                                           "填充(F)/"
  169.                                           ""
  170.                                         ) "选择对象(O)" (if (> i 0)
  171.                                                           "/回退(U)"
  172.                                                           ""
  173.                                                         ) "/退出(X)]"
  174.                                         (if (= i 0)
  175.                                           "<选择对象>:"
  176.                                           "<退出>:"
  177.                                         )
  178.                                 )
  179.                       )
  180.              )
  181.              t
  182.            )
  183.          )
  184.     (if (not pt)
  185.       (if (> i 0)
  186.         (setq pt "X")
  187.         (setq pt "O")
  188.       )
  189.     )
  190.     (cond
  191.       ((= pt "A")
  192.         (_append)
  193.       )
  194.       ((= pt "U")
  195.         (_undo)
  196.       )
  197.       ((= pt "X")
  198.         (setq tf nil)
  199.       )
  200.       ((= pt "O")
  201.         (_selectobj)
  202.       )
  203.       ((= pt "F")
  204.         (_hatch)
  205.       )
  206.       ((= (type pt) 'list)
  207.         (setq pts nil)
  208.         (setq pts (cons pt pts))
  209.         (_draw)
  210.       )
  211.     )
  212.   )
  213.   (setq *error* nil)
  214.   (xdrx_end)
  215.   (princ)
  216. )

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

已领礼包: 57个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 6536个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 86个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 63个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2017-12-12 22:45:24 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-8 07:42 , Processed in 0.452057 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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