明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 依然小小鸟

[提问] 如何批量偏移?这将是造福结构佬的一个大作,求大神解决~~

  [复制链接]
 楼主| 发表于 2020-2-15 16:45 | 显示全部楼层
至今没解决
回复

使用道具 举报

发表于 2020-2-19 11:16 | 显示全部楼层
本帖最后由 Atsai 于 2020-2-26 09:09 编辑

下面的代码是用封闭曲线去选择其内的物件,选到了分好组再偏移就可以达到需求。
  1. ;;; SelByObj -Gilles Chanteau- 06/10/06
  2. ;;; Cree un jeu de selection avec tous les objets contenus ou
  3. ;;; captures, dans la vue courante, par l'objet selectionne
  4. ;;; (cercle, ellipse, polyligne fermee).
  5. ;;; Arguments :
  6. ;;; - un nom d'entite (ename)
  7. ;;; - un mode de selection (Cp ou Wp)
  8. ;;; - un filtre de selection ou nil
  9. ;;;
  10. ;;; modifie le 19/07/07 : fonctionne avec les objets hors fenetre

  11. ;;; Creates a selection set by crossing or window polygon
  12. ;;; using a curve entity (circle, ellipse or closed polyline)
  13. ;;; Arguments :
  14. ;;; - ename of the entity use for selection
  15. ;;; - selection mode (CP or WP)
  16. ;;; - a selection filter or nil
  17.   (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst ss)
  18.     (vl-load-com)
  19.     (if        (= (type ent) 'ENAME)
  20.       (setq obj (vlax-ename->vla-object ent))
  21.       (setq obj        ent
  22.             ent        (vlax-vla-object->ename ent)
  23.       )
  24.     )
  25.     (cond
  26.       ((member (vla-get-ObjectName obj)
  27.                '("AcDbCircle" "AcDbEllipse")
  28.        )
  29.        (setq dist (/ (vlax-curve-getDistAtParam
  30.                        obj
  31.                        (vlax-curve-getEndParam obj)
  32.                      )
  33.                      50
  34.                   )
  35.              n          0
  36.        )
  37.        (repeat 50
  38.          (setq
  39.            lst
  40.             (cons
  41.               (trans
  42.                 (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n))))
  43.                 0
  44.                 1
  45.               )
  46.               lst
  47.             )
  48.          )
  49.        )
  50.       )
  51.       ((and (= (vla-get-ObjectName obj) "AcDbPolyline")
  52.             (= (vla-get-Closed obj) :vlax-true)
  53.        )
  54.        (setq p_lst (vl-remove-if-not
  55.                      '(lambda (x)
  56.                         (or (= (car x) 10)
  57.                             (= (car x) 42)
  58.                         )
  59.                       )
  60.                      (entget ent)
  61.                    )
  62.        )
  63.        (while p_lst
  64.          (setq
  65.            lst
  66.             (cons
  67.               (trans (append (cdr (assoc 10 p_lst))
  68.                              (list (cdr (assoc 38 (entget ent))))
  69.                      )
  70.                      ent
  71.                      1
  72.               )
  73.               lst
  74.             )
  75.          )
  76.          (if (/= 0 (cdadr p_lst))
  77.            (progn
  78.              (setq prec        (1+ (fix (* 25 (sqrt (abs (cdadr p_lst))))))
  79.                    dist        (/ (- (if (cdaddr p_lst)
  80.                                 (vlax-curve-getDistAtPoint
  81.                                   obj
  82.                                   (trans (cdaddr p_lst) ent 0)
  83.                                 )
  84.                                 (vlax-curve-getDistAtParam
  85.                                   obj
  86.                                   (vlax-curve-getEndParam obj)
  87.                                 )
  88.                               )
  89.                               (vlax-curve-getDistAtPoint
  90.                                 obj
  91.                                 (trans (cdar p_lst) ent 0)
  92.                               )
  93.                            )
  94.                            prec
  95.                         )
  96.                    n        0
  97.              )
  98.              (repeat (1- prec)
  99.                (setq
  100.                  lst (cons
  101.                        (trans
  102.                          (vlax-curve-getPointAtDist
  103.                            obj
  104.                            (+ (vlax-curve-getDistAtPoint
  105.                                 obj
  106.                                 (trans (cdar p_lst) ent 0)
  107.                               )
  108.                               (* dist (setq n (1+ n)))
  109.                            )
  110.                          )
  111.                          0
  112.                          1
  113.                        )
  114.                        lst
  115.                      )
  116.                )
  117.              )
  118.            )
  119.          )
  120.          (setq p_lst (cddr p_lst))
  121.        )
  122.       )
  123.     )
  124.     (cond
  125.       (lst
  126.        (vla-ZoomExtents (vlax-get-acad-object))
  127.        (setq ss (ssget (strcat "_" opt) lst fltr))
  128.        (vla-ZoomPrevious (vlax-get-acad-object))
  129.        ss
  130.       )
  131.     )
  132.   )




本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2020-2-19 13:23 | 显示全部楼层
本帖最后由 wudechao 于 2020-2-19 13:24 编辑
20060510412 发表于 2019-1-8 08:53
E派工具箱,功能强大,程序数量也多,但是太臃肿了,为了一两个功能,需要加载那么多不需要的功能,所以 ...

我也如此,附加功能没有源代码的不用。cad是因为无法剥离无用功能,所以只能装完整版。
回复

使用道具 举报

发表于 2021-3-4 12:35 | 显示全部楼层
新开一贴,看看是否符号要求:http://bbs.mjtd.com/thread-183094-1-1.html
回复

使用道具 举报

发表于 2021-4-14 20:00 | 显示全部楼层
本帖最后由 lee50310 于 2021-4-15 08:36 编辑

請問你程式的需求是希望達到 如 2樓動態圖所演示的那樣嗎?
還是照你原本半成品程式的詢問方式
如:
1."請輸入偏移方式[正向(Z)/反向(F)/雙向(S)/通過(T)]<"
2.請輸入偏移距離
3.請選擇基點
回复

使用道具 举报

 楼主| 发表于 2021-4-15 10:53 | 显示全部楼层
lee50310 发表于 2021-4-14 20:00
請問你程式的需求是希望達到 如 2樓動態圖所演示的那樣嗎?
還是照你原本半成品程式的詢問方式
如:

我希望的结果是 动态图里面的效果   我帖子里面的CAD测试图也有一部分展示
回复

使用道具 举报

发表于 2021-4-18 15:17 | 显示全部楼层
本帖最后由 lee50310 于 2021-4-20 13:50 编辑
我希望的结果是 动态图里面的效果

依你的需求,程式已寫好並在cad2018測試 ok
我稍微整理一下再發表,請耐心等待





回复

使用道具 举报

 楼主| 发表于 2021-4-19 11:05 | 显示全部楼层
lee50310 发表于 2021-4-18 15:17
依你的需求,程式已寫好並在cad2018測試 ok
我稍微整理一下再發表,請耐心等待

期待
回复

使用道具 举报

发表于 2021-4-20 13:53 | 显示全部楼层
讓你久等了!  
請到此處下載
http://bbs.mjtd.com/thread-183326-1-1.html
回复

使用道具 举报

发表于 2022-10-13 16:17 | 显示全部楼层
很有用,能自动换了颜色,向内向外都行,太给力了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 06:33 , Processed in 0.228876 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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