明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1549|回复: 4

[讨论] 标注打断源码,但不支持UCS

[复制链接]
发表于 2015-1-16 12:35:01 | 显示全部楼层 |阅读模式
;;标注打断+连续标注
(vl-load-com)
(defun c:ddr (/ n x ent entl p2 p3 px1 px2 py1 py2 ptdd xl sa pt0 ppt ptdd)
  (setvar "cmdecho" 0)

  (if (setq ent (centsel "\n选择标注 或 <退出>:" "DIMENSION"))
    (progn
      (setq x         (entget ent)
            entl (cons ent entl)
            p2         (dxf 13 x)
            p3         (dxf 14 x)
            px1         (list (car p2) (/ (+ (cadr p2) (cadr p3)) 2.0))
            px2         (list (car p3) (/ (+ (cadr p2) (cadr p3)) 2.0))
            py1         (list (/ (+ (car p2) (car p3)) 2.0) (cadr p2))
            py2         (list (/ (+ (car p2) (car p3)) 2.0) (cadr p3))
            ptdd (list p2 p3)
            xl         (entget (dxf -2 (tblsearch "block" (dxf 2 x))))
            sa         (abs (sin (angle (dxf 10 xl) (dxf 11 xl))))
      )

      (while (setq pt0 (getpoint "\n取点 或 <退出>:"))
        (command "undo" "be")

        (command ".copy" ent "" "0,0" "@")
        (setq entl (cons (entlast) entl))
        (cond
          ((equal sa 1 1e-6)
           ;;水平
           (setq ptdd (cons (ptper pt0 px1 px2) ptdd)
                 ppt  (lsort ptdd 0)
           )
          )
          ((equal sa 0 1e-6)
           ;;垂直
           (setq ptdd (cons (ptper pt0 py1 py2) ptdd)
                 ppt  (lsort ptdd 1)
           )
          )
          (t
           (setq ptdd (cons (ptper pt0 p2 p3) ptdd)
                 ppt  (lsort ptdd 2)
           )
          )
        )
        (setq ppl (mapcar 'list ppt (cdr ppt))
              n          0
        )
        (repeat        (length ppl)
          (setq        xf  (entget (nth n entl))
                nxf (subst (cons 13 (car (nth n ppl))) (assoc 13 xf) xf)
                wxf (subst (cons 14 (cadr (nth n ppl))) (assoc 14 nxf) nxf)
                n   (1+ n)
          )
          (entmod wxf)
        )

        (command "undo" "e")
      )
    )

    (princ "\n退出")
  )

  (setvar "cmdecho" 1)

  (princ)
)

(defun centsel (msg f / ent ss)
  (princ msg)
  (while (null ent)
    (setq ss (ssget  (list (cons 0 f))))
    (if        ss
      (setq ent (ssname ss 0))
    )
  )
  (redraw ent 3)
  ent
)
;;取值dxf
(defun dxf (x e) (cdr (assoc x e)))
;;求垂足
(defun ptper (pt0 pt1 pt2)
  (inters pt0 (polar pt0 (+ (angle pt1 pt2) (/ pi 2)) 1.0) pt1 pt2 nil)
)
;;排序 0 水平 1 垂直 2 倾斜
(defun lsort (lt i)
  (cond
    ((or (= i 0) (= i 2)) (setq lt (vl-sort lt (function (lambda (e1 e2) (< (car e1) (car e2)))))))
    ((or (= i 1) (= i 2))
     (setq lt (vl-sort lt (function (lambda (e1 e2) (< (cadr e1) (cadr e2))))))
    )
  )
)

(princ)




 楼主| 发表于 2015-1-16 12:35:41 | 显示全部楼层
加了
(command "ucs" "w")
(command "ucs" "")
有的时候也要出问题.
发表于 2015-1-16 12:42:22 | 显示全部楼层
这么厉害.
标注打断.
  1. (defun c:cxdd2(/ en lind_db n p10 p13 p14 ptlst pts ss_line)
  2.         (setq en (dx))
  3.         (setq p13 (cx-dxf  13 en)
  4.                 p14 (cx-dxf  14 en)
  5.                 p10 (cx-dxf  10 en)
  6.                 ptlst(get-box en)
  7.                 ss_line(ssget "c"(car ptlst)(cadr ptlst)'((0 . "LINE")))
  8.         )
  9.         (foreach x (cx-ss2en ss_line)
  10.                 (setq lind_db (cx-db x))
  11.                 (setq pts (cons (inters p13 p14 (car lind_db)(cadr lind_db)t)pts))
  12.         )
  13.         (setq pts (append(list p13 p14)pts))
  14.         (setq pts(cx-sort pts "xy" 0.01))
  15.         (entdel en)
  16.         (repeat (setq n(1-(length pts)))
  17.                 (cx-mak-dim (nth n pts)(nth (1- n) pts)p10)
  18.                 (setq n (1- n))
  19.         )
  20. )

点评

这是什么 ?删除了当前选择的  发表于 2015-1-16 13:24
发表于 2015-1-16 15:39:59 | 显示全部楼层
鱼与熊掌 发表于 2015-1-16 12:42
这么厉害.
标注打断.

记得加载我的库
发表于 2024-12-16 17:25:58 | 显示全部楼层
我滴哥啊,我看不明白你的subst到底替换了什么东西为什么可以一个标注变俩,能说说吗。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 10:15 , Processed in 0.187324 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表