flopo 发表于 2022-7-6 12:07:47

3dpoly-距离-perp。。。。。

大家好,
在从点到三维多边形绘制垂直线之后,我必须测量连续交点三维多边形-垂直线之间的距离。Lisp程序这样做会帮我很多。。。见附件-图纸。谢谢
3dpoly-dist.dwg

BIGAL 发表于 2022-7-6 13:04:00

给这些线,而不是普林斯尝试工作
 

; offset perpendicular to line
(defun c:p2p ()
(setq tp1 (entsel "\nSelect line near end : "))
(setq tpp1 (entget (car tp1)))
(setq pt1 (cdr (assoc 10 tpp1)))
(setq pt1 (list (car pt1) (cadr pt1) 0.0)) ;reset z to zero
(setq pt2 (cdr (assoc 11 tpp1)))
(setq pt2 (list (car pt2) (cadr pt2) 0.0)) ;reset z to zero
(setq pt3 (cadr tp1))

(setq d1 (distance pt1 pt3))
(setq d2 (distance pt2 pt3))
(if (> d1 d2)
(progn
(setq temp pt1)
(setq pt1 pt2)
(setq pt2 temp)
)
)
(setq ang (angle pt1 pt2)
)
(setq pt4 (getpoint "\nSelect point"))
(setq pt4 (list (car pt4) (cadr pt4) 0.0)) ;reset z to zero
(setq ang2 (angle pt1 pt4))
(setq dist2 (distance pt1 pt4))
(setq angdiff (- ang ang2))
(setq sidel (distance pt1 pt4))
(setq offset (abs(* sidel (sin angdiff))))
(setq offsetdist (rtos offset 2 3))
(setq fromdist (sqrt (- (* dist2 dist2)(* offset offset))))
(setq fromdist2 (rtos fromdist 2 3))
(setq pt5 (polar pt1 ang fromdist))
(setq remainder (- (distance pt1 pt2)(distance pt1 pt5)))
(setq remain (rtos remainder 2 3))
(setq messg1 "The offset is ")
(setq messg2 " distance is ")
(setq messg3 " remainder is ")
(setq displayans (strcat messg1 offsetdist messg2 fromdist2 messg3 remain))
(princ "\n")
(princ displayans)


(setq pt1 nil)
(setq pt2 nil)
(setq pt3 nil)
(setq pt4 nil)

(Princ)
) ;end defun

 
 

; offset perpendicular to line
(defun c:p2pp ()
(setq pt1 (getpoint "\nSelect point 1 "))
(setq pt1 (list (car pt1) (cadr pt1) 0.0)) ;reset z to zero
(setq pt2 (getpoint "\nSelect point 2 "))
(setq pt2 (list (car pt2) (cadr pt2) 0.0)) ;reset z to zero
(setq ang (angle pt1 pt2))

(setq pt4 (getpoint "\nSelect offset point "))
(setq pt4 (list (car pt4) (cadr pt4) 0.0)) ;reset z to zero
(setq ang2 (angle pt1 pt4))
(setq dist2 (distance pt1 pt4))
(setq angdiff (- ang ang2))
(setq sidel (distance pt1 pt4))
(setq offset (abs(* sidel (sin angdiff))))
(setq offsetdist (rtos offset 2 3))
(setq fromdist (sqrt (- (* dist2 dist2)(* offset offset))))
(setq fromdist2 (rtos fromdist 2 3))
(setq pt5 (polar pt1 ang fromdist))
(setq remainder (- (distance pt1 pt2)(distance pt1 pt5)))
(setq remain (rtos remainder 2 3))
(setq messg1 "The offset is ")
(setq messg2 " distance is ")
(setq messg3 " remainder is ")
(setq displayans (strcat messg1 offsetdist messg2 fromdist2 messg3 remain))
(princ "\n")
(princ displayans)


(setq pt1 nil)
(setq pt2 nil)
(setq pt3 nil)
(setq pt4 nil)

(Princ)
) ;end defun

CarlB 发表于 2022-7-6 13:17:00

嘿,弗洛波,
 
检查你关于这个主题的其他线程CAB发布了一个例程,完全符合你的要求,尽我所能。。。
 
**编辑,只是好奇,为什么当它是Z=0的LWDOLYLINE时,会将其称为3dpoly?
页: [1]
查看完整版本: 3dpoly-距离-perp。。。。。