乐筑天下

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

[编程交流] 测量a线的Lisp例程

[复制链接]

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:58:08 | 显示全部楼层 |阅读模式
大家好,我是这个论坛的新手,对编程lisp例程知之甚少。我通常只是偶尔遇到一些,然后将它们添加到我的AutoCAD安装中。
 
我正在寻找一个Lisp例程,它可以测量我选择的2d线条,然后提示我选择一个现有的文本,将线条的长度添加到文本中。
 
基本上我有一个墙轮廓,上面有墙号。我想能够点击一条墙来测量它。然后提示单击多行或单行文字,将长度添加到文字末尾,并用空格和等号将两者分隔开来。希望能够保持在英尺和英寸,如下图所示或基于什么绘图单位设置?
 
 
示例(请不要对我的文字绘制技能笑得太多):
 
墙1
______________________________
|_____________________________|
 
 
墙1=5’3 1/2“
______________________________
|_____________________________|
 
所以顶部是之前,底部是之后。
 
如果有人知道一个可以做到这一点的例程,并能给我指出来,那就太棒了!
 
如果不是,对于初学者来说,编写代码会不会过于复杂?我只是需要一些关于如何开始的指导。或者有人可以帮我编码眨眼:
 
谢谢你的帮助!
 
-埃文
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 17:02:07 | 显示全部楼层
已经有lisp例程可以测量线的长度,并将该测量放在线的上方。唯一需要添加的是墙号。我认为论坛成员LeeMac和/或alanjt发布了lisp例程,您可以学习并将其用作新例程的基础。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 17:05:38 | 显示全部楼层
Lee和我都发布了类似的例程,但为什么不使用带有前缀的维度呢?
回复

使用道具 举报

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:09:28 | 显示全部楼层
 
这是我来到这里的常规,但这不是我想要做的100%。我在浏览代码,但它似乎在我的头上。这是把我带到这里的线索:
http://www.cadtutor.net/forum/showthread.php?56656-Lisp帮助选择多行并标记它们
回复

使用道具 举报

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:13:36 | 显示全部楼层
 
我正在使用的生成器需要一个没有尺寸的单独布局,只需在墙上方显示文字,并带有文字的墙的长度。我正在努力使我尽可能容易地满足建设者的要求。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:16:35 | 显示全部楼层
根据Alanjt设置尺寸。您可以关闭所有线条,以便只显示文本,分解尺寸将其转换为纯文本。
 
你有没有看过那些lisp例程,建议他们可以一次标记很多行,然后我会运行一个替代的lisp,添加墙标签,这样你可以手动选择墙编号序列。
 
再往前一点,当你画线,然后一次挑选一整束,它们是按绘制的顺序排列的,因此如果你可以控制自己,那么你可以一次性做你想做的事情,自动按绘制的顺序标记墙。我可能会手动或自动编写两个例程(在一个程序中)。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:18:33 | 显示全部楼层
你的幸运日为这段代码增加了大约5行代码,现在它可以工作了,如果需要其他更改,那么可能是学习如何编写/更改程序的好时机。这将根据我的工作岗位以上无论是自动选择或手动谢谢李
 
  1. : original program by lee mac
  2. ; Room and number added by Alan H FEB 2011
  3. (princ "\nTo run type plen3")
  4. (defun c:pLen3 (/ *error* doc spc ss mid tStr tBox tObj lAng)
  5. (vl-load-com)
  6. (defun *error* (msg)
  7.    (if
  8.      (not
  9.        (wcmatch
  10.          (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  11.      (princ
  12.        (strcat
  13.          "\n<< Error: " msg " >>")))
  14.    (princ))
  15.   (if
  16.     (eq 4
  17.       (logand 4
  18.         (cdr (assoc 70
  19.                (tblsearch "LAYER"
  20.                  (getvar "CLAYER"))))))
  21.    (progn
  22.      (princ "\n<< Current Layer Locked >>") (exit)))
  23. (setq doc (vla-get-ActiveDocument
  24.              (vlax-get-Acad-Object))
  25.        spc (if
  26.              (zerop
  27.                (vla-get-activespace doc))
  28.              (if (= (vla-get-mspace doc) :vlax-true)
  29.                (vla-get-modelspace doc)
  30.                (vla-get-paperspace doc))
  31.              (vla-get-modelspace doc)))
  32. (while (not ss)
  33.    (setq ss (ssget '((0 . "*LINE")))))
  34. (setq tSze (getvar "DIMTXT"))
  35. (setq x 1)
  36. (foreach Obj
  37.    (mapcar 'vlax-ename->vla-object
  38.      (vl-remove-if 'listp
  39.        (mapcar 'cadr (ssnamex ss))))
  40.    (setq tStr (rtos (vla-get-length Obj) 3 2)
  41.          tBox (textbox
  42.                 (list
  43.                   (cons 1 (strcat "room" tStr ".."))
  44.                   (cons 40 tSze)
  45.                   (cons 7 (getvar "TEXTSTYLE")))))
  46.    (setq mid (/ (abs (- (vlax-curve-getEndParam Obj)
  47.                           (vlax-curve-getStartParam Obj))) 2.)
  48.          lAng (angle '(0 0 0) (vlax-curve-getFirstDeriv Obj mid)))
  49.    (cond ((and (> lAng (/ pi 2)) (<= lAng pi))
  50.       (setq lAng (- lAng pi)))
  51.      ((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
  52.       (setq lAng (+ lAng pi))))
  53. (setq rnum (rtos X 2 0))
  54. (setq tstr (strcat "ROOM" rnum  tStr))
  55.      (setq tObj
  56.        (vla-addMText spc
  57.          (vlax-3D-point (vlax-curve-getPointatParam Obj mid))
  58.            (- (caadr tBox) (caar tBox)) tStr))
  59.    (vla-put-Height tObj tSze)
  60.    (vla-put-Rotation tObj lAng)
  61. (setq x (+ x 1))
  62. )
  63. (princ)
  64. )

 
塔瓦特
回复

使用道具 举报

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:20:39 | 显示全部楼层
 
我可以在午饭时跑回家试一试。它工作得很好!非常感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:23:37 | 显示全部楼层
 
随时欢迎你。
 
塔瓦特
回复

使用道具 举报

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:28:18 | 显示全部楼层
我用它,它工作得很好,但我想用它来测量距离毫米,而不是英尺和英寸,你能帮我吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 12:54 , Processed in 0.446458 second(s), 72 queries .

© 2020-2025 乐筑天下

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