乐筑天下

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

[编程交流] 沿多段线分布点

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:44:55 | 显示全部楼层 |阅读模式
你好
 
在我的另一篇文章之后:沿具有特定长度间隔的多段线分布顶点
 
i'v决定发布一个新线程,因为已经发布了点和顶点。所以这个标题就不那么描述性了。
考虑沿多段线分布VET以查找Y值是一个非常糟糕的主意,因为发布的多段线可以有自己的顶点。
 
因此,我想将点作为Y传感器,而不是顶点。点的分布方式应该与顶点的分布方式完全相同,但我希望得到点,而不是顶点。
我收集了一个代码,我试图自己编辑它,但没有成功。
 
希望有大师能帮我
 
谢谢
谢伊
 
 
  1.    (defun c:demo2 (/ getPoly ptst pten wall front back exist in seglen pt ppt pc
  2.            pr ptList)
  3.      (vl-load-com)
  4.      (defun getPoly (ent msg);
  5.        (if    (setq ent (car (entsel msg)))
  6.          (if (eq (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
  7.        ent
  8.          ) ;_if
  9.          (alert "\nThe selected object is not a polyline")
  10.        ) ;_if
  11.      )
  12.      (if (and
  13.        (setq ptst (getpoint "\nStart point of path: "))
  14.        (setq pten (getpoint ptst "\nEndpoint of path: "))
  15.          )
  16.        (progn
  17.          (setq wall (getPoly wall "\nSelect Wall eleveation line"))
  18.          (redraw wall 3)
  19.          (setq front (getPoly front "\nSelect Front eleveation line"))
  20.          (redraw front 3)
  21.          (setq back (getPoly back "\nSelect Back eleveation line"))
  22.          (redraw back 3)
  23.          (setq exist (getPoly exist "\nSelect Exist eleveation line"))
  24.          (mapcar '(lambda (e) (redraw e 4)) (list wall front back))
  25.    ;;;     testing purposes only                ;;;
  26.    ;;;     insert your interval "thingy" here instead    ;;;
  27.          (Setq in 6.25
  28.            seglen in
  29.            ptList nil
  30.          )
  31.    ;;;                            ;;;
  32.      (setq spc (vla-get-modelspace
  33.                   (vla-get-activedocument (vlax-get-acad-object))
  34.          (while (Setq pt (vlax-curve-getPointAtDist wall seglen))
  35.        (setq ppt (vlax-curve-getparamatpoint wall pt))
  36.        (vlax-invoke
  37.          (vlax-ename->vla-object wall)
  38.         (vla-addpoint; add point
  39.           spc
  40.           (vlax-3d-point
  41.             (nth n lst);gets coordinates from list
  42.             (nth (setq n (1+ n)) lst)
  43.           )
  44.         )
  45.         (setq n (1+ n))
  46.          (1+ (fix ppt))
  47.          (progn
  48.            (setq ptList (cons (setq p (list (car pt) (Cadr pt))) ptList))
  49.            p
  50.          )
  51.        )
  52.        (setq seglen (+ seglen in))
  53.          )
  54.          (foreach pline_ (list front back exist)
  55.        (foreach pt ptList
  56.          (setq
  57.            pc (vlax-curve-getClosestPointToProjection pline_ pt '(0 1 0))
  58.          )
  59.          (setq pr (vlax-curve-getparamatpoint pline_ pc))
  60.          (vlax-invoke
  61.            (vlax-ename->vla-object pline_)
  62.            'AddVertex
  63.            (1+ (fix pr))
  64.            (list (car pc) (Cadr pc))
  65.          )
  66.        )
  67.          )
  68.          (foreach p ptList
  69.        (command "xline" "V" "_non" p "")
  70.          )
  71.        )
  72.      )
  73.      (princ)
  74.    )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:13 , Processed in 0.832213 second(s), 56 queries .

© 2020-2025 乐筑天下

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