对于好奇的人来说,这个lisp显示了拾取点之间的X、Y、Z和3D距离,最多可显示15个位置。根据帮助文件,RTOS函数的精度参数对应于LUPREC系统变量。但LUPREC的精度限制为8位,而RTOS的精度可以设置为15位。
该lisp是使用Intellicad开发的,并在Intellicad上进行了测试。我没有Autocad可以试用。我认为它会起作用。我想知道它是否不起作用或不显示所有15个位置。如果您喜欢在警报框中显示结果而不是在命令历史记录中显示结果,则可以重写此命令。
- (defun c:pdx (/ *ERROR* p1 p2 xp1 yp1 zp1 xp2 yp2 zp2 dx dy dz d3d dxst dyst dzst d3dst dtstr)
- (defun *ERROR* (msg)
- (princ " - interrupted function ")
- (princ)
- )
- (setq p1 (getpoint "\nFirst point"))
- (setq p2 (getpoint p1 "\nSecond point"))
- (setq xp1 (car p1))
- (setq p1 (cdr p1))
- (setq yp1 (car p1))
- (setq p1 (cdr p1))
- (setq zp1 (car p1))
- (setq xp2 (car p2))
- (setq p2 (cdr p2))
- (setq yp2 (car p2))
- (setq p2 (cdr p2))
- (setq zp2 (car p2))
- (setq dx (- xp2 xp1))
- (setq dy (- yp2 yp1))
- (setq dz (- zp2 zp1))
- (setq d3d (sqrt (+ (* dx dx) (* dy dy) (* dz dz))))
- (if (minusp dx)
- (setq dxst (strcat "DX = " (rtos dx 2 15)))
- (setq dxst (strcat "DX = " (rtos dx 2 15)))
- )
- (if (minusp dy)
- (setq dyst (strcat "DY = " (rtos dy 2 15)))
- (setq dyst (strcat "DY = " (rtos dy 2 15)))
- )
- (if (minusp dz)
- (setq dzst (strcat "DZ = " (rtos dz 2 15)))
- (setq dzst (strcat "DZ = " (rtos dz 2 15)))
- )
- (setq d3dst (strcat "D3D = " (rtos d3d 2 15)))
- (setq dtstr (strcat dxst "\n " dyst "\n " dzst "\n" d3dst))
- (princ "\n")(princ dtstr)
- (princ)
- )
|