ymcui 发表于 2014-6-7 17:29:52

求助:如何得出多义线直线两端点?

(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)))

Andyhon 发表于 2014-6-7 19:31:37

(while (not (setq ss (entsel "\n请点选矩形:"))))
...

偏方:
(setq pta (osnap pt2 "end"))
(setq ptb (mapcar '+ pt3 (mapcar '- pt3 pta)))

请参考 vlax-curve-get*** 函数

liu_kunlun 发表于 2014-6-7 20:22:00

(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坐标

ymcui 发表于 2014-6-9 08:42:59

谢谢,非常好.      
页: [1]
查看完整版本: 求助:如何得出多义线直线两端点?