taoyi0727 发表于 2019-2-11 15:30:29

怎么获取标注线的角度?

本帖最后由 taoyi0727 于 2019-2-11 15:42 编辑

用dxf 50 但是有的标注有50有的没有不知道为什么
大家有没有什么好的办法获取标注线的角度/弧度(cdr (assoc 50 (entget (car (entsel)))))

taoyi0727 发表于 2019-2-11 16:38:11

自己搞了半天 用了黄大师的代码还是有个地方没有搞定(defun c:tt (/ hh:twoentsinters name1 name2 name-dxf pt1 pt2 pt3 pts r)
(defun HH:TwoEntsInters (e1 e2 Flag / OBJ1 OBJ2 PTL PTS)
    (setq obj1 (vlax-ename->vla-object e1))
    (setq obj2 (vlax-ename->vla-object e2))
    (setq pts (vlax-invoke obj1 'Intersectwith obj2 Flag))
    (while pts
      (setq ptl (cons (list (car pts) (cadr pts)) ptl))
      (setq pts (cdddr pts))
    )
    ptl
)
(setq name-dxf (entget (car (entsel))))
(setq pt1 (cdr (assoc 10 name-dxf)))
(setq pt2 (cdr (assoc 11 name-dxf)))
(setq r (cdr (assoc 42 name-dxf)))
(entmake (list
             '(0 . "CIRCLE")
             '(100 . "AcDbEntity")
             '(100 . "AcDbCircle")
             (cons 10 pt1)
             (cons 40 r)
         )
)
(setq name1 (entlast))
(entmake (list
             '(0 . "CIRCLE")
             '(100 . "AcDbEntity")
             '(100 . "AcDbCircle")
             (cons 10 pt2)
             (cons 40 (distance pt1 pt2)
             )
         )
)
(setq name2 (entlast))
(setq pts (HH:TwoEntsInters name1 name2 0));交点列表有两个点不知道怎么判断
(setq pt3 .......)
(entdel name1)
(entdel name2)
(angle pt3 pt1)
)

taoyi0727 发表于 2019-2-11 17:07:01

写出来了 就只是求到了想要的结果 程序写不好 还画了两个辅助圆
求大神能改进下

(defun c:tt (/ hh:twoentsinters name1 name2 name-dxf pt1 pt2 pt3 pts r)
(defun HH:TwoEntsInters (e1 e2 Flag / OBJ1 OBJ2 PTL PTS)
    (setq obj1 (vlax-ename->vla-object e1))
    (setq obj2 (vlax-ename->vla-object e2))
    (setq pts (vlax-invoke obj1 'Intersectwith obj2 Flag))
    (while pts
      (setq ptl (cons (list (car pts) (cadr pts)) ptl))
      (setq pts (cdddr pts))
    )
    ptl
)
(setq name-dxf (entget (car (entsel))))
(setq pt1 (cdr (assoc 10 name-dxf)))
(setq pt2 (cdr (assoc 11 name-dxf)))
(setq r (cdr (assoc 42 name-dxf)))
(entmake (list
             '(0 . "CIRCLE")
             '(100 . "AcDbEntity")
             '(100 . "AcDbCircle")
             (cons 10 pt1)
             (cons 40 r)
         )
)
(setq name1 (entlast))
(entmake (list
             '(0 . "CIRCLE")
             '(100 . "AcDbEntity")
             '(100 . "AcDbCircle")
             (cons 10 pt2)
             (cons 40 (distance pt1 pt2)
             )
         )
)
(setq name2 (entlast))
(setq pts (HH:TwoEntsInters name1 name2 0))
(entdel name1)
(entdel name2)
(if (<
      (distance (cdr (assoc 13 name-dxf)) (car pts))
      (distance (cdr (assoc 13 name-dxf)) (cadr pts))
      )
    (setq pt3 (car pts))
    (setq pt3 (cadr pts))
)
(angle pt3 pt1)
)

流动的清泉 发表于 2021-4-13 17:03:27

我 是判断 10.14组码 之间的距离,但是有个问题,10.14的定位点可能会重合,这样就判断不出来了
页: [1]
查看完整版本: 怎么获取标注线的角度?