明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: feelg

[讨论] 多边形批量快速标注LSP

[复制链接]
发表于 2015-2-2 07:52:12 | 显示全部楼层
求破解,谢谢各位
发表于 2015-2-3 17:03:20 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改

这么多高手啊!
发表于 2015-2-4 12:40:30 | 显示全部楼层
Linhay 发表于 2015-1-29 18:47
呃.麻烦问一下不想要左边这样的,怎么破?谢谢

谢啦,我找找研究一下
发表于 2015-2-5 17:33:57 | 显示全部楼层
各位前辈,关于判断点是否在多段线内我在论坛找了代码,因为本人没有lisp基础,自己胡乱拼了一下,结果不出所料,运行错误!显示的错误为:"; 错误: 参数类型错误: 二维/三维点: nil"
麻烦各位帮忙看一看怎么弄,谢谢了.附上自己乱拼的代码,欢迎嘲讽,但请不吝指导.
  1. (defun c:z1 (/)
  2.    (prompt "此程序根据当前标注样式进行标注,设置textsize变量可修改与标注线的距离!")
  3. (setq dic (* 7 (getvar "dimscale")))
  4.   (setq ss (ssget))
  5.   (setq n 0)
  6.   (repeat (sslength ss)
  7.     (setq en (ssname ss n))
  8.     (setq endata (entget en))
  9.     (if (= (cdr (assoc 0 endata)) "LWPOLYLINE")
  10.       (mmh_3 en)
  11.       (if (= (cdr (assoc 0 endata)) "ARC")
  12. (mmh_1 en)
  13. (mmh_2 endata)
  14.       )
  15.     )
  16.     (setq n (1+ n))
  17.   )
  18.   (princ)
  19. )
  20. (prompt "<<z1>>快速标注")
  21. (defun mmh_1 (en)
  22.   (setvar "osmode" 0)
  23.   (setq po_1 (vlax-curve-getstartPoint en))
  24.   (setq po_2 (vlax-curve-getendPoint en))
  25.   (setq po_1_x (car po_1))
  26.   (setq po_1_y (cadr po_1))
  27.   (setq po_2_x (car po_2))
  28.   (setq po_2_y (cadr po_2))
  29.   (command "dimaligned" po_1 po_2 po_1)
  30.   (setvar "osmode" 16383)
  31. )
  32. (defun mmh_2 (endata)
  33.   (setvar "osmode" 0)
  34.   (setq p_1 (cdr (assoc 10 endata)))
  35.   (setq p_2 (cdr (assoc 11 endata)))
  36.   (setq p3 (polar p_1 (+ (angle p_1 p_2) (/ pi 2)) dic))
  37.   (cond
  38.     ((isptinpm p3 endata)
  39.   (setq px (polar p_2 (+ (angle p_2 p_1) (/ pi 2)) dic))
  40.     )
  41.     (t
  42.        (setq px p3)
  43.      )
  44.    )
  45.   (command "dimaligned" p_1 p_2 px)
  46.   (setvar "osmode" 16383)
  47. )
  48. (defun mmh_3 (en)
  49.   (setq m 0)
  50.   (command "explode" en "")
  51.   (setq ssl (ssget "p"))
  52.   (repeat (sslength ssl)
  53.     (setq enl (ssname ssl m))
  54.     (setq enldata (entget enl))
  55.     (if (= (cdr (assoc 0 enldata)) "ARC")
  56.       (mmh_1 enl)
  57.       (mmh_2 enldata)
  58.     )
  59.     (setq m (1+ m))
  60.   )
  61.   (command "pedit" "m" ssl ""  "j" "" "")
  62. )


  63.   ;判断点是否在多边形内
  64.   (defun isptinpm (/pt ptl)
  65.     (equal pi(abs(apply '+(mapcar'(lambda (x y)(rem (- (angle pt x) (angle pt y)) pi))
  66.                                (reverse (cdr (reverse (cons (last ptl) ptl))))
  67.                           ptl
  68.                        )
  69.                )
  70.           )
  71.          1e-6
  72.      )
  73.   )
发表于 2015-11-6 19:44:42 | 显示全部楼层
顶起,好程序~如果能加入一个选项,选择为封闭区域内或者区域外就完美了
发表于 2015-12-27 15:49:37 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改

标注位置的控制怎么控制呢?我的文字高度为14,之间就在线段上面了!

本帖子中包含更多资源

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

x
发表于 2015-12-28 00:21:45 来自手机 | 显示全部楼层
解决了经常遇到的问题就是好程序谢谢了
发表于 2015-12-28 10:43:03 | 显示全部楼层
能加上角度和对角线就完美了
发表于 2018-1-27 17:15:13 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改

这个要怎么做?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:31 , Processed in 0.165955 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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