samifox 发表于 2022-7-6 06:44:55

沿多段线分布点

你好
 
在我的另一篇文章之后:沿具有特定长度间隔的多段线分布顶点
 
i'v决定发布一个新线程,因为已经发布了点和顶点。所以这个标题就不那么描述性了。
考虑沿多段线分布VET以查找Y值是一个非常糟糕的主意,因为发布的多段线可以有自己的顶点。
 
因此,我想将点作为Y传感器,而不是顶点。点的分布方式应该与顶点的分布方式完全相同,但我希望得到点,而不是顶点。
我收集了一个代码,我试图自己编辑它,但没有成功。
 
希望有大师能帮我
 
谢谢
谢伊
 
 

   (defun c:demo2 (/ getPoly ptst pten wall front back exist in seglen pt ppt pc
         pr ptList)

   (vl-load-com)
   (defun getPoly (ent msg);
       (if    (setq ent (car (entsel msg)))
         (if (eq (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
       ent
         ) ;_if
         (alert "\nThe selected object is not a polyline")
       ) ;_if
   )
   (if (and
       (setq ptst (getpoint "\nStart point of path: "))
       (setq pten (getpoint ptst "\nEndpoint of path: "))
         )

       (progn
         (setq wall (getPoly wall "\nSelect Wall eleveation line"))
         (redraw wall 3)
         (setq front (getPoly front "\nSelect Front eleveation line"))
         (redraw front 3)
         (setq back (getPoly back "\nSelect Back eleveation line"))
         (redraw back 3)
         (setq exist (getPoly exist "\nSelect Exist eleveation line"))
         (mapcar '(lambda (e) (redraw e 4)) (list wall front back))
   ;;;   testing purposes only                ;;;
   ;;;   insert your interval "thingy" here instead    ;;;
         (Setq in 6.25
         seglen in
         ptList nil
         )
   ;;;                            ;;;

   (setq spc (vla-get-modelspace
                  (vla-get-activedocument (vlax-get-acad-object))

         (while (Setq pt (vlax-curve-getPointAtDist wall seglen))
       (setq ppt (vlax-curve-getparamatpoint wall pt))
       (vlax-invoke
         (vlax-ename->vla-object wall)
      (vla-addpoint; add point
          spc
          (vlax-3d-point
            (nth n lst);gets coordinates from list
            (nth (setq n (1+ n)) lst)
          )
      )
      (setq n (1+ n))
         (1+ (fix ppt))
         (progn
         (setq ptList (cons (setq p (list (car pt) (Cadr pt))) ptList))
         p
         )
       )
       (setq seglen (+ seglen in))
         )

         (foreach pline_ (list front back exist)
       (foreach pt ptList
         (setq
         pc (vlax-curve-getClosestPointToProjection pline_ pt '(0 1 0))
         )
         (setq pr (vlax-curve-getparamatpoint pline_ pc))
         (vlax-invoke
         (vlax-ename->vla-object pline_)
         'AddVertex
         (1+ (fix pr))
         (list (car pc) (Cadr pc))
         )
       )
         )
         (foreach p ptList
       (command "xline" "V" "_non" p "")
         )
       )
   )
   (princ)
   )



页: [1]
查看完整版本: 沿多段线分布点