明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4421|回复: 15

[讨论] 交点快速标注

[复制链接]
发表于 2018-6-1 16:04:42 | 显示全部楼层 |阅读模式
请教交点快速标注
指定第一点,
指定第二点,(与虚线相交对象的交点标注)
指定标注的位置
指定引线的位置点

请高手编个程序


结果如下图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-6-1 16:40:29 | 显示全部楼层
张大锤 发表于 2018-6-1 16:33
我比较感兴趣 提问中提到的 交点 如何得到~ 俩个线相交 如何得到交点

inters     
回复 支持 0 反对 1

使用道具 举报

发表于 2018-6-1 16:24:58 | 显示全部楼层
我也不怎么会这个也是我前天刚搞出来的,用会的函数硬怼出来的,凑合用吧!
坐标转换 trans 这个是试出来的 不知道怎么用
那位大大 能写几个简单的trans例子给我学习下
  1. ;;;===选择集实体外矩形框(左下角点与右上角点)
  2. ;;;示例 (GetssBox (ssget))
  3. (defun GetssBox (ss / i L l1 l2 ll ur)
  4.   (setq L (sslength ss))
  5.   (repeat (setq i L)
  6.     (vla-getBounDingBox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
  7.     (setq l1 (cons (vlax-safearray->list ll) l1)
  8.       l2 (cons (vlax-safearray->list ur) l2)
  9.     )
  10.   )
  11.   (mapcar '(lambda (a b) (apply 'mapcar (cons a b))) '(min max) (list l1 l2))
  12. )

  13. ;;说明:四舍五入
  14. ;;参数:n:要四舍五入的数
  15. ;;参数:m:保留的小数位数
  16. ;;返回:数值
  17. (defun sswr (n m)   
  18.   (read (rtos n 2 m))
  19. )

  20. (defun c:asdf ()
  21.   (setq jl 100)
  22.   (setq jl1 (+ jl 10000))
  23.   (setq dxf210 (getvar 'VIEWDIR))
  24.   (setq ss_q (ssget "x"));选择所有的图元
  25.   (setq ss (ssget '((0 . "LINE"))))
  26.   (setq pt (getpoint "\n请点取一个点"))
  27.   (setq aa (list (trans (car (GetssBox ss)) dxf210 1) (trans (cadr (GetssBox ss)) dxf210 1)))
  28.   (setq max_x (max (car (cadr aa)) (car (car aa))))
  29.   (setq min_x (min (car (cadr aa)) (car (car aa))))
  30.   (setq max_y (max (cadr (car aa)) (cadr (cadr aa))))
  31.   (setq min_y (min (cadr (car aa)) (cadr (cadr aa))))
  32.   (cond
  33.     ((< (cadr pt) min_y);判断pt是否在下
  34.       (setq ptt (list (car pt) (- min_y jl1)))
  35.       (setq pd "下")
  36.     )
  37.     ((> (cadr pt) max_y);判断pt是否在上
  38.       (setq ptt (list (car pt) (+ max_y jl1)))
  39.       (setq pd "上")
  40.     )
  41.     ((< (car pt) min_x);判断pt是否在左
  42.       (setq ptt (list (- min_x jl1) (cadr pt)))
  43.       (setq pd "左")
  44.     )
  45.     ((> (car pt) max_x);判断pt是否在右
  46.       (setq ptt (list (+ max_x jl1) (cadr pt)))
  47.       (setq pd "右")
  48.     )
  49.   )
  50.   (vl-cmdf "._QDIM" ss "" ptt)
  51.   (setq ss_h (ssget "x"));选择所有的图元
  52.   (setq xh 0)
  53.   (repeat (sslength ss_q);最后一批新的标注
  54.     (ssdel (ssname ss_q xh) ss_h)
  55.     (setq xh (1+ xh))
  56.   )
  57.   (cond
  58.     ((= pd "下")
  59.       (vl-cmdf "._MOVE" ss_h "" '(0 0) '(0 10000))
  60.       (setq xh 0)
  61.       (repeat (sslength ss_h);最后一批新的标注
  62.         (setq dxf (entget (ssname ss_h xh)))
  63.         (if (= (sswr (cdr (assoc 42 dxf)) 0) 18)
  64.           (entdel (ssname ss_h xh))
  65.           (progn
  66.             (setq dxf (entmod (subst (cons 13 (trans (list (car (trans (cdr (assoc 13 dxf)) dxf210 1)) min_y) 1 dxf210)) (assoc 13 dxf) dxf)))
  67.             (entmod (subst (cons 14 (trans (list (car (trans (cdr (assoc 14 dxf)) dxf210 1)) min_y) 1 dxf210)) (assoc 14 dxf) dxf))
  68.           )
  69.         )
  70.         (setq xh (1+ xh))
  71.       )
  72.     )
  73.     ((= pd "上")
  74.       (vl-cmdf "._MOVE" ss_h "" '(0 0) '(0 -10000))
  75.       (setq xh 0)
  76.       (repeat (sslength ss_h);最后一批新的标注
  77.         (setq dxf (entget (ssname ss_h xh)))
  78.         (if (= (sswr (cdr (assoc 42 dxf)) 0) 18)
  79.           (entdel (ssname ss_h xh))
  80.           (progn
  81.             (setq dxf (entmod (subst (cons 13 (trans (list (car (trans (cdr (assoc 13 dxf)) dxf210 1)) max_y) 1 dxf210)) (assoc 13 dxf) dxf)))
  82.             (entmod (subst (cons 14 (trans (list (car (trans (cdr (assoc 14 dxf)) dxf210 1)) max_y) 1 dxf210)) (assoc 14 dxf) dxf))
  83.           )
  84.         )
  85.         (setq xh (1+ xh))
  86.       )
  87.     )
  88.     ((= pd "左")
  89.       (vl-cmdf "._MOVE" ss_h "" '(0 0) '(10000 0))
  90.       (setq xh 0)
  91.       (repeat (sslength ss_h);最后一批新的标注
  92.         (setq dxf (entget (ssname ss_h xh)))
  93.         (if (= (sswr (cdr (assoc 42 dxf)) 0) 18)
  94.           (entdel (ssname ss_h xh))
  95.           (progn
  96.             (setq dxf (entmod (subst (cons 13 (trans (list min_x (cadr (trans (cdr (assoc 13 dxf)) dxf210 1))) 1 dxf210)) (assoc 13 dxf) dxf)))
  97.             (entmod (subst (cons 14 (trans (list min_x (cadr (trans (cdr (assoc 14 dxf)) dxf210 1))) 1 dxf210)) (assoc 14 dxf) dxf))
  98.           )
  99.         )
  100.         (setq xh (1+ xh))
  101.       )
  102.     )
  103.     ((= pd "右")
  104.       (vl-cmdf "._MOVE" ss_h "" '(0 0) '(-10000 0))
  105.       (setq xh 0)
  106.       (repeat (sslength ss_h);最后一批新的标注
  107.         (setq dxf (entget (ssname ss_h xh)))
  108.         (if (= (sswr (cdr (assoc 42 dxf)) 0) 18)
  109.           (entdel (ssname ss_h xh))
  110.           (progn
  111.             (setq dxf (entmod (subst (cons 13 (trans (list max_x (cadr (trans (cdr (assoc 13 dxf)) dxf210 1))) 1 dxf210)) (assoc 13 dxf) dxf)))
  112.             (entmod (subst (cons 14 (trans (list max_x (cadr (trans (cdr (assoc 14 dxf)) dxf210 1))) 1 dxf210)) (assoc 14 dxf) dxf))
  113.           )
  114.         )
  115.         (setq xh (1+ xh))
  116.       )
  117.     )
  118.   )
  119. )

发表于 2018-6-4 14:27:58 | 显示全部楼层
;;;QDIM v1.0    01.20.93
;;;by Raymond Bradley, CIS 71165,2764
;;;c/o Fitschen & Associates
;;;1855 Gateway Blvd., Ste 370
;;;Concord, CA  94520
;;;510 686 2400

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-6-1 16:19:27 | 显示全部楼层
这个就是和QDIM差不多  端点标
发表于 2018-6-1 16:33:10 | 显示全部楼层
我比较感兴趣 提问中提到的 交点 如何得到~ 俩个线相交 如何得到交点
 楼主| 发表于 2018-6-1 16:44:03 | 显示全部楼层
张大锤 发表于 2018-6-1 16:33
我比较感兴趣 提问中提到的 交点 如何得到~ 俩个线相交 如何得到交点

搜索一下有很多相交得交点的lisp
发表于 2018-6-4 13:36:22 | 显示全部楼层
求大神出现~~~
发表于 2018-6-4 16:39:08 | 显示全部楼层

感谢感谢 每次到用的时候总是找不到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:48 , Processed in 0.294367 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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