删除existi中的小数
大家好。我有一个例程,在用户想要的图形中输入数据标签。它在文件中查找数据,并根据用户输入的标签号将其插入。然而,对于我们输入的没有信息但用户仍希望调用该标签的数据标签,它只需输入“#50.00-0.00”。我能够删除“0.00”后缀,因为它在代码中很明显。但我也希望删除数据标签后的“.00”,这对我来说并不合适。我唯一想显示的是“#50-”。没有小数和零。我已经包括了例行程序。和数据标签的快照。原稿在底部。电流在中间。我正在顶部寻找的目标数据标签。希望这会有所帮助,并提前表示感谢。
(defun c:DTEST (/ *ERROR* oldlayr p1 p2 DPNUM)
(defun *error* (msg)
(if oldlayr (setvar "clayer" oldlayr))
(if oldos (setvar "osmode" oldos))
(if msg (prompt msg))
(princ)
)
(defun getdpnum ()
(if (= dpnum nil)
(setq dpnum (getreal "\nEnter STARTING datapoint number (1.00-999.99): "))
(setq dpnum (+ dpnum 1)))
)
(WHILE
(setq oldos (getvar "osmode"))
(setq oldlayr (getvar "clayer")) (command "._-layer" "s" DATAPOINT "")
(initget 1)(setq p1 (getpoint "\nSelect datapoint location on pipe: "))
(setvar "osmode" 0)
(initget 33) (setq p2 (getpoint p1 "\nSelect datapoint label location: "))
(getdpnum)
(get_info "DATAPOINTS" "END DATAPOINTS" DPINFO "#" "-")
(command "._-layer" "s" oldlayr "")
(setvar "OSMODE" OLDOS)
)
(*error* nil)
(prin1))
https://www.cadtutor.net/forum/attachment.php?attachmentid=56146&cid=1&stc=1
代码中缺少get\u info函数。 对不起,李,我忘记了,因为答案在这个特定的例程中,因为“0.00”在那里。请参阅下面的GET_INFO例程。再次记住,这段代码很可能引用了其他例程,如果你认为答案可能在其他函数中,请调用它,我会帮你找到它。非常感谢!
(defun get_info (st_pt end_pt lay_name str1 str2 / side p3 p4 inputline
dpff nlp lchanged printed linetext placeholder)
(if (not (equal p1 p2))
(progn
(if (< (car p1) (car p2))
(progn (setq side "ML") (setq dir 0.0))
(progn (setq side "MR") (setq dir 180.0))
)
(setq p3 (polar p2 (dtr dir) (getvar "userr1")))
(setq p4 (polar p3 (dtr dir) (getvar "userr1")))
)
(progn (setq p4 p2) (setq side "ML")
)
)
(setq inputline nil)
(openfile)
(seek-tcircuit)
(while (not (equal inputline st_pt)) (setq inputline (read-line infile)))
(setq printed "N")
(while (not (equal inputline end_pt))
(setq inputline (read-line infile))
(if (/= inputline end_pt)
(progn
(if (= etype "G")
(progn
(dpn inputline)
(setq dpff txt))
(progn
(dpn inputline)
(setq dpff (atof txt))))
(if (= dpnum dpff)
(progn
(if (not (equal p1 p2))
(progn
(command "._line" p1 p2 p3 "")
(setq a (angle p2 p1))
(command "._solid" p1 (polar p1 (- a 85) (getvar "userr1"))
(polar p1 (+ a 85) (getvar "userr1")) "" "")
)
)
(command "._text" side p4 (getvar "userr1") 0 (getline 1 inputline))
(setq lchanged "N")
(setq nLp 2)
(while (<= nLp 5)
(setq LineText (getline nLp inputline))
(if (/= (strlen LineText) 0)
(progn
(command "._text" "" Linetext)
(if (= lchanged "N")
(command "._change" "L" "" "P" "LA" lay_name ""))
(setq lchanged "Y")
)
)
(setq nLp (1+ nLp))
)
(setq Printed "Y")
(setq inputline end_pt)
)
)
)
)
)
(closefile)
(if (= printed "N")
(progn
(command "._line" p1 p2 p3 "")
(setq a (angle p2 p1))
(command "._solid" p1 (polar p1 (- a 85) (getvar "userr1"))
(polar p1 (+ a 85) (getvar "userr1")) "" "")
(if (= etype "G")
(setq placeholder (strcat str1 dpnum str2))
(setq placeholder (strcat str1 (rtos dpnum 2 2) str2))
)
(if (<= (nth 0 p1) (nth 0 p2))
(command "._text" side p4 (getvar "userr1") 0 placeholder)
(command "._text" side p4 (getvar "userr1") 0 placeholder)
)
)
)
(prin1))
收件人:
(rtos dpnum 2 2)
或者更好,暂时将DIMZIN更改为8。 Leeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!你就是那个男人!真 的!我希望我在Lisp程序方面能更进步。我完全忽略了代码的这一部分。我真是个笨蛋! 李,我刚刚给你发了一份捐款。谢谢你们的支持和无数次的代码帮助,我真的很感谢你们和你们所做的工作。你继续让我惊讶。祝福。 非常感谢特梅拉康-我真的很感谢你的捐赠和感谢我的时间。
我很高兴能帮上忙!
李 李,我只是注意到我还有一个问题。我完全忘记了有时我们在一个标签中有多个数据标签(即#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内置任何数据-但我们仍然希望在检查和插入该标签的数据时显示调用。我希望这能有所帮助,我感谢你花时间帮我做这件事。 因此,在一张图纸中,我们可能会看到:
#17-管道。290 ;; 当前内置并在中包含数据。DAT文件
#17.1-管道。220 ;; 当前内置并具有十进制,因为它是在同一位置内的第二次数据读取
#50.10-;; 此标签没有数据,这是我们进行更改之前显示的内容
#50- ;;该标签在更改后输入为50.1,但似乎是四舍五入。我仍然需要它在第十列中显示小数点和数字。我为这篇误导性的原始帖子道歉。
再一次,我只需要一些例外,因为更改实际上是针对没有数据的数据标签,因为我们不喜欢看到“.00-0.00”或“.00”。我希望原始代码在中存在的所有其他数据标签上正常运行。DAT文件并具有数据。 这是一张我正在谈论的图片。底部数据标签#6是一个整数,包含数据。那么,标签#7是一个整数,其中没有数据。DAT文件。接下来是标签#7.1,它是一个没有数据的实数。最后是标签#7.2,这是一个带有数据的实数。这就是我需要他们展示的方式。无论数据是否存在,我们都不喜欢看到0.00和。00或。00-0.00遍布我们的图纸,当我们有几十个标签被叫出,但尚未被检查。
https://www.cadtutor.net/forum/attachment.php?attachmentid=56162&cid=1&stc=1
我使用DIMZIN变量开关来控制这个例程。效果很好。
页:
[1]
2