设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3594|回复: 24

[工具] 自动偏移-适用于画大样钢筋

[复制链接]
发表于 2013-10-25 11:17:06 | 显示全部楼层 |阅读模式
  • 插件名称 : 自动偏移
  • 作  者 : 分享
  • 运行环境 :XDRX API 
  • 发布时间 :2011-10-25
  • 命令名称 :自动偏移
  • 插件介绍 :适用于画大样钢筋
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

x
本帖最后由 newer 于 2013-10-25 13:08 编辑

  1. ;;; (defun c:so ()
  2. ;;;  (vl-load-com)
  3. ;;;  (setq lineobj (vlax-ename->vla-object (car (entsel))))
  4. ;;;  (vla-offset lineobj 70)
  5. ;;;  (vla-offset lineobj -70)
  6. ;;;  (princ)
  7. ;;; )




  8. ;;; pline、line、spline、arc、circle,统统反向:
  9. (defun fx (/ ent ent1 q q2 cp r os lst)
  10.   (prompt "将各种线型反向……")
  11.   (print)
  12.   (setq os (getvar "osmode"))
  13.   (setvar "osmode" 0)
  14.   (setq ent (entget (setq ent1 en)))
  15.   (cond
  16.     ((= (cdr (assoc 0 ent)) "LWPOLYLINE")
  17.       (reverselwp ent1)
  18.     )
  19.     ((= (cdr (assoc 0 ent)) "LINE")
  20.       (setq q (cons 10 (cdr (assoc 11 ent)))
  21.             q2 (cons 11 (cdr (assoc 10 ent)))
  22.       )                                       ; _ 结束setq
  23.       (setq ent (subst
  24.                   q
  25.                   (assoc 10 ent)
  26.                   ent
  27.                 )
  28.             ent (subst
  29.                   q2
  30.                   (assoc 11 ent)
  31.                   ent
  32.                 )
  33.       )                                       ; _ 结束setq
  34.       (entmod ent)
  35.     )
  36.     ((= (cdr (assoc 0 ent)) "SPLINE")
  37.       (command "SPLINEDIT" ent1 "E" "")
  38.     )
  39.     ((= (cdr (assoc 0 ent)) "ARC")
  40.       (command "pedit" ent1 "y" "")
  41.       (setq ent1 (entlast))
  42.       (reverselwp ent1)
  43.     )
  44.     ((= (cdr (assoc 0 ent)) "CIRCLE")
  45.       (setq cp (cdr (assoc 10 ent))
  46.             r (cdr (assoc 40 ent))
  47.       )                                       ; _ 结束setq
  48.       (entmake (setq lst (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '
  49.                                (67 . 0) '(410 . "Model") '(100 . "AcDbPolyline")
  50.                                '(90 . 2) '(70 . 129) (cons 10
  51.                                                            (polar cp 0 r)
  52.                                                      ) '(40 . 0) '
  53.                                (41 . 0) '(42 . -1) (cons 10 (polar cp pi r))
  54.                                '(40 . 0) '(41 . 0) '(42 . -1)
  55.                          )               ; list









  56.                )                       ; setq
  57.       )                                       ; entmake
  58.       (command "_matchprop" ent1 (entlast) "")
  59.       (entdel ent1)
  60.     )
  61.     (t
  62.       (prompt "\n这个东西不能反转。")
  63.     )
  64.   )                                       ; _ 结束cond
  65.   (setvar "osmode" os)
  66.   (princ)
  67. )
  68. ;;; _ 结束defun

  69. ;;; 子程序:pline顶点逆序
  70. (defun reverselwp (ent1 / a pl how li1 li2 li3)
  71.   (setq pl (entget ent1 '("*"))
  72.         how nil
  73.   )                                       ; _ 结束setq
  74.   (foreach an pl
  75.     (if (setq a (member (car an) '(10 40 41 42)))
  76.       (setq how t)
  77.     )                                       ; _ 结束if
  78.     (cond
  79.       ((not how)
  80.         (setq li1 (cons an li1))
  81.       )
  82.       ((and
  83.          how
  84.          a
  85.        )
  86.         (cond
  87.           ((= (car an) 40)
  88.             (setq an (cons 41 (cdr an)))
  89.           )
  90.           ((= (car an) 41)
  91.             (setq an (cons 40 (cdr an)))
  92.           )
  93.           ((= (car an) 42)
  94.             (setq an (cons 42 (- 0 (cdr an))))
  95.           )
  96.           (t
  97.             an
  98.           )
  99.         )                               ; _ 结束cond
  100.         (setq li2 (cons an li2))
  101.       )
  102.       ((and
  103.          how
  104.          (not a)
  105.        )
  106.         (setq li3 (cons an li3))
  107.       )
  108.     )                                       ; _ 结束cond









  109.   )                                       ; _ 结束foreach
  110.   (entmod (append
  111.             (reverse li1)
  112.             (append
  113.               (cdddr li2)
  114.               (list (car li2) (cadr li2) (caddr li2))
  115.             )
  116.             (reverse li3)
  117.           )                               ; _ 结束append
  118.   )                                       ; _ 结束entmod









  119. )
  120. ;;; _ 结束defun





  121. ;;; 按计算三角形oij的倍面积
  122. (defun calo2a (pti ptj)
  123.   (- (* (car pti) (cadr ptj)) (* (car ptj) (cadr pti)))
  124. )
  125. ;;; 判断多段线是否为逆时针走向,ename图元必须为lwpolyline
  126. (defun clockwisep (ename / ptlist)
  127.   (setq ptlist (apply
  128.                  'append
  129.                  (mapcar
  130.                    '(lambda (x)
  131.                       (if (= 10 (car x))
  132.                         (list (cdr x))
  133.                       )
  134.                     )
  135.                    (entget ename)
  136.                  )
  137.                )
  138.   )
  139.   (> (apply
  140.        '+
  141.        (mapcar
  142.          'calo2a
  143.          (cons (last ptlist) (reverse (cdr (reverse ptlist))))
  144.          ptlist
  145.        )
  146.      ) 0
  147.   )
  148. )






  149. (vl-load-com)
  150. (defun c:zdpywgj (/ old_os ss m n en obj endt ename pt10 pt11 ang endt01 endt02
  151.                 xx judgement enx date lay pt1 pt2 myss ss1 ss2 dst
  152.              )
  153.   (princ "\n批量自动偏移为钢筋=ZDPYWGJ=【海盗曹跬步+27/2013.01.29】")
  154.   (princ "\n***>>>>>Welcome to 批量自动偏移为钢筋<<<<<***")
  155.   (setq old_os (getvar "osmode"))
  156.   (setvar "osmode" 0)
  157.   (setvar "cmdecho" 0)
  158.   (setq enx (car (entsel "\n选择操作的图层<退出>:")))
  159.   (setq date (entget enx))
  160.   (setq lay (cdr (assoc 8 date)))
  161.   (princ (strcat "\n选中了图层【" lay "】"))
  162.   (setq pt1 (getpoint "\n请输入第一个角点:"))
  163.   (setq pt2 (getpoint "\n请输入第二个角点:"))
  164.   (if (null (setq dst (getdist (strcat "\n输入偏移距离(向内为负,向外为正)<目前为"
  165.                                        (rtos (getvar "OFFSETDIST") 2 0) ">:"
  166.                                )
  167.                       )
  168.             )
  169.       )
  170.     (setq dst (getvar "OFFSETDIST"))
  171.     (setvar "OFFSETDIST" dst)
  172.   )
  173.   (setq ss (ssget "_c" pt1 pt2 (list (cons 8 lay) (cons 0 "*line")))
  174.         m (sslength ss)
  175.         n 0
  176.   )
  177.   (command "_undo" "_be")
  178.   (command "_.ucs" "")
  179.   (while (< n m)
  180.     (setq en (ssname ss n))

  181.     (setq judgement (clockwisep en))
  182.     (if (= judgement t)
  183.       (progn
  184.         (fx)
  185.         (setq endt (entget en))
  186.         (setq ename (cdr (assoc 0 endt)))
  187.         (if (member ename (list "XLINE" "RAY"))
  188.           (progn
  189.             (setq pt10 (cdr (assoc 10 endt))
  190.                   pt11 (cdr (assoc 11 endt))
  191.                   ang (atan (/ (cadr pt11) (car pt11)))
  192.             )
  193.             (setq endt01 (subst
  194.                            (cons 10 (polar pt10 (+ ang (* 0.5 pi)) 10))
  195.                            (assoc 10 endt)
  196.                            endt
  197.                          )
  198.             )
  199.             (entmake endt01)
  200.             (setq endt02 (subst
  201.                            (cons 10 (polar pt10 (- ang (* 0.5 pi)) 10))
  202.                            (assoc 10 endt)
  203.                            endt
  204.                          )
  205.             )
  206.             (entmake endt02)
  207.           )
  208.           (progn
  209.             (setq obj (vlax-ename->vla-object en))
  210.             (vl-catch-all-apply '(lambda (xx)
  211.                                    (vla-offset xx (- 0 dst)) ; (vla-offset
  212.                                        ; xx -70)
  213.                                  ) (list obj)
  214.             )
  215.           )
  216.         )
  217.       )
  218.       (progn
  219.         (setq endt (entget en))
  220.         (setq ename (cdr (assoc 0 endt)))
  221.         (if (member ename (list "XLINE" "RAY"))
  222.           (progn
  223.             (setq pt10 (cdr (assoc 10 endt))
  224.                   pt11 (cdr (assoc 11 endt))
  225.                   ang (atan (/ (cadr pt11) (car pt11)))
  226.             )
  227.             (setq endt01 (subst
  228.                            (cons 10 (polar pt10 (+ ang (* 0.5 pi)) 10))
  229.                            (assoc 10 endt)
  230.                            endt
  231.                          )
  232.             )
  233.             (entmake endt01)
  234.             (setq endt02 (subst
  235.                            (cons 10 (polar pt10 (- ang (* 0.5 pi)) 10))
  236.                            (assoc 10 endt)
  237.                            endt
  238.                          )
  239.             )
  240.             (entmake endt02)
  241.           )
  242.           (progn
  243.             (setq obj (vlax-ename->vla-object en))
  244.             (vl-catch-all-apply '(lambda (xx)
  245.                                    (vla-offset xx (- 0 dst)) ;
  246.                                        ; (vla-offset xx -70)
  247.                                  ) (list obj)
  248.             )
  249.           )
  250.         )
  251.       )
  252.     )
  253.     (command "_.change" (entlast) "" "p" "la" "rein" "")
  254.     (setq n (1+ n))
  255.   )
  256.   (setq ss1 (ssget "_c" pt1 pt2 '((8 . "rein"))))
  257.   (repeat (sslength ss1)
  258.     (command "._explode" ss1)
  259.   )
  260.   (setq ss2 (ssget "_c" pt1 pt2 '((8 . "rein"))))
  261.   (command "_.pedit" "m" "p" "" "y" "w" "30" "")
  262.   (setvar "osmode" old_os)
  263.   (command "_.ucs" "_p")
  264.   (command "_.undo" "_e")
  265.   (setvar "cmdecho" 1)
  266.   (princ "\n***>>>>>End of 批量自动偏移为钢筋<<<<<***")
  267.   (princ)
  268. )


ZDPYWGJ-自动偏移(画大样).lsp

6.46 KB, 下载次数: 223, 下载积分: D豆 -1 , 活跃度 1

评分

参与人数 1D豆 +5 贡献 +1 收起 理由
newer + 5 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 268个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-2-27 19:57 , Processed in 0.177679 second(s), 44 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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