乐筑天下

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

[编程交流] 多段线公里

[复制链接]

4

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:37:06 | 显示全部楼层 |阅读模式
大家好,
 
我有一个挑战,沿多段线放置文本标记。由于该多段线表示线性对象的轨迹(在我的示例中是电缆线),我希望从线的起点开始每隔250m的长度表示为“X+YYY”,其中X是公里,YYY是米。此外,最好从每个顶点开始计算长度。
有人能帮我吗,因为我不懂lisp编程。
 
提前致以问候和感谢!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:14:27 | 显示全部楼层
你能用一个示例来展示一个绘图,用户应该提供什么样的信息?
回复

使用道具 举报

4

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 18:33:55 | 显示全部楼层
对不起,我现在所在的地方没有CAD软件,但我有一张图片,正好显示了我要找的东西 183709s1k0h00y03llbkby.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:44:35 | 显示全部楼层
Sadefa&Tharwat这么多版本已经在这里了,只需搜索“链测长度”,大多数可以简单地更改以反映3+500
 
这里有一个不确定它来自哪里,但它确实提到了使用+
[code];pline的链测长度标签;但是,如果您想要其他任何内容,您可以更改“+”,如果您不想要它,只需将其更改为“-空字符串(defun div error(msg)(if(vl position msg’(“控制台中断”函数取消了“退出/退出中止”))(princ“error!”)(princ msg))(while(>(getvar“cmdactive”)0)(命令))(setq*error*olderror)(princ))(defun divplus(len segm/num lst)(setq num(fix(/len segm)))(setq cnt 0)(while(=len 0。)(setq lst(append lst(list len))(setq len(-len segm)))(if(not(zerop(last lst)))(setq lst(append lst(list 0.0)))lst)(defun alg ang(obj pnt)(角度'(0.0.0。)(vlax curve getfirstderiv obj(vlax curve getparamatpoint obj pnt))(defun answer(quest/wshl ans)(或(vl load com))(setq wshl(vlax get或create object“WScript.Shell”))(setq ans(vlax invoke method wshl’Popup quest 7)回答这个问题:vlax vbYesNo)(vlax release object wshl)(cond((=ans 6)(setq opt T))(=ans 7)(setq opt nil)))opt);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun make station(bname/acsp adoc atprom attag at_obj blk\u obj hgt lay line\u obj sfar)(vl load com)(setq adoc(vla get activedocument(vlax get acad object))(if(and(=(getvar“tilemode”)0)(=(getvar“cvport”)1))(setq acsp(vla get paperspace adoc))(setq acsp(vla get modelspace adoc))(vla startundomark adoc)(if(not(tblsearch“block”bname))(progn(setq attag“NUMBER”;(strcase(getstring“\n属性标记:\n”))atprom“NUMBER”;(strcase(getstring T“\n属性提示:\n”))hgt 1.0;(getreal“\n属性文本高度:”)(setq lay(getvar“clayer”))(setvar“clayer”0”)(setvar“attreq”0)(setq line\u obj(vlax invoke acsp“Addline”(0.-3.0。)(列表0。(*hgt 2。)(vla put color line\u obj acred)(setq blk\u obj(vla add(vla get blocks adoc)(vlax-3d-point’(0.0.0))bname)sfar(vlax safearray fill(vlax make safearray vlax vbObject’(0.0))(list line_obj))(vla copyobjects adoc sfar blk_obj);;;RetVal=对象。AddAttribute(高度、模式、提示、插入点、标记、值)(setq at_obj(vla AddAttribute blk_obj hgt acattributemodemodedeverify atprom(vlax-3d-point)(0 10.0))attag“0”)(vla put rotation at_obj(*pi 1.5))(vlax release object blk\u obj))(progn(princ“\n\t>>块已存在!\n”)(princ))(if(tblsearch“Block”bname)t(progn(alert“不可能添加块”))(setvar“attreq”1)(setvar“clayer”lay)(vl catch all apply(函数(lambda()(vla delete line_obj))(vla regen adoc acactiveviewport)(vla endundomark adoc)(vlax release object acsp)(vlax release object adoc)(princ);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(或(vl load com))(defun C:d10(/*error*acsp adoc appd div error len num olderror pl pt pt pt_list step util)(或adoc(setq adoc(vla get activedocument(vlax get acad object)))(或appd(setq appd(vla get application adoc))(或acsp(setq acsp(vla get block(vla get activelayout adoc))(或util(setq util(vla get utility adoc))(setq olderor*error*)(setq*error*div error)(if(not(tblsearch“block”“Station”)(make Station“Station”))(vla getentity util“pl”pt“\n选择要开始测量的点附近的线:>>>>\n”)(if pl(progn(setq step 100)(setq opt(答案“垂直于线旋转文本?”)(如果(非步骤)(setq步骤10)(setq len(vlax curve getdistatparam pl(vlax curve getendparam pl))(if(<(distance(vlax safearray->list pt)(vlax curve getstartpoint pl))(distance(vlax safearray->list pt)(vlax curve getendpoint pl))(setq pt\u list(divplus len step))(setq pt\u list(div减去len step))(setq pt\u list(vl remove if(function not)(mapcar(function(lambda(x)(vlax curve getpointatdist pl x)))pt\u list))(setq num 0)(mapcar(函数(lambda(x/dr ang att\u list at blk\u obj)(progn(setq ang(alg ang pl x)ang(cond((<(/pi 2)ang(*pi 1.5))(+pi ang))(T ang)))(setq blk\u obj(vlax invoke acsp'Insertblock x“Station”5 5 ang))(setq att\u list(vlax invoke blk\u obj'Getattributes))(foreach at att\u list(if(eq(vlax get at'Tagstring)“NUMBER”)(progn(vlax放在“Textstring”(如果(
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:29 , Processed in 0.548712 second(s), 62 queries .

© 2020-2025 乐筑天下

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