726613 发表于 2013-5-22 12:20:23

算两点间距离,并定数等分这段距离

根据选取第一点,再选取第二点,算出两点间距离,然后输入定数等分数量将这段距离定数等分

cie0588 发表于 2013-5-22 15:56:48

(defun c:tt ()
(vl-load-com)
(setvar "CMDECHO" 0)
(setqp1 (getpoint "\n第一点:")
p2 (getpoint p1 "\n第二点:")
)
;;;两点距离
(princ
    (strcat "\n****两点距离:" (rtos (distance p1 p2) 2 3))
)
;;;等分数量:
(setq n (getint "\n等分数量:"))
;;;等分子函数,根据两点点及等分数量得出等分点列表
(defun tt-df (p1 p2 n)
    (if(> (1- n) 0)
      (cons (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
      (tt-df (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
       p2
       (1- n)
      )
      )
    )
)
;;;等分点列表
(setq lst (tt-df p1 p2 n))
;;; 起点、终点、等分点处画园
(mapcar '(lambda (x)
       (vla-AddPoint
         (vla-get-modelspace
   (vla-get-activedocument (vlax-get-acad-object))
         )
         (vlax-3d-point x)
       )
   )
    (append (list p1) lst (list p2))
)
(prin1)
)

duanshui83 发表于 2013-5-22 12:41:44

这个很简单的,自己琢磨一下就行了

cie0588 发表于 2013-5-22 12:54:21

(defun c:tt ()
(setvar "CMDECHO" 0)
(setqp1 (getpoint "\n第一点:")
p2 (getpoint p1 "\n第二点:")
)
;;;两点距离
(princ
    (strcat "\n****两点距离:" (rtos (distance p1 p2) 2 3))
)
;;;等分数量:
(setq n (getint "\n等分数量:"))
;;;等分子函数,根据两点点及等分数量得出等分点列表
(defun tt-df (p1 p2 n)
    (if(> (1- n) 0)
      (cons (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
      (tt-df (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
       p2
       (1- n)
      )
      )
    )
)
;;;等分点列表
(setq lst (tt-df p1 p2 n))
;;; 起点、终点、等分点处画园
(mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.0))
    (append (list p1) lst (list p2))
)
(prin1)
)

726613 发表于 2013-5-22 13:03:33

726613 发表于 2013-5-22 13:20:19

cie0588 发表于 2013-5-22 12:54 static/image/common/back.gif


;等分点处画点
(mapcar '(lambda (x) (vl-cmdf "point" x ))
    (append (list p1) lst (list p2))
)
(prin1)
)

请问cie0588 应如何修改才能在等分点处画点?谢谢

cie0588 发表于 2013-5-22 13:51:09

726613 发表于 2013-5-22 13:20 static/image/common/back.gif
;等分点处画点
(mapcar '(lambda (x) (vl-cmdf "point" x ))
    (append (list p1) lst (list p2) ...

我画点一般用vla方法:(vla-AddPoint
             (vla-get-modelspace
               (vla-get-activedocument (vlax-get-acad-object))
             )
             (vlax-3d-point x)
             )

726613 发表于 2013-5-22 14:02:55

726613 发表于 2013-5-22 13:20 static/image/common/back.gif
;等分点处画点
(mapcar '(lambda (x) (vl-cmdf "point" x ))
    (append (list p1) lst (list p2) ...


增加这一句:“(command "pdmode""3" "pdsize" "1")“
(command "pdmode""3" "pdsize" "1")
   (mapcar '(lambda (x) (vl-cmdf "point" x ))
    (append (list p1) lst (list p2))
)
(prin1)
)

应如何修改才能在等分点处画点?如下图


请高手指点,谢谢

726613 发表于 2013-5-22 14:08:46

cie0588 发表于 2013-5-22 13:51 static/image/common/back.gif
我画点一般用vla方法:(vla-AddPoint
             (vla-get-modelspace
               (vla-get-activedocument (vlax- ...

我对vla一点也不懂,请问如何放在上面程序里

cie0588 发表于 2013-5-22 14:13:48

;;; 起点、终点、等分点处画园
(mapcar '(lambda (x)
             (vla-AddPoint
             (vla-get-modelspace
               (vla-get-activedocument (vlax-get-acad-object))
             )
             (vlax-3d-point x)
             )
           )
          (append (list p1) lst (list p2))
)

726613 发表于 2013-5-22 14:32:55

cie0588 发表于 2013-5-22 14:13 static/image/common/back.gif
;;; 起点、终点、等分点处画园
(mapcar '(lambda (x)
             (vla-AddPoint



应如何处理?
页: [1] 2
查看完整版本: 算两点间距离,并定数等分这段距离