在完成绘制/转换管道草图后,我们运行c:dtext并沿管道输入圆角尺寸(即,如果其为13’-6“我们输入14”),以便让我们的技术人员在执行检查之前了解特定管道的跨度。在处理imperial时,这很容易,没有问题。
然而,有时在CAD中,我们使用的是以毫米为单位的施工图,我们必须将这些尺寸转换为英尺。我只是创建了一个可打印的图表,允许我们的用户快速浏览和查看毫米范围,以便他们可以以英尺为单位输入尺寸(即1219-1523mm,我们将为该运行键入4’)。这是可行的,但我想我可以更进一步,帮助我的员工通过编程方式进入这些维度。
我已经写了一些东西,我必须感谢塔瓦的代码,他让我写下了至少需要开始的东西。非常感谢!!
我现在所做的工作完美无瑕,唯一的问题是我希望我可以修改代码,使其四舍五入,而不是增加英寸。我只想把整数四舍五入到英尺(即13’-6”到14’,18’-2”到18”)。以下是我一直在研究的代码:
- (defun c:mm2in (/ in ss)
- ;; ================================================== ;;
- ;; Author : Tharwat Al Shoufi .Date: 22.Nov.2014 ;;
- ;; Converts Text Strings from Millimeter to Inch ;;
- ;; ================================================== ;;
- (if (setq in (/ 1. 25.4)
- ss (ssget "_:L"
- '((0 . "TEXT,MTEXT")
- (1 . "1*,2*,3*,4*,5*,6*,7*,8*,9*,x*,X*")
- )
- )
- )
- ((lambda (x / sn e s a)
- (while (setq sn (ssname ss (setq x (1+ x))))
- (entmod
- (subst
- (cons
- 1
- (if (wcmatch
- (setq
- a (strcase
- (substr
- (setq
- s (cdr (assoc 1 (setq e (entget sn))))
- )
- 1
- 1
- )
- )
- )
- "X*"
- )
- (if (/= (atof (substr s 2)) 0.)
- (strcat a (rtos (* (atof (substr s 2)) in) 4 0))
- s
- )
- (rtos (* (atof s) in) 4 0)
- )
- )
- (assoc 1 e)
- e
- )
- )
- )
- )
- -1
- )
- )
- (princ)
- )
- ;; ================================================== ;;
- ;; Author : T.Melancon Date: 27Jun2017 ;;
- ;; Allows user to enter MM in plain text then converts to FT ;;
- ;; Loops so user can enter multiple dimensions ;;
- ;; ================================================== ;;
- (defun c:dimm()
- (setq oldlayr (getvar "clayer"))
- (setq t_size 0.08)
- (COMMAND "LAYER" "S" "DIM" "")
- (WHILE
- (SETQ POINT (GETPOINT "\nSpecify Point For Text Insertion..."))
- (SETQ DIMS (GETSTRING "\nEnter Dimensions In MM: "))
- (command "._text" "L" POINT t_size "0" DIMS)
- (sssetfirst nil (ssget "L"))
- (C:MM2IN)
- )
- (SETVAR "CLAYER" OLDLAYR)
- (PRINC))
|