本帖最后由 soly2006 于 2013-5-25 16:21 编辑
 - ;本程序为 南方cass高程点自动吸附到直接上,作断面时经常用到
- ;选择直接->输入直线附近点的范围->OK
- ;季鸟 2012-6-6
- (defun c:s3(/ osm_old line1 qq h i pt1 pt2 ranlst ss centn xyh xyh1)
- (Setvar "Cmdecho" 0)
- (command "undo" "be")
- (setq osm_old (getvar "osmode"))
- (setvar "osmode" 0)
- (setq line1 (car (entsel " 选择直线L: ")))
- (setq dis2line (getreal "\n 输入点范围: "))
- (if (and line1 dis2line)
- (progn
- (setq pt1 (cdr (assoc 10 (entget line1))))
- (setq pt2 (cdr (assoc 11 (entget line1))))
- (princ (angle pt1 pt2))
- (setq ranlst (list (polar pt1 (- (angle pt1 pt2) (/ PI 2)) dis2line)
- (polar pt1 (+ (angle pt1 pt2) (/ PI 2)) dis2line)
- (polar pt2 (- (angle pt2 pt1) (/ PI 2)) dis2line)
- (polar pt2 (+ (angle pt2 pt1) (/ PI 2)) dis2line)))
- (setq ss (ssget "CP" ranlst '((0 . "INSERT") (8 . "GCD"))))
- )
- )
- (setq i 0)
- (while (setq s ( ssname ss i ))
- (setq centn (entget s))
- (setq xyh (cdr (assoc 10 centn)))
- (setq h (caddr xyh))
- (setq qq (vlax-curve-getclosestpointto (vlax-ename->vla-object line1) xyh t));垂点
- (setq xyh1 (list (car qq) (cadr qq) h))
- (command "_move" s "" xyh xyh1)
- (command "change" s "" "p" "e" h "");;置对象标高
- (setq i (1+ i))
-
- );endwhile
- (setvar "osmode" osm_old)
- (Setvar "Cmdecho" 1)
- (command "undo" "e")
- )
|