求助:如何得出多义线直线两端点?
(setq pt3 (osnap pt2 "midp"))这个是得出中点如何得出多义线直线两端点?(DEFUN C:tt()
(setq nm 0)
(while (setq test t)
(while test
(setq ss (entsel "\n请点选矩形:"))
(setq test (not ss))
)
(setvar "cmdecho" 0)
(command "LAYER" "S" (cdr (assoc 8 (entget (car ss)))) "" )
(setq obj (vlax-ename->vla-object (car ss)))
(setq PT2 (vlax-curve-getclosestpointto obj (cadr ss)))
(setq pt3 (osnap pt2 "midp"))
(vla-getboundingbox obj 'minpoint 'maxpoint )
(setq maxpoint (vlax-safearray->list maxpoint)
minpoint (vlax-safearray->list minpoint)
maxpoint (trans maxpoint 0 1)
minpoint (trans minpoint 0 1)
dx (/ (- (car maxpoint) (car minpoint)) 2.0)
dy (/ (- (cadr maxpoint) (cadr minpoint)) 2.0)
mpt1 (list (+ (car minpoint) dx) (+ (cadr minpoint) dy))) (while (not (setq ss (entsel "\n请点选矩形:"))))
...
偏方:
(setq pta (osnap pt2 "end"))
(setq ptb (mapcar '+ pt3 (mapcar '- pt3 pta)))
请参考 vlax-curve-get*** 函数
(setq pra (vlax-curve-getParamatpoint e (vlax-curve-getClosestPointTo e (trans pt 1 0))))
(setq pt1 (trans (vlax-curve-getPointAtParam e (fix pra)) 0 1))
(setq pt2 (trans (vlax-curve-getPointAtParam e (1+ (fix pra))) 0 1))
pt,pt1,pt2均为UCS坐标 谢谢,非常好.
页:
[1]