可以使用块(楼梯踏步)尝试“测量”命令。
或者这会有所帮助
- ;; PLPERP.lsp starts a polyline perpendicular to any 2D curve at
- ;; the point picked.
- ;; Allows direct distance entry for first polyline segment, then
- ;; restores previous ortho setting and snap angle (if any).
- ;; by Bill Gilliss bill dot gilliss at aya.yale.edu
- ;; 3/20/2008
- ;; Comments and suggestions always welcome.
- (defun c:plperp ( / e en obj param p1 p2 wp1 sa oldortho oldsnapang oldosmode olderror)
- (setq oldortho (getvar "orthomode")
- oldsnapang (getvar "snapang")
- oldosmode (getvar "osmode")
- olderror *error*
- )
- (setq e (entsel "Select curve at point to start perpendicular (OSNAPS welcome):"))
- (setq en (car e) p1 (cadr e)) ;UCS point
- (setq p1 (osnap p1 "_nea"))
- (setq obj (vlax-ename->vla-object en))
- (setq param (vlax-curve-getParamAtPoint obj (trans p1 1 0))) ;WCS point
- (setq fderiv (vlax-curve-getFirstDeriv obj param))
- (setq sa (+ (* pi 0.5) (angle (trans '(0.0 0.0 0.0) 0 1) (trans fderiv 0 1))))
- (setvar "snapang" sa)
- (setvar "orthomode" 1)
- (setq p2 (getpoint p1 "\nNext point:"))
- (setvar "orthomode" oldortho)
- (setvar "snapang" oldsnapang)
- (setvar "osmode" oldosmode)
- (setq *error* olderror)
-
- (command "pline" p1 p2)
- );defun
- (defun *error* (msg)
- (setvar "orthomode" oldortho)
- (setvar "snapang" oldsnapang)
- (setvar "osmode" oldosmode)
- (setq *error* olderror)
- )
- (prompt "PLPERP loaded.")
- (princ)
|