设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 914|回复: 6

[多段线] 绘制多段线的轮廓

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2021-1-16 06:19:06 | 显示全部楼层 |阅读模式
  • 插件名称 : POLY轮廓
  • 作  者 : LispHk (转)
  • 运行环境 :不限 
  • 发布时间 :2021-01-16
  • 命令名称 :OPL
  • 插件介绍 :绘制多段线的轮廓
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

x
  1. (defun c:OPL (/ _subst _fixLast _reverseLWPPoints filter ss wd/2 offlst dxf210)
  2.   ;; Outline selected LWPolylines
  3.   ;; Alan J. Thomspon, 04.07.11

  4.   (vl-load-com)

  5.   (defun _subst (p v l) (subst (cons p v) (assoc p l) l))

  6.   (defun _fixLast (l) (reverse (cons '(42 . 0.) (cdr (reverse l)))))

  7.   (defun _reverseLWPPoints (d / l n)
  8.     (foreach x d (and (vl-position (car x) '(10 40 41 42)) (setq l (cons x l))))
  9.     (setq l (append (cdddr l) (list (car l) (cadr l) (caddr l))))
  10.     (while l
  11.       (setq n (append n
  12.                       (list (assoc 10 l)
  13.                             (cons 40 (cdr (assoc 41 l)))
  14.                             (cons 41 (cdr (assoc 40 l)))
  15.                             (cons 42 (- (cdr (assoc 42 l))))
  16.                       )
  17.               )
  18.             l (cddddr l)
  19.       )
  20.     )
  21.     n
  22.   )

  23.   (setq filter '((0 . "LWPOLYLINE") (-4 . ">") (43 . 0.)))

  24.   (if (or (ssget "_I" filter) (prompt "\nSelect LWPolylines to outline: ") (ssget filter))
  25.     (progn
  26.       (initget "Yes No")
  27.       (setq *OPL:Option*
  28.              (cond ((getkword (strcat "\nDelete LWPolyline after outlined? [Yes/No] <"
  29.                                       (cond (*OPL:Option*)
  30.                                             ((setq *OPL:Option* "No"))
  31.                                       )
  32.                                       ">: "
  33.                               )
  34.                     )
  35.                    )
  36.                    (*OPL:Option*)
  37.              )
  38.       )
  39.       (vlax-for x (setq ss (vla-get-activeselectionset
  40.                              (cond (*AcadDoc*)
  41.                                    ((setq *AcadDoc* (vla-get-activedocument
  42.                                                       (vlax-get-acad-object)
  43.                                                     )
  44.                                     )
  45.                                    )
  46.                              )
  47.                            )
  48.                   )
  49.         (setq offlst nil)
  50.         (if (vl-every '(lambda (d / o)
  51.                          (if (not (vl-catch-all-error-p
  52.                                     (setq o (vl-catch-all-apply 'vlax-invoke (list x 'Offset d)))
  53.                                   )
  54.                              )
  55.                            (setq offlst (cons (entget (vlax-vla-object->ename (car o))) offlst))
  56.                          )
  57.                        )
  58.                       (list (setq wd/2 (/ (vla-get-constantwidth x) 2.)) (- wd/2))
  59.             )
  60.           (progn
  61.             (if (vlax-curve-isClosed x)
  62.               (foreach e offlst (entmod (_subst 43 0. e)))
  63.               (progn
  64.                 (entmod
  65.                   (_subst
  66.                     43
  67.                     0.
  68.                     (_subst
  69.                       70
  70.                       (if (zerop (vlax-get x 'LinetypeGeneration))
  71.                         1
  72.                         129
  73.                       )
  74.                       (_subst
  75.                         90
  76.                         (+ 2 (cdr (assoc 90 (car offlst))) (cdr (assoc 90 (cadr offlst))))
  77.                         (append
  78.                           (_fixLast (vl-remove (setq dxf210 (assoc 210 (car offlst))) (car offlst)))
  79.                           (_fixLast (_reverseLWPPoints (cadr offlst)))
  80.                           (list dxf210)
  81.                         )
  82.                       )
  83.                     )
  84.                   )
  85.                 )
  86.                 (entdel (cdr (assoc -1 (cadr offlst))))
  87.               )
  88.             )
  89.             (and (eq *OPL:Option* "Yes") (vl-catch-all-apply 'vla-delete (list x)))
  90.           )
  91.           (foreach e offlst (entdel (cdr (assoc -1 e))))
  92.         )
  93.       )
  94.       (vla-delete ss)
  95.     )
  96.   )
  97.   (princ)
  98. )


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

已领礼包: 5563个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 3949个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 514个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 914个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 914个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-9-19 04:34 , Processed in 0.621685 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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