乐筑天下

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

[编程交流] 删除existi中的小数

[复制链接]

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:22:24 | 显示全部楼层 |阅读模式
大家好。我有一个例程,在用户想要的图形中输入数据标签。它在文件中查找数据,并根据用户输入的标签号将其插入。然而,对于我们输入的没有信息但用户仍希望调用该标签的数据标签,它只需输入“#50.00-0.00”。我能够删除“0.00”后缀,因为它在代码中很明显。但我也希望删除数据标签后的“.00”,这对我来说并不合适。我唯一想显示的是“#50-”。没有小数和零。
 
我已经包括了例行程序。和数据标签的快照。原稿在底部。电流在中间。我正在顶部寻找的目标数据标签。希望这会有所帮助,并提前表示感谢。
 
  1. (defun c:DTEST (/ *ERROR* oldlayr p1 p2 DPNUM)
  2. (defun *error* (msg)
  3.    (if oldlayr (setvar "clayer" oldlayr))
  4.    (if oldos (setvar "osmode" oldos))
  5.    (if msg (prompt msg))
  6.    (princ)
  7.    )
  8. (defun getdpnum ()
  9. (if (= dpnum nil)
  10. (setq dpnum (getreal "\nEnter STARTING datapoint number (1.00-999.99): "))
  11. (setq dpnum (+ dpnum 1)))
  12. )
  13. (WHILE
  14. (setq oldos (getvar "osmode"))
  15. (setq oldlayr (getvar "clayer")) (command "._-layer" "s" DATAPOINT "")
  16. (initget 1)  (setq p1 (getpoint "\nSelect datapoint location on pipe: "))
  17. (setvar "osmode" 0)
  18. (initget 33) (setq p2 (getpoint p1 "\nSelect datapoint label location: "))
  19. (getdpnum)
  20. (get_info "DATAPOINTS" "END DATAPOINTS" DPINFO "#" "-")
  21. (command "._-layer" "s" oldlayr "")
  22. (setvar "OSMODE" OLDOS)
  23. )
  24. (*error* nil)
  25. (prin1))

 
 

                               
登录/注册后可看大图

192226irbgwxaw28d71nan.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:28:58 | 显示全部楼层
代码中缺少get\u info函数。
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:36:51 | 显示全部楼层
对不起,李,我忘记了,因为答案在这个特定的例程中,因为“0.00”在那里。请参阅下面的GET_INFO例程。再次记住,这段代码很可能引用了其他例程,如果你认为答案可能在其他函数中,请调用它,我会帮你找到它。非常感谢!
 
  1. (defun get_info (st_pt end_pt lay_name str1 str2 / side p3 p4 inputline
  2.                 dpff nlp lchanged printed linetext placeholder)
  3. (if (not (equal p1 p2))
  4. (progn
  5.   (if (< (car p1) (car p2))
  6.    (progn (setq side "ML") (setq dir 0.0))
  7.    (progn (setq side "MR") (setq dir 180.0))
  8.   )
  9.   (setq p3 (polar p2 (dtr dir) (getvar "userr1")))
  10.   (setq p4 (polar p3 (dtr dir) (getvar "userr1")))
  11. )
  12. (progn (setq p4 p2) (setq side "ML")
  13. )
  14. )
  15. (setq inputline nil)
  16. (openfile)
  17. (seek-tcircuit)
  18. (while (not (equal inputline st_pt)) (setq inputline (read-line infile)))
  19. (setq printed "N")
  20. (while (not (equal inputline end_pt))
  21. (setq inputline (read-line infile))
  22. (if (/= inputline end_pt)
  23.   (progn
  24.    (if (= etype "G")
  25.     (progn
  26.      (dpn inputline)
  27.      (setq dpff txt))
  28.     (progn
  29.      (dpn inputline)
  30.      (setq dpff (atof txt))))
  31.    (if (= dpnum dpff)
  32.     (progn
  33.      (if (not (equal p1 p2))
  34.       (progn
  35.        (command "._line" p1 p2 p3 "")
  36.        (setq a (angle p2 p1))
  37.        (command "._solid" p1 (polar p1 (- a 85) (getvar "userr1"))
  38.                              (polar p1 (+ a 85) (getvar "userr1")) "" "")
  39.       )
  40.      )
  41.      (command "._text" side p4 (getvar "userr1") 0 (getline 1 inputline))
  42.      (setq lchanged "N")
  43.      (setq nLp 2)
  44.      (while (<= nLp 5)
  45.       (setq LineText (getline nLp inputline))
  46.       (if (/= (strlen LineText) 0)
  47.        (progn
  48.         (command "._text" "" Linetext)
  49.         (if (= lchanged "N")
  50.          (command "._change" "L" "" "P" "LA" lay_name ""))
  51.         (setq lchanged "Y")
  52.        )
  53.       )
  54.       (setq nLp (1+ nLp))
  55.      )
  56.      (setq Printed "Y")
  57.      (setq inputline end_pt)
  58.     )
  59.    )
  60.   )
  61. )
  62. )
  63. (closefile)
  64. (if (= printed "N")
  65. (progn
  66.   (command "._line" p1 p2 p3 "")
  67.   (setq a (angle p2 p1))
  68.   (command "._solid" p1 (polar p1 (- a 85) (getvar "userr1"))
  69.                         (polar p1 (+ a 85) (getvar "userr1")) "" "")
  70.   (if (= etype "G")
  71.    (setq placeholder (strcat str1 dpnum str2))
  72.    (setq placeholder (strcat str1 (rtos dpnum 2 2) str2))
  73.   )
  74.   (if (<= (nth 0 p1) (nth 0 p2))
  75.    (command "._text" side p4 (getvar "userr1") 0 placeholder)
  76.    (command "._text" side p4 (getvar "userr1") 0 placeholder)
  77.   )
  78. )
  79. )
  80. (prin1))

