不同意你的观点
这个程序在任何情况下都适用于我
每条线(平行或不平行)
仅在A2005上测试
顺便说一句,丹尼尔的日常工作对我来说很有效
也很好
下次我建议你附上
一张你的问题示例图
~'J'~ 嗨,胖子
SEANT POST附带的图片解释了这个问题
你的路线从2条线的中点创建一条线
第一条线连接在第一条给定线的端点和第二条给定线的端点之间,第二条线连接在第二条给定线的端点和第一条给定线的端点之间
请查看SEANT post
很抱歉
哦,我的错
你说得对,对不起
请参阅我的第一个线程中的修订代码
~'J'~ 另一种观点。。。
两条连续白线上的点与绿线的距离相同。。。。
新年快乐!
普尔泽莫
嗨,朋友,很高兴你回来
你知道我是如此愚蠢,更好了
给我发电子邮件,附上样品图纸和
给老白痴加些解释
新年快乐!
~'J'~ 嗨freind Fatty
祝你和大家新年快乐
如果两条线不平行,routin只能在两条线的交点上画一个圆,如果平行,可以将其打断以使其变短 你好
我想我们都应该等莫泰-兹说出他想要什么。。。
在我看来,他只需要使用2条线(实线或延伸后)的横截面点作为角度顶点的xline/bisection。
佩菲
P、 S感谢“邻居”的祝福:眨眼: 这里是我的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.参考点数量-平均线接收曲线在多少部分被破坏
我在那里发现了一只小虫子
查看我在原始线程中修改的例程
如果再次出现问题,请告诉我。。。
也谢谢你
~'J'~ 欢迎VVA
页:
1
[2]