乐筑天下

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

[编程交流] 总长度

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:05:08 | 显示全部楼层 |阅读模式
我正在做管道规划,我需要找到管道的总长度。我找到了这个lisp例程(如下),它工作得很好。唯一的问题是它以十进制单位显示结果,我想要英尺和英寸。如果它能以与图纸相同的单位显示总长度,我会很高兴。你能帮忙吗。
 
谢谢
 
(普林斯
“\nTotalADDition v.1.0已激活!-运行”TADD“启动或”TADD-r“结束。”
)
 
(defun c:tadd(/itemarea itemPerior itemlinelength)
项目弧长项目样条长度项目区域周长项目周长
项目样条参数项目样条参数项目样条长度项目跟踪长度
项目弧长项目椭圆长度a b c d p1 p2项目长度tarea tperim T长度
)
(vl load com)
(defun*oo\u object\u modification*(objreactor objectsmodified)
(setq selected_objects(vla get pickfirstselectionset
(vla get activedocument(vlax get acad object))
)
)
(setq项区域0
项目周长0
itemlinelength 0
itemarclength 0
项目长度0
项目区域周长0
项目周长0
ItemSplinePeriometer 0
项目参数0
项目长度0
itemtracelength 0
itemarclength 0
项目长度0
)
;面积
(n个选定_对象的vlax
(如果(vlax-property-available-p n’区域)
(if(eq(vla get objectname n)“AcDbRegion”)
(setq itemarea(+itemarea(vla get area n)))
(如果(vlax曲线闭合n)
(setq itemarea(+itemarea(vla get area n)))
)
)
)
;;圆形
(if(vlax-property-available-p n’圆周)
(setq ItemPercentage(+ItemPercentage(vla get percentage n)))
)
;;样条曲线
(if(eq(vla get objectname n)“AcDbSpline”)
(如果(vlax曲线闭合n)
(setq itemsplineperimeter(+itemsplineperimeter
(vlax curve getdistatparam n(vlax curve getendparam n))
)
)
(setq itemsplinelength(+itemsplinelength
(vlax curve getdistatparam n(vlax curve getendparam n))
)
)
)
)
;;地区
(if(eq(vla get objectname n)“AcDbRegion”)
(setq itemregionperiod(+itemregionperiod(vla get period n)))
)
;;普林线
(if(or(eq(vla get objectname n)“AcDb2dPolyline”)
(eq(vla get objectname n)“AcDbPolyline”)
)
(如果(vlax曲线闭合n)
(setq itemplineperimeter(+itemplineperimeter
(vlax curve getdistatparam n(vlax curve getendparam n))
)
)
(setq ITEMPLINELENGHT(+ITEMPLINELENGHT
(vlax curve getdistatparam n(vlax curve getendparam n))
)
)
)
)
;;生产线
(if(eq(vla get objectname n)“AcDbLine”)
(setq itemlinelength(+itemlinelength(vla get length n)))
)
;;弧
(if(eq(vla get objectname n)“AcDbArc”)
(setq itemarclength(+itemarclength(vla get arclength n)))
)
(if(eq(vla get objectname n)“AcDbEllipse”)
(setq itemellipselength(+itemellipselength
(vlax curve getdistatparam n(vlax curve getendparam n))
)
)
)
;;跟踪
(if(eq(vla get objectname n)“AcDbTrace”)
(progn(setq plist(vlax safearray->列表
(vlax变量值(vla get坐标n))
)
)
(setq a(列表(第n个0 plist)(第n个1 plist)(第n个2 plist)))
(setq b(列表(第n个3 plist)(第n个4 plist)(第n个5 plist)))
(setq c(列表(第6个plist)(第7个plist)(第8个plist)))
(setq d(列表(第n个9 plist)(第n个10 plist)(第n个11 plist)))
(setq p1(极轴a(角度a b)(/(距离a b)2.0)))
(setq p2(极坐标c(角度c d)(/(距离c d)2.0)))
(setq itemtracelength(+itemtracelength(距离p1 p2)))
)
)
)
;;_结束vlax for
(setq项周长(+项周长)
项目SplinePerimeter
项目区域周长
项目参数
)
)
(setq itemlength(+itemplinelength itemsplinelength itemlinelength itemtracelength itemarclength itemellipselength)
)
(setq tarea(rtos项目区域2)
(setq tperim(rtos项目周长2)
(设置长度(rtos itemlength 2)
(acet ui状态(strcat“Toatl Area:”tarea“\n”“总周长:”tperim“\n”
“总长度:”t长度)
)
)
;;对象选择
(如果oo\u object\u修改
(progn(vlr remove oo\u object\u modification)
(setq oo\u object\u modification nil)
)
)
(setq oo_object_修改
(vlr其他反应堆

'(:vlr pickfirstmodified.*oo\u object\u modification*)
)
)
;;命令已结束
(如果oo\u object\u modification\u action
(progn(vlr remove oo\u object\u modification\u action)
(setq oo\u object\u modification\u action nil)
)
)
(setq oo\u object\u modification\u动作
(vlr命令反应堆零
“(:vlr命令结束。*oo\u object\u修改*)
;(:vlr命令已取消。*oo\u object\u modification\u CANCEL*)
)
)
)
)
 
 
(定义c:TADD-r()
 
(如果oo\u object\u modification\u action
(progn(vlr remove oo\u object\u modification\u action)
(setq oo\u object\u modification\u action nil)
)
)
(如果oo\u object\u修改
(progn(vlr remove oo\u object\u modification)
(setq oo\u object\u modification nil)
)
)
)
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 23:44:16 | 显示全部楼层
将信息提取到可以放置在Excel中的格式,添加将十进制英寸转换为英尺/英寸的必要公式,并让电子表格完成这项工作。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:11:24 | 显示全部楼层
更改这些:
 
  1. (setq tarea (rtos itemarea 2 )
  2. (setq tperim (rtos itemperimeter 2 )
  3. (setq tlength (rtos itemlength 2 )

 
收件人:
  1. (setq tarea (rtos itemarea))
  2. (setq tperim (rtos itemperimeter))
  3. (setq tlength (rtos itemlength))

 
从Autocad帮助:
 
 
ymg公司
 
P、 请编辑您的帖子,在代码周围添加代码标签
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:17 , Processed in 0.415028 second(s), 58 queries .

© 2020-2025 乐筑天下

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