收件人:
  1. (rtos dpnum 2 2)

或者更好,暂时将DIMZIN更改为8。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:43:04 | 显示全部楼层
Leeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!你就是那个男人!真 的!我希望我在Lisp程序方面能更进步。我完全忽略了代码的这一部分。我真是个笨蛋!
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:50:01 | 显示全部楼层
李,我刚刚给你发了一份捐款。谢谢你们的支持和无数次的代码帮助,我真的很感谢你们和你们所做的工作。你继续让我惊讶。祝福。
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:56:36 | 显示全部楼层
非常感谢特梅拉康-我真的很感谢你的捐赠和感谢我的时间。
 
我很高兴能帮上忙!
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:58:25 | 显示全部楼层
李,我只是注意到我还有一个问题。我完全忘记了有时我们在一个标签中有多个数据标签(即#50.1、#50.2、#50.3)。当我输入#50.1时,它不是以#50.1的形式输入的,它是以50的形式输入的,它是完全去掉小数并四舍五入。我忘了提一下,当我开始这个帖子的时候,我不应该把标题贴成“删除小数”,这是有误导性的。真正的目标只是删除“.00”,只有当它们在中没有数据时。DAT文件,当它去搜索。然而,当有实际数据时,我需要它插入例如#16.1-或#16.2-但同时显示#50.1-而不是#50.10或#50.00,如果尚未为#50.1内置任何数据-但我们仍然希望在检查和插入该标签的数据时显示调用。我希望这能有所帮助,我感谢你花时间帮我做这件事。
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 19:04:43 | 显示全部楼层
因此,在一张图纸中,我们可能会看到:
 
#17-管道。290        ;; 当前内置并在中包含数据。DAT文件
#17.1-管道。220     ;; 当前内置并具有十进制,因为它是在同一位置内的第二次数据读取
#50.10-  ;; 此标签没有数据,这是我们进行更改之前显示的内容
#50-      ;;  该标签在更改后输入为50.1,但似乎是四舍五入。我仍然需要它在第十列中显示小数点和数字。我为这篇误导性的原始帖子道歉。
 
再一次,我只需要一些例外,因为更改实际上是针对没有数据的数据标签,因为我们不喜欢看到“.00-0.00”或“.00”。我希望原始代码在中存在的所有其他数据标签上正常运行。DAT文件并具有数据。
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 19:13:19 | 显示全部楼层
这是一张我正在谈论的图片。底部数据标签#6是一个整数,包含数据。那么,标签#7是一个整数,其中没有数据。DAT文件。接下来是标签#7.1,它是一个没有数据的实数。最后是标签#7.2,这是一个带有数据的实数。这就是我需要他们展示的方式。无论数据是否存在,我们都不喜欢看到0.00和。00或。00-0.00遍布我们的图纸,当我们有几十个标签被叫出,但尚未被检查。
 

                               
登录/注册后可看大图


回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 19:21:03 | 显示全部楼层
我使用DIMZIN变量开关来控制这个例程。效果很好。
192229ppr0p08pv0hi00vi.jpg
192230j7fvm6ycyvowfffy.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:42 , Processed in 0.490464 second(s), 75 queries .

© 2020-2025 乐筑天下

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