向下取整多边形区域并添加
你好我对lisp例程一无所知,一直在努力学习。我希望这里的人能乐意帮我写一篇。
首先,我为勘测员工作,必须计算地层平面图的单位面积。我们总是将面积向下舍入,因此内部面积为28.8的单元将被称为28+阳台7.2(称为7)+车位13.6(13),(因此28+7+13)
我使用多边形创建区域,并始终添加一个字段供测量员检查。
我想要的是一个lisp例程,在这里我可以为每个地块拾取和添加多边形,为我拾取的每个多边形向下舍入区域。
我在Acad讨论中找到了下面的代码,我认为这应该是一个很好的起点,但我从此迷失了方向
(定义C:AA()
(setq对象(car(entsel“\n选择区域多段线:”))
(if(equal(vlax curve getStartPoint AoObject)(vlax curve getEndPoint AoObject)1e-
(编程;然后
(命令“area”“e”A对象)
(setq Tarea(rtos(/(getvar“area”)1000000.0)2 0)
(setq总面积(strcat Tarea“sqm”))
(警报总面积)
); 结束程序
(警告“多段线未闭合。”);其他的
); 如果结束
(普林斯)
); 结束defun
{code} 只需使用fix将其转换为整数。
如。
(fix <Real>)
哦,是的,还有:代码张贴礼仪 为什么你要把28.8的面积缩小到28???我理解土地管理不应该按话算四舍五入,尽管为什么不改为28.5? 可能需要
;;Rounding By John W. Anstaett
;;use (rounding mynumber roundto offset)
;;mynumber this is the number you need to round off
;;Roundto is the number to roundto
;;offset set to 0 will roundto to next lower number
;;offset set to 1 will next higher number
;;offset set to 0.5 will be to nerest number
;;exp (rounding 12.1 5 1)return 15
;;exp (rounding 12.1 5 0) return 10
;;exp (rounding 12.49 5 0.5) reutne 10
;;exp (rounding 12.5 5 0.5) return 15
;; exp (rounding 0.68 0.25 0.5) return 0.75
(defun rounding(mynumber roundto offset)
(setq temp
(*(fix(+ (/ mynumber roundto) offset )) roundto)
)
)
使用 这些可能有助于:
http://lee-mac.com/totallengthandarea.html
关于舍入:
示例:
_$ (LM:Round 2.6)
3
_$ (LM:Round 2.4)
2
_$ (LM:Roundto 2.62571 1)
2.6
_$ (LM:Roundto 2.62571 2)
2.63
_$ (LM:Roundto 2.62571 3)
2.626
_$ (LM:Roundto 2.62571 4)
2.6257
_$ (LM:Roundto 2.62571 5)
2.62571
或者,要获得小于面积的最大整数,请按照Alan的建议使用fix。 此外,如果需要实数而不是整数,则可以浮动LM:Round例程的返回值。
或
4 谢谢你的回复。将有一个发挥,并希望得到一些工作
至于取整,我们只使用整数。我们四舍五入,主要是因为人们使用我们的计划来出售公寓,最好告诉别人他们购买28平方米的内部公寓,让他们得到更多,然后说你购买了29平方米&实际上更少。
页:
[1]