乐筑天下

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

[编程交流] 将多段线与另一条对齐

[复制链接]

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 19:39:36 | 显示全部楼层 |阅读模式
你好,朋友们
我想帮助对齐另一条多段线的顶点并标记这些顶点
如附图所示
谢谢
alignpoly。图纸
回复

使用道具 举报

3

主题

24

帖子

21

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:38:52 | 显示全部楼层
你好,motee-z,给你:
  1. (defun c:proftodist (/ sourcepl targetpl vlpl polydata verli hdist cnt pointlst)
  2. (vl-load-com)
  3. (setq        sourcepl (car (entsel "\nSelect source polyline: ")) ; Get source polyline
  4. targetpl (car (entsel "\nSelect target polyline: ")) ; Get target polyline
  5. vlpl         (vlax-ename->vla-object targetpl)
  6.                                 ; Convert target polyline data to vla-object
  7. polydata (entget sourcepl)        ; Get source polyline data
  8. verli         (list)                        ; Define an empty list for vertices
  9. )
  10. (foreach v polydata                        ; Append vertices from source polyline
  11.    (if        (= 10 (car v))
  12.      (setq verli (append verli (list (cdr v))))
  13.    )
  14. )
  15. (setq        verli (vl-sort verli
  16.                (function (lambda (x1 x2) (< (car x1) (car x2))))
  17.       )                                ; Sort vertices in ascending order on x axis
  18. hdist (list)                        ; Create an empty list for horizontal distances
  19. cnt   0
  20. )                                        ; Set up a counter
  21. (while (/= cnt (1- (length verli)))        ; Append cumulated horizontal distances
  22.    (if        (= cnt 0)
  23.      (setq
  24. hdist (append hdist
  25.               (list (- (car (nth (1+ cnt) verli)) (car (nth cnt verli))))
  26.       )
  27.      )
  28.      (setq hdist (append hdist
  29.                   (list
  30.                     (+ (- (car (nth (1+ cnt) verli)) (car (nth cnt verli)))
  31.                        (last hdist)
  32.                     )
  33.                   )
  34.           )
  35.      )
  36.    )
  37.    (setq cnt (1+ cnt))
  38. )
  39. (setq pointlst (list))                ; Create an emplty list for the resulting vertices
  40. (foreach d hdist
  41.    (setq pointlst (append pointlst (list (vlax-curve-GetpointatDist vlpl d))))
  42. )
  43. (foreach p pointlst                        ; Create the points along the target polyline
  44.    (entmake
  45.      (list
  46. '(0 . "POINT")
  47. '(100 . "AcDbEntity")
  48. '(62 . 256)
  49. (cons 8 "markchainage")
  50. '(100 . "AcDbPoint")
  51. (cons 10 p)
  52.      )
  53.    )
  54. )
  55. (princ)
  56. )

 
如果这是你要找的,请告诉我!
 
关于CAD89
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 20:58:07 | 显示全部楼层
谢谢您的回复
干得好
但是,除了点之外,还可以创建具有顶点的多段线
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:22 , Processed in 0.397773 second(s), 58 queries .

© 2020-2025 乐筑天下

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