计算最大z值
我有一个问题是关于我正在尝试制作的分析工具。在对具有墙的场地进行放坡时,查找墙的最大高度非常有用。目前,这是非常困难的,涉及制作个人资料和许多其他事情。墙由两条要素线(或三维多段线)相互偏移0.1’制成,因此它们始终垂直。我知道如何通过这样的代码计算垂直距离:(setq P1 (getpoint "\nDistance From "))
(setvar "OSMODE" 128)
(setq DR (getdist P1 "\nPer to "))
(setq DS (rtos DR 2 6))。我的问题是,如何扩展此代码,使其不只是做一个点,而是沿着要素线或三维多段线进行计算,以便计算墙的最大高程?我在想,我可以把它写下来,这样它就可以以较小的增量计算垂直z距离,然后打印出最大值,但我怎么能在不让用户选择点的情况下做到这一点呢? 我还应该提到,我已经研究了vlax curve getclosestpointto函数,但它似乎不起作用,因为它实际上没有找到垂直点,而只是找到最近的点。 你能寄一个样品吗。三维多边形很容易处理,但它们确实不能垂直。它希望尝试偏移三维多边形-大卫 你能上传一张样图吗? 附件是一个具有2条要素线的超级简化示例。一个是墙的底部,一个是墙的顶部。墙的底部通常与墙的顶部偏移0.1’,以模拟垂直墙。我想通过从墙的底部高度减去墙的顶部高度来计算它的最大高度。这是一个超级简化的例子,但我在实际设计中,我有超过100英尺长的墙,有很多坡折,所以简化这个过程会让我的生活更容易。附件中有要素线,如果方便的话,我可以上传一个带有三维多段线的文件。
样品图纸 图形中的对象在Vanilla AutoCAD中显示为ACAD\u PROXY\u图元类型,因此很遗憾,我无法提供帮助,除非这些对象可以以某种方式转换为Vanilla对象类型。在这方面我没有建议,因为我没有垂直应用程序固有的对象的经验或知识。 看起来像ACAD Civil 3D中的代理实体。对不起,我什么都不知道。3DPOLY是另一种动物-David 李和大卫,非常感谢你们看这个。我上传了同一张带有三维多段线的图纸,我认为这在普通AutoCAD中是可行的。如果你看不到,不用担心。
样品图纸 我们有第三方附加组件的优势,对我们来说,显而易见的选择是绘制两个具有高度差的长截面,从而生成长截面图。您也可以在CIV3D中执行此操作
相关主题?
俯视图垂直但不是最近的
;point to line
(defun hp:ptol (p 2p 3d / ad d pp) ; hanhphuc - 29.10.2015
(setq ad (mapcar '(lambda (f) (apply f (mapcar ''((x) (list (car x) (cadr x))) 2p)))
'(angle distance)
) ;_ end of mapcar
d(vxv (mapcar '- p (car 2p)) (mapcar ''((f) (f (car ad))) (list cos sin)))
pp (polar (car 2p) (car ad) d)
) ;_ end of setq
(if (<= 0. d (cadr ad))
(list (distance p pp)
(list (car pp)
(cadr pp)
(if 3d
(+ (* (/ (apply '- (mapcar 'last (reverse 2p))) (cadr ad)) d) (caddr (car 2p)))
(caddr p)
) ;_ end of if
) ;_ end of list
) ;_ end of list
) ;_ end of if
) ;_ end of defun
;function call
;(hp:ptol pt lst 3d)
;pt= point
;lst= list of 2 end points
;example: (list p1 p2 )
;3d= t / nil
;Returns list
;( d ( x y z ))
;Where d=2d distance p to line from p1->p2
;(x y z) is coordinates apparently "perpendicular" from pt on line
;;;;example:
;;;(setq p1 (-131.868 17.4786 8.12106)
;;; p2 (-142.847 5.87031 -2.51656)
;;; p3 (-128.05 26.4743 2.99644)
;;; ) ;_ end of setq
;(hp:ptol p1 (list p2 p3) t)
;return (2.14588 (-133.611 18.7304 0.9244))
;(hp:ptol p1 (list p2 p3) nil)
;returns (2.14588 (-133.611 18.7304 8.12106))
;; Vector Dot Product-Lee Mac
;; Args: u,v - vectors in R^n
(defun vxv ( u v )
(apply '+ (mapcar '* u v))
)
使用函数迭代三维多段线点集,然后关联最小距离坐标,完成
页:
[1]
2