乐筑天下

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

[编程交流] 左角总长度

[复制链接]

28

主题

77

帖子

64

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 16:55:17 | 显示全部楼层 |阅读模式
我试图得到单个柱脚的总长度,并将文本放在柱脚的左角,但没有成功。
我加入了我发现的两个lisp,但问题是我需要选择两次相同的pline。
有人能帮我修一下吗?
我还提到了finel resault

                               
登录/注册后可看大图

 
  1. (defun c:LPL (/ e ss l i OBJ P1 P2)
  2.    (if
  3.    (setq l 0.0 ss (ssget '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,ELLIPSE"))))
  4.    (progn
  5.        (repeat (setq i (sslength ss))
  6.        (setq e (ssname ss (setq i (1- i)))
  7.            l (+ l (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
  8.        )
  9.    )
  10.    (if
  11.        (if (and (setq OBJ (car (entsel "\nSelect PL:")))
  12.        (setq OBJ (vlax-ename->vla-object OBJ))
  13.        )
  14.        (progn
  15.        (vla-getboundingbox OBJ 'P1 'P2)
  16.        (setq P1(vlax-safearray->list P1))   
  17.        )  
  18.        )
  19.    (entmake
  20.    (list
  21.            '(0 . "TEXT")
  22.            '(100 . "AcDbText")
  23.            (cons 10 (trans p1 1 0))
  24.            (cons 40 (/ 5.0 (getvar 'cannoscalevalue)))
  25.            (cons 1 (rtos l))
  26.          )
  27.        )
  28.        (princ (strcat "\nTotal length = " (rtos l)))
  29.      )
  30.    )
  31. )
  32. (princ)
  33. )

175520gfyfixu1ygmmyckc.png
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:22:38 | 显示全部楼层
你几乎做到了。。。
 
  1. (defun c:LPL ( / e ss l i OBJ P1 P2 )
  2. (if (setq ss (ssget '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,ELLIPSE"))))
  3.    (repeat (setq i (sslength ss))
  4.      (setq e (ssname ss (setq i (1- i)))
  5.            l (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
  6.      )
  7.      (setq OBJ (vlax-ename->vla-object e))
  8.      (vla-getboundingbox OBJ 'P1 'P2)
  9.      (setq P1 (vlax-safearray->list P1))   
  10.      (entmake
  11.        (list
  12.          '(0 . "TEXT")
  13.          '(100 . "AcDbText")
  14.           (cons 10 [b][color=red](mapcar '+ P1 (list 0.0 (- (/ 10.0 (getvar 'cannoscalevalue))) 0.0))[/color][/b])
  15.           (cons 40 (/ 5.0 (getvar 'cannoscalevalue)))
  16.           (cons 1 [b][color=red](strcat "L=" (rtos l))[/color][/b])
  17.        )
  18.      )
  19.      (princ (strcat "\nTotal length = " (rtos l)))
  20.    )
  21. )
  22. (princ)
  23. )
HTH。,M、 R。
回复

使用道具 举报

28

主题

77

帖子

64

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:27:04 | 显示全部楼层
Thx marko公司
在哪一行我需要加上“l=”
我怎样才能改变文本在柱脚线下的位置呢?
 
无论如何,再次谢谢你
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:51:05 | 显示全部楼层
我已经编辑了我的回复。。。
回复

使用道具 举报

28

主题

77

帖子

64

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 18:00:26 | 显示全部楼层
再次使用Thx
完美的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-23 13:37 , Processed in 2.295616 second(s), 65 queries .

© 2020-2025 乐筑天下

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