fixo 发表于 2022-7-5 18:01:07

 
不同意你的观点
这个程序在任何情况下都适用于我
每条线(平行或不平行)
仅在A2005上测试
顺便说一句,丹尼尔的日常工作对我来说很有效
也很好
下次我建议你附上
一张你的问题示例图
 
~'J'~

motee-z 发表于 2022-7-5 18:04:18

嗨,胖子
SEANT POST附带的图片解释了这个问题
你的路线从2条线的中点创建一条线
第一条线连接在第一条给定线的端点和第二条给定线的端点之间,第二条线连接在第二条给定线的端点和第一条给定线的端点之间
请查看SEANT post
很抱歉

fixo 发表于 2022-7-5 18:08:34

 
哦,我的错
你说得对,对不起
请参阅我的第一个线程中的修订代码
 
~'J'~

pefi 发表于 2022-7-5 18:12:04

另一种观点。。。
 
两条连续白线上的点与绿线的距离相同。。。。
 
新年快乐!
普尔泽莫

fixo 发表于 2022-7-5 18:13:36

 
嗨,朋友,很高兴你回来
你知道我是如此愚蠢,更好了
给我发电子邮件,附上样品图纸和
给老白痴加些解释
 
新年快乐!
 
~'J'~

motee-z 发表于 2022-7-5 18:16:40

嗨freind Fatty
祝你和大家新年快乐
如果两条线不平行,routin只能在两条线的交点上画一个圆,如果平行,可以将其打断以使其变短

pefi 发表于 2022-7-5 18:21:04

你好
我想我们都应该等莫泰-兹说出他想要什么。。。
在我看来,他只需要使用2条线(实线或延伸后)的横截面点作为角度顶点的xline/bisection。
 
 
佩菲
P、 S感谢“邻居”的祝福:眨眼:

VVA 发表于 2022-7-5 18:22:17

这里是我的lisp,用于在两个对象的中间距离绘制多段线
 

(defun C:MPL (/ adoc *error* crvs eps dL pts pt1 pt2 ptc n osm)
(defun *error* (msg)
   (vla-Regen adoc acActiveViewport)
   (vla-EndUndoMark adoc)
   (setvar "OSMODE" osm)
) ;_ end of defun
(vl-load-com)
(setq osm (getvar "OSMODE"))
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-StartUndoMark adoc)
(setvar "CMDECHO" 0)
(setq crvs (mapcar '(lambda (y / en)
                     (setq en
                              (car (entsel (strcat "\nSelect " y " edge: ")))
                     ) ;_ end of setq
                     (if en
                         (redraw en 3)
                     ) ;_ end of if
                     en
                     ) ;_ end of lambda
                  '("first" "second")
            ) ;_ end of mapcar
) ;_ end of setq
(if (vl-some 'null crvs)
   (alert "Shortage!!!")
   (progn
   (mapcar '(lambda (x) (redraw x 4)) crvs)
   (setq crvs (mapcar 'vlax-ename->vla-object crvs))
   (if (apply
         'and
         (mapcar
             '(lambda (x)
                (wcmatch (strcase (vla-get-ObjectName x)) "*LINE,ARC")
            ) ;_ end of lambda
             crvs
         ) ;_ end of mapcar
         ) ;_ end of apply
       (progn
         (setq eps (mapcar '(lambda (x)
                              (- (vlax-curve-getEndParam x)
                                 (vlax-curve-getStartParam x)
                              ) ;_ end of -
                            ) ;_ end of lambda
                           crvs
                   ) ;_ end of mapcar
         ) ;_ end of setq
         (initget 6)
         (setq dL
                (if
                  (setq dL (getint "\nQuantity of reference points <100>: "))
                   dL
                   100
                ) ;_ end of if
         ) ;_ end of setq
         (setq pts (mapcar '(lambda (dp crv / sps pr)
                              (setq n 0)
                              (while (< n dl)
                              (setq pr(* (/ dp dl) n)
                                    pt(vlax-curve-getPointAtParam crv pr)
                                    sps (append sps (list pt))
                                    n   (1+ n)
                              ) ;_ end of setq
                              ) ;_ end of while
                              sps
                            ) ;_ end of lambda
                           eps
                           crvs
                   ) ;_ end of mapcar
         ) ;_ end of setq
         (setq pts
                (mapcar
                  '(lambda (pt pr crv)
                     (append pt
                           (list (vlax-curve-getPointAtParam crv pr))
                     ) ;_ end of append
                   ) ;_ end of lambda
                  pts
                  eps
                  crvs
                ) ;_ end of mapcar
         ) ;_ end of setq
         (setq pts
                (mapcar
                  '(lambda (crv pt)
                     (vl-sort pt
                              '(lambda (t1 t2)
                                 (< (vlax-curve-getDistAtParam
                                    crv
                                    (vlax-curve-getParamAtPoint crv t1)
                                    ) ;_ end of vlax-curve-getDistAtParam
                                    (vlax-curve-getDistAtParam
                                    crv
                                    (vlax-curve-getParamAtPoint crv t2)
                                    ) ;_ end of vlax-curve-getDistAtParam
                                 ) ;_ end of <
                               ) ;_ end of lambda
                     ) ;_ end of vl-sort
                   ) ;_ end of lambda
                  crvs
                  pts
                ) ;_ end of mapcar
         ) ;_ end of setq
         (setq
         pts (mapcar
               '(lambda (x) (mapcar '(lambda (y) (trans y 0 1)) x))
               pts
               ) ;_ end of mapcar
         ) ;_ end of setq
         (setq pt1 (car pts)
               pt2 (cadr pts)
         ) ;_ end of setq
         (if (> (+ (distance (car pt1) (car pt2))
                   (distance (last pt1) (last pt2))
                ) ;_ end of +
                (+ (distance (car pt1) (last pt2))
                   (distance (last pt1) (car pt2))
                ) ;_ end of +
             ) ;_ end of >
         (setq pt2 (reverse pt2))
         ) ;_ end of if
         (setq
         ptc (mapcar
               '(lambda (t1 t2)
                  (polar t1 (angle t1 t2) (* 0.5 (distance t1 t2)))
                  ) ;_ end of lambda
               pt1
               pt2
               ) ;_ end of mapcar
         ) ;_ end of setq
         (setvar "OSMODE" 0)
         (vl-cmdf "_.PLINE" (car ptc) "_W" 0 0)
         (foreach pt (cdr ptc) (vl-cmdf pt))
         (vl-cmdf "")
       ) ;_ end of progn
   ) ;_ end of if
   ) ;_ end of progn
) ;_if apply
(setvar "OSMODE" osm)
(vla-EndUndoMark adoc)
(princ)
) ;_ end of defun

作为边,应选择所有多段线、样条线、圆弧、直线
2、未分析曲线交叉
3.参考点数量-平均线接收曲线在多少部分被破坏

fixo 发表于 2022-7-5 18:27:04

 
我在那里发现了一只小虫子
查看我在原始线程中修改的例程
如果再次出现问题,请告诉我。。。
也谢谢你
 
~'J'~

Danielm103 发表于 2022-7-5 18:30:02

欢迎VVA
页: 1 [2]
查看完整版本: 在中间距离画线