乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 97|回复: 3

[编程交流] 块多段线现有代码e

[复制链接]

4

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:44:48 | 显示全部楼层 |阅读模式
大家好
 
我正在尝试修改一个代码,我一直在使用该代码将块放置在距多段线起点一定距离的位置。
 
我想要实现的是将相同的块放置在多段线的另一侧(从起点到第一条线的距离相同),并且能够一次选择多条多段线,因为代码现在适用于一条多段线。
 
谁能帮我做到这一点?
 
  1. (defun C:dampers(/ ang cumm_dist dis dist_list leng obj pt)
  2. (vl-load-com)
  3. ;; build master list of the distances, starting from 0.0 - important!
  4. (setq dist_list '(2.0))
  5. (setq cumm_dist (apply '+ dist_list))
  6. (setq dis 0.0)
  7. (setq obj (vlax-ename->vla-object (car (entsel "\n >> Select profile >>"))))
  8. (setq leng (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj)))
  9. ;; check if pline length is not less than the cumulative distance
  10. (if (< leng cumm_dist)
  11.    (progn
  12.      (alert "Pline length is less then summary distance")
  13.      (princ)
  14.      )
  15.    
  16. (while (< dis cumm_dist)
  17. (setq dis (+ dis (car dist_list)))
  18. (setq pt (vlax-curve-getpointatdist obj dis))
  19. ;;;***
  20. ;;to insert block named "vibr":
  21. ;; get angle:
  22. (setq ang (angle '(0 0 0)
  23.               (vlax-curve-getfirstderiv obj
  24.                 (vlax-curve-getparamatpoint obj pt))))
  25. ;;insert block:  
  26. (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
  27.    'InsertBlock pt "vibr" 1 1 1 ang);***
  28. )
  29. (princ)
  30. )

阻尼器。lsp
输出图纸
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 17:13:56 | 显示全部楼层
试试这个,可以处理多条多段线:
  1. (defun c:test (/ a b c d i)
  2. (vl-load-com)
  3. (princ "\n >> Select profiles >>")
  4. (if (and (setq a (ssget '((0 . "*polyline"))))
  5.    (setq d (getreal "\nSpecify Distance Interval : "))
  6.      )
  7.    (repeat (setq i (sslength a))
  8.      (setq b (vlax-ename->vla-object (ssname a (setq i (1- i)))))
  9.      (setq c (vla-get-length b))
  10.      (if (> c d)
  11. (foreach x (list (vlax-curve-getpointatdist b d)
  12.                  (vlax-curve-getpointatdist b (- c d))
  13.            )
  14.   (vla-insertblock
  15.     (vla-get-modelspace
  16.       (vla-get-activedocument (vlax-get-acad-object))
  17.     )
  18.     (vlax-3d-point x)
  19.     "vibr"
  20.     1
  21.     1
  22.     1
  23.     (angle '(0 0 0)
  24.            (vlax-curve-getfirstderiv
  25.              b
  26.              (vlax-curve-getparamatpoint b x)
  27.            )
  28.     )
  29.   )
  30. )
  31.      )
  32.    )
  33. )
  34. (princ)
  35. )
回复

使用道具 举报

4

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:35:32 | 显示全部楼层
非常感谢。它工作完美!
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 17:50:30 | 显示全部楼层
不客气
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 14:02 , Processed in 0.357712 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表