danielk 发表于 2022-7-5 22:52:50

Tw之间的多段线长度

我的任务是自动计算其他两条直线之间的总长度,可能必须首先在交点处断开,最后我需要两条直线之间的总和。
也许程序应该先把这些线转移到另一层,或者类似的东西来改变
 
谢谢

BIGAL 发表于 2022-7-5 23:12:20

你回答了自己的问题,有很多总行长的东西在那里,它可能需要额外的代码位说窗口和层过滤选择集。也许从www.Lee-mac开始。我很确定他Lisp程序。我相信他会帮忙重新编码,使它更明确。 
是的
;;显示选定对象的总长度;;
;;命令行;;
;;--------------------=={Total Length}==---------------;;
;;                                                            ;;
;;------------------------------------------------------------;;
;;作者:Lee Mac,版权所有©2010-www.Lee-Mac。通用域名格式;;

Lee Mac 发表于 2022-7-5 23:25:59

感谢BIGAL的推荐
 
@danielk,以下程序应提供您所需的长度:
 
(defunc:intlen(/app ent idx int lst obj rtn sel tmp)(while(progn(setvar'errno 0)(setqent(car(entsel[]MAROON]))(蓝色]=7(getvar'errno))(princ“\n如果失败,请重试。”)((nullent)nil)(/=“LWPOLYLINE”(cdr(assoc0(entgetent)))(princ[=BRUE]princMAROON]“\n所))(if(=“ename”(typeent))(progn(setqlst(mapcar'cdr(vl remove if not'(lambda(x)(=entget[ent])lst(mapcar'(lambda(x)(apply'(consx lst))'(maxmin)obj(vlax ename->vla objectent)app(apply'vla zoomwindow(cons应用程序(mapcar'vlax-3D-point(反转lst)))(if(sel(apply]'“_C”(append(mapcar'(lambda(p)(transp 0 1))lst(((0。“弧,圆,椭圆,*线”)(-4)。“”)))(progn(ssdelent sel)(repeat(setqidx(sslengthsel))(setqtmp(append(vlax invokeobj'与(vlax ename->vla object(ssnamesel(setqidx(1-idx)))acextendnone)tmp))(vla zoompreviousapp)(repeat(/(lengthtmp)3)(setqint(cons)(vlax curve getclosestpointtoent(list(cartmp)(cadrtmp)(cdddrtmp))(setqint(vl list*(vlax curve getstartpointent)(vlax curve getendpointent)int)rtn’(nilnil)(mapcar(function(lambda(a b)(setqrtn(cons(cons(-b a)(cadr[rtn”)(cdr[(reverse[rtn]))(setq[int(vl sort[(lambda[(x)(vlax曲线getdistatpoint[ent x])int)

danielk 发表于 2022-7-5 23:37:48

首先感谢你的支持,但我没有得到其他两条多段线之间的多段线的长度,我得到了两个结果,我不明白它们指的是什么。我认为这是交叉口两侧的两个长度,但如果我手动检查,结果不一样。
此外,lisp不会提示检查两行,因此有可能获得更多结果。我希望你明白我的意思。。
 
谢谢

Lee Mac 发表于 2022-7-5 23:49:49

下图应说明:
 

danielk 发表于 2022-7-5 23:58:47

 
知道了!天才一如既往!
非常感谢!
页: [1]
查看完整版本: Tw之间的多段线长度