 - ;--------------未知角度转正------------------
- (defun c:rz ()
- (setvar "cmdecho" 0)
- (setq ss (ssget)
- a(entsel"\n-->选择需要转正的斜线")
- j(car a)
- ifpl (cadr a)
- )
- (if (= "LINE" (cdr(assoc 0 (entget j)))) ;条件
- (progn
- (setq pt1(cdr(assoc 10 (entget j))))
- (setq pt2(cdr(assoc 11 (entget j))))
-
- (command "_rotate" ss "" ifpl "r" "_none"pt1 "_none"pt2 "0")
- )
- )
- (if(= "LWPOLYLINE" (cdr(assoc 0 (entget j))))
- (if (HH:PickArc j ifpl)
- (progn
- (setq pt1 (car (HH:PickSegEndPt j ifpl))
- pt2 (cadr(HH:PickSegEndPt j ifpl)))
- (command "_rotate" ss "" ifpl "r" "_none"pt1 "_none"pt2 "0")
- )
- )
- )
- (princ)
- )
- ;;164.18 [功能] 多段线所点击子段的两端点列表
- ;;示例(HH:PickSegEndPt (car(setq en(entsel))) (cadr en))
- (defun HH:PickSegEndPt (obj p / pp n)
- (setq pp (vlax-curve-getclosestpointto obj (trans p 1 0))
- n (fix (vlax-curve-getparamatpoint obj pp))
- )
- (list (vlax-curve-getPointAtParam obj n)
- (vlax-curve-getPointAtParam obj (1+ n))
- )
- )
- ;;164.24 [功能] 多段线所击子段是否是直线(返回nil是弧) By 自贡黄明儒
- ;;示例(HH:PickArc (car(setq en(entsel))) (cadr en))
- (defun HH:PickArc (curve p / PP)
- (setq pp (vlax-curve-getclosestpointto curve (trans p 1 0)))
- (setq pp (vlax-curve-getSecondDeriv
- curve
- (fix (vlax-curve-getparamatpoint curve pp))
- )
- )
- (equal pp '(0.0 0.0 0.0))
- )
|