乐筑天下

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

[编程交流] 链测长度更改Lisp

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:46:08 | 显示全部楼层 |阅读模式
你好
我有个问题。如果你能帮忙,我会很高兴的。
我有一些链测长度标签为1+234.56格式。
我想要一个lisp,用于按指定数量增减选定链测长度值。
非常感谢。
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 17:03:42 | 显示全部楼层
欢迎来到CADCER,请附上一张样品图,以便进一步澄清,我们将帮助您
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:19:38 | 显示全部楼层
例如,我有如下对齐方式。
由于开始部分的更改,路线缩短了200米。
这份工作的Lisp程序?
 
174610n5vcuuutl5awzfaq.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:35:29 | 显示全部楼层
请看这里。。。。。。。
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:58:22 | 显示全部楼层
非常感谢李。
但给定的代码是1+23.45格式,而不是1+234.56格式
我认为你的代码是英制单位。
我对此进行了如下修改:
 
  1. ;; Change Station  -  Lee Mac
  2. ;; Allows the user to add or subtract numerical values from a stationing label
  3. ;; e.g. 186+489.85 Bridgeline P/L - 152267.70 = 34+220.15 Bridgeline P/L
  4. (defun c:lmstat ( / *error* dec dim enx inc num pos rgx sel str val )
  5.    (defun *error* ( msg )
  6.        (if (= 'int (type dim))
  7.            (setvar 'dimzin dim)
  8.        )
  9.        (if (and (= 'vla-object (type rgx)) (not (vlax-object-released-p rgx)))
  10.            (vlax-release-object rgx)
  11.        )
  12.        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  13.            (princ (strcat "\nError: " msg))
  14.        )
  15.        (princ)
  16.    )
  17.    
  18.    (if
  19.        (and
  20.            (setq sel (ssget "_:L" '((0 . "TEXT") (1 . "*#+###*"))))
  21.            (setq num (getreal "\nSpecify amount to add or subtract: "))
  22.        )
  23.        (if (setq rgx (vlax-get-or-create-object "vbscript.regexp"))
  24.            (progn
  25.                (setq dim (getvar 'dimzin))
  26.                (setvar 'dimzin 0)
  27.                (vlax-put-property rgx 'global     actrue)
  28.                (vlax-put-property rgx 'ignorecase actrue)
  29.                (vlax-put-property rgx 'multiline  actrue)
  30.                (vlax-put-property rgx 'pattern "\\d+\\+\\d+\\.*\\d+")
  31.                (repeat (setq inc (sslength sel))
  32.                    (setq enx (entget (ssname sel (setq inc (1- inc))))
  33.                          str (cdr (assoc 1 enx))
  34.                    )
  35.                    (vlax-for itm (vlax-invoke rgx 'execute str)
  36.                        (setq itm (vlax-get itm 'value)
  37.                              pos (vl-string-position 43 itm)
  38.                              val (+ (atof (strcat (substr itm 1 pos) (substr itm (+ pos 2)))) num)
  39.                              str (vl-string-subst
  40.                                      (strcat (itoa (fix (/ val 1000.0)))
  41.                                          (if (minusp val) "-" "+")
  42.                                          (if (< (setq dec (abs (rem val 1000.0))) 100.0)
  43.                                              (strcat "0" (rtos dec 2 2))
  44.                                              (rtos dec 2 2)
  45.                                          )
  46.                                      )
  47.                                      itm str
  48.                                  )
  49.                        )
  50.                    )
  51.                    (entmod (subst (cons 1 str) (assoc 1 enx) enx))
  52.                )
  53.                (setvar 'dimzin dim)
  54.                (vlax-release-object rgx)
  55.            )
  56.            (princ "\nUnable to interface with RegExp object.")
  57.        )
  58.    )
  59.    (princ)
  60. )
  61. (vl-load-com) (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:53 , Processed in 0.589212 second(s), 64 queries .

© 2020-2025 乐筑天下

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